Pratique avancée de Pandas, PyTorch et NumPy

Pandas pour la manipulation de données

Les DataFrames dans Pandas utilisent des index de lignes et des index de colonnes, accessibles via df.index et df.columns. La méthode .values retourne un tableau NumPy ndarray.

Sélection de sous-ensembles dans un DataFrame

Pour accéder à des parties spécifiques, utilisez loc, iloc, at et iat. L'opérateur [] simple permet de sélectionner des lignes ou des colonnes, tandis que loc/iloc permettent une sélection combinée.

  • loc utilise des labels (chaînes) ou des plages d'entiers avec intervalles fermés ; iloc utilise uniquement des indices entiers avec intervalle ouvert à droite.
  • at et iat extraient des cellules individuelles, respectivement par label et par position.

Exemples de code modifiés :

# Exemple de sélection de colonnes
df['colonne_X']
df[['colonne_X', 'colonne_Y']]

# Filtrage booléen des lignes
df[df['colonne_X'] > 150]
df[(df['colonne_X'] > 150) & (df['colonne_Y'] < 30)]

# Sélection de plages de lignes
df[2:7]

# Utilisation de loc pour lignes et colonnes
df.loc[:, 'col_A':'col_C']
df.loc[:3, 'age']
df.loc[0:4, :]

# Utilisation de iloc pour indices entiers
df.iloc[1:3, :]

Attention : Pour modifier des valeurs, utilisez toujours .loc ou .iloc. L'opérateur [] peut retourner une copie, rendant les modifications sans effet sur le DataFrame original.

Conversion entre formats

Pour obtenir un tableau NumPy :

valeurs_array = df.values

Pour convertir en tenseur PyTorch :

import torch
tenseur = torch.tensor(df.values)

Traitement des valeurs manquantes

Remplacez les NaN par la moyenne de la colonne :

df = df.fillna(df.mean())

Encodage one-hot des variables catégorielles, incluant les NaN :

df_encoded = pd.get_dummies(df, dummy_na=True)

PyTorch et la gestion des références

Dans PyTorch, les opérations comme reshape peuvent créer des vues partageant les mêmes données. Attention aux modifications inattendues.

Exemple illustratif :

a = torch.arange(12)
b = a.reshape(4, 3)
b[:] = a + b  # Modification de b affecte également a

Ici, reshape génère une vue du tableau original, entraînant une copie superficielle.

NumPy pour les tableaux multidimensionnels

Création de ndarray

Créer un tableau structuré avec des noms de colonnes :

import numpy as np
tableau_struct = np.array([(10, 20, 30), (40, 50, 60)],
                           dtype=[("alpha", "i4"), ("beta", "i4"), ("gamma", "i4")])

Initialisation de tableaux standards :

# Tableau à partir d'une liste
arr_simple = np.array([4, 5, 6])

# Plages avec arange
arr_plage = np.arange(2, 10, 3)

# Tableaux remplis de zéros
arr_zeros = np.zeros((4, 2))

# Tableaux remplis de uns
arr_uns = np.ones((2, 3))

# Matrice identité avec décalage de diagonale
mat_identite = np.eye(3, k=-1)

Fonctions aléatoires dans NumPy

Génération de nombres aléatoires pour diverses distributions. Note : certaines fonctions sont dépréciées ; vérifiez la documentation actuelle.

# Distribution uniforme entre 0 et 1
alea_uniforme = np.random.random((3, 3))

# Distribution normale standard
alea_normal = np.random.randn(2, 2)

# Entiers aléatoires dans un intervalle
entiers_alea = np.random.randint(1, 100, size=(2, 4))

# Échantillonnage à partir d'une liste
echantillon = np.random.choice([10, 20, 30], size=5)

# Mélange aléatoire d'un tableau
tableau_melange = np.random.permutation([1, 2, 3, 4, 5])

Étiquettes: Pandas PyTorch NumPy DataFrame tensor

Publié le 11 juillet à 07h25