Lire et écrire des données dans des feuilles Excel, modifier des DataFrames en une ligne de code, supprimer toutes les lignes contenant des valeurs nulles… vous pouvez tout faire avec pandas.
La bibliothèque pandas facilite la science des données en Python. Il s’agit d’une bibliothèque Python populaire pour la lecture, la fusion, le tri, le nettoyage des données, etc. Bien que pandas soit facile à utiliser et à appliquer sur des ensembles de données, elle comporte de nombreuses fonctions de manipulation des données à apprendre.
Vous utilisez peut-être pandas, mais il y a de fortes chances que vous le sous-utilisiez pour résoudre des problèmes liés aux données. Voici une liste des fonctions de manipulation de données que tout scientifique des données devrait connaître.
Installation de pandas dans votre environnement virtuel
Avant de poursuivre, assurez-vous d’installer pandas dans votre environnement virtuel à l’aide de pip :
pip install pandas
Après l’avoir installé, importez pandas en haut de votre script, et allons-y.
pandas.DataFrame
Vous utilisez pandas.DataFrame() pour créer un DataFrame dans pandas. Il existe deux façons d’utiliser cette fonction.
Vous pouvez former un DataFrame par colonne en passant un dictionnaire dans la fonction pandas.DataFrame(). Ici, chaque clé est une colonne, tandis que les valeurs sont les lignes :
import pandas
DataFrame = pandas.DataFrame({« A » : [1, 3, 4], « B » : [5, 9, 12]})
print(DataFrame)
L’autre méthode consiste à former le DataFrame sur plusieurs lignes. Mais ici, vous allez séparer les valeurs (éléments de ligne) des colonnes. Le nombre de données dans chaque liste (données de ligne) doit également correspondre au nombre de colonnes.
Importez pandas
DataFrame = pandas.DataFrame([[1, 4, 5], [7, 19, 13]], columns= [« J », « K », « L »])
print(DataFrame)
Lecture et écriture dans Excel ou CSV avec pandas
Vous pouvez lire ou écrire dans des fichiers Excel ou CSV avec pandas.
Lecture de fichiers Excel ou CSV
Pour lire un fichier Excel :
Remplacez exemple.xlsx par le chemin de votre fichier Excel.
DataFrame = DataFrame.read_excel(« exemple.xlsx »)
Voici comment lire un fichier CSV :
Remplacez exemple.csv par le chemin de votre fichier CSV
DataFrame = DataFrame.read_csv(« exemple.csv »)
Écriture dans Excel ou CSV
L’écriture vers Excel ou CSV est une opération bien connue de Pandas. Elle est pratique pour enregistrer les tableaux nouvellement calculés dans des feuilles de données distinctes.
Pour écrire dans une feuille Excel :
DataFrame.to_excel(« full_path_of_the_destination_folder/filename.xlsx »)
Si vous voulez écrire dans un fichier CSV :
DataFrame.to_csv(« full_path_of_the_destination_folder/filename.csv »)
6 opérations Pandas pour les débutants
Obtenir la moyenne, la médiane et le mode
Vous pouvez également calculer les tendances centrales de chaque colonne d’un DataFrame à l’aide de pandas.
Voici comment obtenir la valeur moyenne de chaque colonne :
DataFrame.mean()
Pour obtenir la valeur médiane ou le mode, remplacez mean() par median() ou mode().
DataFrame.transform
La fonction DataFrame.transform() de pandas modifie les valeurs d’un DataFrame. Elle accepte une fonction comme argument.
Par exemple, le code ci-dessous multiplie chaque valeur d’un DataFrame par trois en utilisant la fonction lambda de Python :
DataFrame = DataFrame.transform(lambda y : y*3)
print(DataFrame)
DataFrame.isnull
Cette fonction renvoie une valeur booléenne et signale toutes les lignes contenant des valeurs nulles comme étant vraies :
DataFrame.isnull()
Le résultat du code ci-dessus peut être difficile à lire pour les grands ensembles de données. Vous pouvez donc utiliser la fonction isnull().sum() à la place. Celle-ci renvoie un résumé de toutes les valeurs manquantes pour chaque colonne :
DataFrame.isnull().sum()
Dataframe.info
La fonction info() est une opération essentielle de pandas. Elle renvoie plutôt le résumé des valeurs non manquantes pour chaque colonne :
DataFrame.info()
DataFrame.describe
La fonction describe() vous donne le résumé statistique d’un DataFrame :
DataFrame.describe()
DataFrame.replace
À l’aide de la méthode DataFrame.replace() de pandas, vous pouvez remplacer les lignes sélectionnées par d’autres valeurs.
Par exemple, pour remplacer les lignes invalides par Nan :
Assurez-vous d’avoir installé pip numpy pour que cela fonctionne.
Importez numpy
import pandas
Ajouter un mot-clé inplace et lui attribuer la valeur True rend les changements permanents :
DataFrame.replace([invalid_1, invalid_2], numpy.nan, inplace=True)
print(DataFrame)
DataFrame.fillna
Cette fonction vous permet de remplir les lignes vides avec une valeur particulière. Vous pouvez remplir toutes les lignes Nan d’un ensemble de données avec la valeur moyenne, par exemple :
DataFrame.fillna(df.mean(), inplace = True)
print(DataFrame)
Vous pouvez également être spécifique à une colonne :
DataFrame[‘nom_colonne’].fillna(df[nom_colonne].moyenne(), inplace = True)
print(DataFrame)
DataFrame.dropna
La méthode dropna() supprime toutes les lignes contenant des valeurs nulles :
DataFrame.dropna(inplace = True)
print(DataFrame)
DataFrame.insert
Vous pouvez utiliser la fonction insert() de pandas pour ajouter une nouvelle colonne à un DataFrame. Elle accepte trois mots-clés, le nom de la colonne, une liste de ses données et son emplacement, qui est un index de colonne.
Voici comment cela fonctionne :
DataFrame.insert(column = ‘C’, value = [3, 4, 6, 7], loc=0)
print(DataFrame)
Le code ci-dessus insère la nouvelle colonne à l’index de colonne zéro (elle devient la première colonne).
DataFrame.loc
Vous pouvez utiliser loc pour trouver les éléments dans un index particulier. Pour afficher tous les éléments de la troisième ligne, par exemple :
DataFrame.loc[2]
DataFrame.pop
Cette fonction vous permet de retirer une colonne spécifiée d’un DataFrame pandas.
Elle accepte un mot-clé item, renvoie la colonne supprimée et la sépare du reste du DataFrame :
DataFrame.pop(item= ‘nom_colonne’)
print(DataFrame)
DataFrame.max, min
Il est facile d’obtenir les valeurs maximale et minimale à l’aide de pandas :
DataFrame.min()
Le code ci-dessus renvoie la valeur minimale pour chaque colonne. Pour obtenir le maximum, remplacez min par max.
DataFrame.join
La fonction join() de pandas vous permet de fusionner des DataFrames avec des noms de colonnes différents. Vous pouvez utiliser la jointure gauche, droite, interne ou externe. Pour joindre à gauche un DataFrame avec deux autres :
Joindre à gauche les colonnes les plus longues avec les plus courtes
newDataFrame = df1.join([df_shorter2, df_shorter3], how=’left’)
print(newDataFrame)
Pour joindre des DataFrames avec des noms de colonnes similaires, vous pouvez les différencier en incluant un suffixe à gauche ou à droite. Pour ce faire, incluez le mot-clé lsuffix ou rsuffix :
newDataFrame = df1.join([df2, rsuffix=’_’, how=’outer’)
print(newDataFrame)
DataFrame.combine
La fonction combine() est très utile pour fusionner deux DataFrames contenant des noms de colonnes similaires sur la base de critères définis. Elle accepte un mot-clé de fonction.
Par exemple, pour fusionner deux DataFrames avec des noms de colonnes similaires sur la base des valeurs maximales uniquement :
newDataFrame = df.combine(df2, numpy.minimum)
print(newDataFrame)
Remarque : vous pouvez également définir une fonction de sélection personnalisée et insérer numpy.minimum.
DataFrame.astype
La fonction astype() change le type de données d’une colonne particulière ou d’un DataFrame.
Pour changer toutes les valeurs d’un DataFrame en chaîne de caractères, par exemple :
DataFrame.astype(str)
DataFrame.sum
La fonction sum() de pandas renvoie la somme des valeurs de chaque colonne :
DataFrame.sum()
Vous pouvez également trouver la somme cumulative de tous les éléments en utilisant cumsum() :
DataFrame.cumsum()
DataFrame.drop
La fonction drop() de pandas supprime des lignes ou des colonnes spécifiques dans un DataFrame. Pour l’utiliser, vous devez fournir le nom des colonnes ou l’index des lignes et un axe.
Pour supprimer des colonnes spécifiques, par exemple
df.drop(columns=[‘colum1’, ‘column2’], axis=0)
Pour supprimer les lignes des index 1, 3 et 4, par exemple :
df.drop([1, 3, 4], axis=0)
DataFrame.corr
Vous souhaitez trouver la corrélation entre des colonnes entières ou flottantes ? pandas peut vous aider à y parvenir à l’aide de la fonction corr() :
DataFrame.corr()
Le code ci-dessus renvoie un nouveau DataFrame contenant la séquence de corrélation entre toutes les colonnes d’entiers ou de flottants.
DataFrame.add
La fonction add() vous permet d’ajouter un nombre spécifique à chaque valeur du DataFrame. Elle fonctionne en itérant dans un DataFrame et en opérant sur chaque élément.
Pour ajouter 20 à chacune des valeurs d’une colonne spécifique contenant des entiers ou des flottants, par exemple :
DataFrame[‘interger_column’].add(20)
DataFrame.sub
Tout comme la fonction d’addition, vous pouvez également soustraire un nombre de chaque valeur d’un DataFrame ou d’une colonne spécifique :
DataFrame[‘interger_column’].sub(10)
DataFrame.mul
Il s’agit d’une version multipliée de la fonction d’addition de pandas :
DataFrame[‘interger_column’].mul(20)
DataFrame.div
De même, vous pouvez diviser chaque point de données d’une colonne ou d’un DataFrame par un nombre spécifique :
DataFrame[‘interger_column’].div(20)
DataFrame.std
À l’aide de la fonction std(), pandas vous permet également de calculer l’écart type pour chaque colonne d’un DataFrame. Pour ce faire, vous devez itérer dans chaque colonne d’un ensemble de données et calculer l’écart type pour chacune d’entre elles :
DataFrame.std()
DataFrame.sort_values
Vous pouvez également trier les valeurs de manière ascendante ou descendante en fonction d’une colonne particulière. Pour trier un DataFrame dans l’ordre décroissant, par exemple :
newDataFrame = DataFrame.sort_values(by = « colmun_name », descending = True)
DataFrame.melt
La fonction melt() de pandas permet de transformer les colonnes d’un DataFrame en lignes individuelles. C’est comme exposer l’anatomie d’un DataFrame. Elle vous permet donc de visualiser explicitement la valeur attribuée à chaque colonne.
newDataFrame = DataFrame.melt()
DataFrame.count
Cette fonction renvoie le nombre total d’éléments dans chaque colonne :
DataFrame.count()
DataFrame.query
La fonction query() de pandas vous permet d’appeler des éléments en utilisant leur numéro d’index. Pour obtenir les éléments de la troisième ligne, par exemple :
DataFrame.query(‘4’) # Appeler la requête sur le quatrième index
DataFrame.where
La fonction where() est une requête pandas qui accepte une condition pour obtenir des valeurs spécifiques dans une colonne. Par exemple, pour obtenir tous les âges inférieurs à 30 dans une colonne Age :
DataFrame.where(DataFrame[‘Age’] < 30)
Le code ci-dessus produit un DataFrame contenant tous les âges inférieurs à 30, mais attribue Nan aux lignes qui ne remplissent pas la condition.
Comment remplir les données manquantes à l’aide de Python
Traitez les données comme un pro avec pandas
pandas est une mine de fonctions et de méthodes permettant de traiter des ensembles de données de petite à grande taille avec Python. La bibliothèque est également très utile pour nettoyer, valider et préparer les données pour l’analyse ou l’apprentissage automatique.
Prendre le temps de la maîtriser vous facilitera définitivement la vie en tant que data scientist, et le jeu en vaut la chandelle. Alors n’hésitez pas à prendre toutes les fonctions que vous pouvez gérer.