1. A propos de la bibliothèque Pandas Python
Pandas est un package Python opeen source qui est le plus largement utilisé pour la science et l'analyse des données, les tâches d'apprentissage automatique... Il est construit au-dessus d'un autre package nommé Numpy, qui prend en charge les tableaux multidimensionnels. En tant que l'un des packages de traitement de données les plus populaires, Pandas fonctionne bien avec de nombreux autres modules de science des données au sein de l'écosystème Python et est généralement inclus dans chaque distribution Python.
Python utilise ce qu'on appelle les DataFrames! Mais que peut-on faire avec les DataFrames de Pandas ?
Pandas simplifie la réalisation de nombreuses tâches chronophages et répétitives associées à l'utilisation des données, notamment :
- Nettoyage des données
- Remplissage de données
- Normalisation des données
- Visualisation de données
- analyses statistiques
- Contrôle des données
- Chargement et sauvegarde des données
- Et beaucoup plus
En fait, avec Pandas, vous pouvez faire tout ce qui fait que les scientifiques de données de renommée mondiale votent Pandas comme le meilleur outil d'analyse et de manipulation de données disponible.
2. Installation de Pandas
Pandas ne s'installe pas automatiquement avec le package standard de Python, cependant si vous utiliser des distribution complètes de Python comme Anaconda, Pytschool, Pandas est déjà installé dans ce cas! Mais si vous utiliser la version standard de Python, vous pouvez l'installer très facilement en toute souplesse via l'utilitaire pip:
1 |
pip install pandas |
3. Création d'une série avec Pandas
Pandas Series est un tableau étiqueté unidimensionnel capable de contenir des données de tout type (entier, chaîne, flottant, objets python, etc.). Les étiquettes d'axe sont appelées collectivement index.
3.1 Création d'une série vide
Un premier exemple de série pandas est la série vide:
Exemple
1 2 3 4 5 6 |
# importation de pandas en tant que pan import pandas as pan # Création de séries vides ser = pan.Series() print(ser) # La sortie est : Série ([], dtype: float64) |
3.2 Création d'une série à partir d'un tableau
Afin de créer une série à partir d'un tableau, nous devons importer le module numpy et utiliser la méthode numpy.array().
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# importation de pandas as pan import pandas as pan # importation de numpy as np import numpy as np # tableau simple data = np.array (['P', 'y', 't', 'h', 'o' , 'n']) s = pan.Series(data) print(s) """ La sortie est: 0 P 1 y 2 t 3 h 4 o 5 n dtype: object """ |
3.3 Création d'une série à partir d'un tableau avec index
Afin de créer une série à partir d'un tableau avec index, nous devons fournir à index le même nombre d'éléments que dans le tableau.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# importation de pandas as pan import pandas as pan # importation de numpy as np import numpy as np # tableau simple data = np.array (['p', 'y', 't', 'h', 'o' , 'n']) # fournir un index s = pan.Series (data, index = [4, 7, 8, 9, 13 , 17]) print(s) """ La sortie est : 4 p 7 y 8 t 9 h 13 o 17 n dtype: object """ |
3.4 Création d'une série à partir d'un Scalaire
Si les données sont une valeur scalaire, un index doit être fourni. La valeur sera répétée pour correspondre à la longueur de l'index
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#import the pandas library as pan import pandas as pan import numpy as np s = pan.Series(7, index=[1, 2, 3, 4, 5]) print(s) """ La sortie est: 1 7 2 7 3 7 4 7 5 7 dtype: int64 """ |
3.5 Création d'une série à partir d'un dictionnaire
Afin de créer une série à partir d'un dictionnaire, nous devons d'abord créer un dictionnaire après quoi nous pouvons créer une série. Les clés de dictionnaire sont utilisées pour construire un index.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# coding: utf-8 import pandas as pan # exemple de dictionnaire dict = {'Laptop' : 17, 'Ipad' : 15, 'Tablette' : 25} # Créer une série à partir du dictionnaire s = pan.Series(dict) print(s) """ Ce qui affiche: Laptop 17 Ipad 15 Tablette 25 dtype: int64 """ |
4. Accès aux données d'une série Pandas
On peut accéder aux données à partir d'un index facilement en spécifiant la position entre crochets.
Exemple
1 2 3 4 5 6 |
import pandas as pan s = pan.Series(['a','b','c','d'] ,index = [0, 1, 2, 3]) #extraire directement le deuxième élément print(s[1]) # Affiche b |
Ou encore:
Exemple: extraire l'élément avec son index
1 2 3 4 5 6 7 8 9 10 |
import pandas as pan s = pan.Series(['a','b','c','d'] , index = [0, 1, 2, 3] ) #extraire le deuxième élément print(s[[2]]) """ output: 2 c dtype: object """ |
Exemple: extraire les données depuis un index début jusqu'à un index fin
1 2 3 4 5 6 7 8 9 10 11 |
import pandas as pan s = pan.Series([0, 1, 2, 3, 4, 5],index = ['a','b','c','d','e','f']) #extraire depuis l'index 2 jusqu'à l'index 4 print(s[2:4]) """ output: c 2 d 3 dtype: int64 """ |
Exemple: extraction des données à partir d'étiquette
1 2 3 4 5 6 7 8 9 10 11 12 |
import pandas as pan s = pan.Series([0, 1, 2, 3, 4, 5],index = ['a','b','c','d','e','f']) #extraire le deuxième élément print(s['d']) print(s[['d']]) """ output: 3 d 3 dtype: int64 """ |
Ou encore:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pan s = pan.Series([0, 1, 2, 3, 4, 5],index = ['a','b','c','d','e','f']) #extraire le deuxième élément print(s[['a' , 'e' , 'd']]) """ output: a 0 e 4 d 3 dtype: int64 """ |
5.DataFrame Pandas Python
un DataFrame Pandas est un type de donnée similaire à un dictionnaire où les clefs sont utilisés pour représenter les noms des colonnes et les valeurs sont représentés par des séries. DataFrame est défini comme un moyen standard de stocker des données qui ont deux index différents, c'est-à-dire un index de ligne et un index de colonne. Il se compose des propriétés suivantes :
- Les colonnes peuvent être de types hétérogènes comme int, bool, etc.
- Il peut être vu comme un dictionnaire de la structure des séries où les lignes et les colonnes sont indexées. Il est noté "colonnes" en cas de colonnes et "index" en cas de lignes.
Un DataFrame peut être créer en utilisant:
- Un dictionnaire Python
- Une liste
- Un tableau Numpy ndarrrays
- Une série
- ...
5.1 DataFrame à partir d'un dictionnaire
Pour faire simple, nous allons traiter un exemple concret:
Nous souhaitons à titre d'exemple, représenter la table données suivante à l'aide d'un dataframe:
Etape1: nous commençons par convertir la table des données en un dictionnaire:
1 2 3 4 |
dictData = {'ID' : [1, 2, 3] , 'Nom': ['Natalie', 'Robert', 'Bernard'], 'Age': [22, 37, 29], 'Taille': [170, 190, 181]} |
Etape2: nous faisons ensuite l'instanciation sur la classe DataFrame:
1 |
df = pandas.DataFrame(dictData) |
Etape3: traiter les données du dictionnaire:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import pandas as pan dictData = {'ID' : [1, 2, 3] , 'Nom': ['Natalie', 'Robert', 'Bernard'], 'Age': [22, 37, 29], 'Taille': [170, 190, 181]} df = pan.DataFrame(dictData) print(df) """ output: ID Nom Age Taille 0 1 Natalie 22 170 1 2 Robert 37 190 2 3 Bernard 29 181 """ |
5.2 DataFrame à partir d'une liste
Comme cité ci-dessus, la création de Pandas Dataframe peut être réalisée de plusieurs manières. Voyons maintenant, comment créer un Pandas DataFrame à partir de listes.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import pandas as ps languages = ['Python' , 'Java' , 'PHP' , 'C++' , 'Javascript'] # création du DataFrame à partir de la liste 'languages' df = ps.DataFrame(languages) # afficher le DataFrame print(df) """ output: 0 0 Python 1 Java 2 PHP 3 C++ 4 Javascript """ |
On peut aussi utiliser une autre liste des étiquettes:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import pandas as ps # liste des données data = ['Tomas' , 'Albert' , 'Nathalie' , 'Roberto' , 'Adam'] labels = [11 , 12, 13 , 14, 15] # création du DataFrame df = ps.DataFrame(data , index = labels) # afficher le DataFrame print(df) """ output: 0 11 Tomas 12 Albert 13 Nathalie 14 Roberto 15 Adam """ |
On peut aussi ajouter un nom pour la colonne des noms:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import pandas as ps # liste des données data = ['Tomas' , 'Albert' , 'Nathalie' , 'Roberto' , 'Adam'] labels = [11 , 12, 13 , 14, 15] # création du DataFrame df = ps.DataFrame(data , index = labels , columns=['Clients']) # afficher le DataFrame print(df) """ output: Clients 11 Tomas 12 Albert 13 Nathalie 14 Roberto 15 Adam """ |
On peut aussi utiliser une liste multidimentionnelle afin de pouvoir représenter et renvoyer un tableau multidimentionnel:
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import pandas as ps # liste des données data = [['Tomas' , 'tomas@gmail.com' , 'Math'], ['Albert' ,'albert@gmail.com' , 'SVT' ], ['Nathalie', 'nathalie@gmail.com' , 'Sc Eco'], ['Roberto' ,'roberto@gmail.com' , 'Physique'], ['Adam' , 'adam@gmail.com' , 'Info']] labels = [11 , 12, 13 , 14, 15] # création du DataFrame df = ps.DataFrame(data , index=labels , columns=[ 'Name' , 'Email' , 'Section']) # afficher le DataFrame print(df) """ output: Name Email Section 11 Tomas tomas@gmail.com Math 12 Albert albert@gmail.com SVT 13 Nathalie nathalie@gmail.com Sc Eco 14 Roberto roberto@gmail.com Physique 15 Adam adam@gmail.com Info """ |
5.3 DataFrame à partir d'un tableau numpy
Reprenons l'exemple du paragraphe précédent. Les données du tableau peuvent être représentées par un tableau numpy:
1 |
ar = numpy.array([[1, 'Natalie', 22, 170], [2, 'Robert', 37, 190], [3, 'Bernard' , 29 , 181]]) |
Et on crée ensuite le dataframe en utilisant la liste des noms des colonnes:
1 |
df = pan.DataFrame(ar, columns = ['ID', 'Nom', 'Age', 'Taille']) |
Code final
1 2 3 4 5 6 7 8 9 10 11 12 |
import pandas as pan import numpy as np ar = np.array([[1, 'Natalie', 22, 170], [2, 'Robert', 37, 190], [3, 'Bernard' , 29 , 181]]) df = pan.DataFrame(ar, columns = ['ID', 'Nom', 'Age', 'Taille']) print(df) """ output: ID Nom Age Taille 0 1 Natalie 22 170 1 2 Robert 37 190 2 3 Bernard 29 181 """ |
On souhaite parfois afficher les données de certaines colonnes seulement:
Exemple (affichage des colonnes Nom et Age)
1 2 3 4 5 6 7 8 9 10 11 12 |
import pandas as pan import numpy as np ar = np.array([[1, 'Natalie', 22, 170], [2, 'Robert', 37, 190], [3, 'Bernard' , 29 , 181]]) df = pan.DataFrame(ar, columns = ['ID', 'Nom', 'Age', 'Taille']) print(df[['Nom', 'Age']]) """ output: Nom Age 0 Natalie 22 1 Robert 37 2 Bernard 29 """ |
6. Opérations sur les DataFrames
6.1 Boucle à travers un DataFrame
Un DataFrame peut être traité comme un objet itérable et parcouru à l'aide d'une boucle for. Dans ce cas ce sont les colonnes du DataFrame qui seront mis en évidence !
Exemple ( afficher les colonnes d'un DataFrame)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# importation de la bibliothèque pandas import pandas as ps # représentation des données sur un dictionnaire python dictData = {'A' : ['A1', 'A2', 'A3', 'A4' , 'A5'] , 'B': ['B1' , 'B2' , 'B3' , 'B4' , 'B5'] , 'C': ['C1' , 'C2' , 'C3' , 'C4' , 'C5'] , 'D' : ['D1' , 'D2', 'D3','D4' , 'D5'] } # créer un objet dataframe df = ps.DataFrame(dictData) # afficher la liste des colonnes du DataFrame for x in df: print(x) """ output: A B C D """ |
6.2 Sélectionner une ou plusieurs colonnes d'un DataFrame
Pandas nous offre la possibilité de choisir les colonnes à afficher d'un DataFrame. Pour ce faire, il suffit de mettre entre crochets les colonnes à afficher:
Exemple ( afficher uniquement la colonne 'name')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import pandas as ps # liste des données data = [['Tomas' , 'tomas@gmail.com' , 'Math'], ['Albert' ,'albert@gmail.com' , 'SVT' ], ['Nathalie', 'nathalie@gmail.com' , 'Sc Eco'], ['Roberto' ,'roberto@gmail.com' , 'Physique'], ['Adam' , 'adam@gmail.com' , 'Info']] labels = [11 , 12, 13 , 14, 15] # création du DataFrame df = ps.DataFrame(data , index=labels , columns=[ 'Name' , 'Email' , 'Section']) # afficher le DataFrame print(df ['Name']) """ output: 11 Tomas 12 Albert 13 Nathalie 14 Roberto 15 Adam Name: Name, dtype: object """ |
On peut aussi faire une sélection multiple de colonnes:
Exemple (sélectionner les colonnes 'Name' et 'Section')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import pandas as ps # liste des données data = [['Tomas' , 'tomas@gmail.com' , 'Math'], ['Albert' ,'albert@gmail.com' , 'SVT' ], ['Nathalie', 'nathalie@gmail.com' , 'Sc Eco'], ['Roberto' ,'roberto@gmail.com' , 'Physique'], ['Adam' , 'adam@gmail.com' , 'Info']] labels = [11 , 12, 13 , 14, 15] # création du DataFrame df = ps.DataFrame(data , index=labels , columns=[ 'Name' , 'Email' , 'Section']) # afficher le DataFrame print(df [['Name' , 'Section']]) """ output: Name Section 11 Tomas Math 12 Albert SVT 13 Nathalie Sc Eco 14 Roberto Physique 15 Adam Info """ |
6.3 Ajouter une colonne à un DataFrame
Pour ajouter une colonne à un DataFrame, il suffit de créer la colonne à ajouter, et mettre à jour le DataFrame avec la commande:
1 |
df[column_to_add] |
A titre d'exemple, nous allons reprendre l'exemple du paragraphe précédent et ajouter la colonne 'Age':
Exemple (ajouter la colonne age)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import pandas as ps # liste des données data = [['Tomas' , 'tomas@gmail.com' , 'Math'], ['Albert' ,'albert@gmail.com' , 'SVT' ], ['Nathalie', 'nathalie@gmail.com' , 'Sc Eco'], ['Roberto' ,'roberto@gmail.com' , 'Physique'], ['Adam' , 'adam@gmail.com' , 'Info']] labels = [11 , 12, 13 , 14, 15] # création du DataFrame df = ps.DataFrame(data , index=labels , columns=[ 'Name' , 'Email' , 'Section']) # afficher le DataFrame print(df) print('---------------------------------------------') # ajouter une colonne age = [22 , 25 , 23 , 20 , 27] df['Age'] = age print(df) """ output: Name Email Section 11 Tomas tomas@gmail.com Math 12 Albert albert@gmail.com SVT 13 Nathalie nathalie@gmail.com Sc Eco 14 Roberto roberto@gmail.com Physique 15 Adam adam@gmail.com Info --------------------------------------------- Name Email Section Age 11 Tomas tomas@gmail.com Math 22 12 Albert albert@gmail.com SVT 25 13 Nathalie nathalie@gmail.com Sc Eco 23 14 Roberto roberto@gmail.com Physique 20 15 Adam adam@gmail.com Info 27 """ |
6.4 Supprimer une colonne d'un DataFrame
Pour supprimer une colonne d'un DataFrame pandas, il suffit d'utiliser la commande del en précisant entre crochets la colonne à supprimer:
1 |
del df[column_to_delete] |
Exemple ( supprimer la colonne 'Email')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import pandas as ps # liste des données data = [['Tomas' , 'tomas@gmail.com' , 'Math'], ['Albert' ,'albert@gmail.com' , 'SVT' ], ['Nathalie', 'nathalie@gmail.com' , 'Sc Eco'], ['Roberto' ,'roberto@gmail.com' , 'Physique'], ['Adam' , 'adam@gmail.com' , 'Info']] labels = [11 , 12, 13 , 14, 15] # création du DataFrame df = ps.DataFrame(data , index=labels , columns=[ 'Name' , 'Email' , 'Section']) # afficher le DataFrame print(df) print('---------------------------------------------') # supprimer la colonne 'Email' del df['Email'] print(df) """ output: Name Email Section 11 Tomas tomas@gmail.com Math 12 Albert albert@gmail.com SVT 13 Nathalie nathalie@gmail.com Sc Eco 14 Roberto roberto@gmail.com Physique 15 Adam adam@gmail.com Info --------------------------------------------- Name Section 11 Tomas Math 12 Albert SVT 13 Nathalie Sc Eco 14 Roberto Physique 15 Adam Info """ |
Remarque
On peut aussi supprimer une colonne en utilisant la méthode pop(). Exemple pour supprimer la colonne 'Email' de l'exemple précédent, il suffit d'ajouter la commande:
1 |
df.pop('Email') |
7. Les Méthodes DataFrame Pandas
La classe DataFrame est dotée de nombreuses fonctions permettant de manipuler les données avec une grande souplesse:
-
- DataFrame.append(): Ajouter les lignes d'une autre dataframe à la fin de la dataframe donnée.
- DataFrame.apply(): Permet à l'utilisateur de transmettre une fonction et de l'appliquer à chaque valeur de la série Pandas.
- DataFrame.assign(): Ajouter une nouvelle colonne dans un dataframe.
- DataFrame.astype(): Convertit l'objet en une fonction dtype.astype()spécifiée.
- DataFrame.concat(): Effectue une opération de concaténation le long d'un axe dans le DataFrame.
- DataFrame.count(): Compte le nombre de cellules non NA pour chaque colonne ou ligne.
- DataFrame.describe(): Calcule des données statistiques comme le centile, la moyenne et la norme des valeurs numériques de la série ou du DataFrame.
- DataFrame.drop_duplicates(): Supprime les valeurs en double du DataFrame.
- DataFrame.groupby(): Divisez les données en différents groupes.
- DataFrame.head(): Renvoie les n premières lignes de l'objet en fonction de la position.
- DataFrame.hist(): Divise les valeurs d'une variable numérique en "bins".
- DataFrame.iterrows(): Itérer sur les lignes sous forme de paires (index, série).
- DataFrame.loc(): faire des sélections sur les lignes et colonnes d'un DataFrame
- DataFrame.mean(): Renvoie la moyenne des valeurs pour l'axe demandé.
- DataFrame.melt(): Dépivote le DataFrame d'un format large à un format long.
- DataFrame.merge(): Fusionne les deux ensembles de données en un seul.
- DataFrame.pivot_table(): Agrégez des données avec des calculs tels que Sum, Count, Average, Max et Min.
- DataFrame.query(): Filtre le dataframe.
- DataFrame.sample (): Sélectionnez les lignes et les colonnes de la trame de données de manière aléatoire.
- DataFrame.shift(): Décalez la colonne ou soustrayez la valeur de la colonne avec la valeur de la ligne précédente de la trame de données.
- DataFrame.sort_index(): Trie le DataFrame à partir des index.
- DataFrame.sort_values(): Trie le DataFrame par l'étiquette spécifiée en paramètres
- DataFrame.sum(): Renvoie la somme des valeurs de l'axe demandé par l'utilisateur.
- DataFrame.to_excel(): Exportez le dataframe vers le fichier excel.
- DataFrame.transpose(): Transpose l'index et les colonnes du dataframe.
- DataFrame.where(): Vérifiez le dataframe pour une ou plusieurs conditions.
Younes Derfoufi
CRMEF OUJDA
1 thought on “La bibliothèque Python Pandas”