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.
locutilise des labels (chaînes) ou des plages d'entiers avec intervalles fermés ;ilocutilise uniquement des indices entiers avec intervalle ouvert à droite.atetiatextraient 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])