Manipulation des donnees avec Pandas
Python : Manipulation des données avec Pandas
Pandas est une librairie Python spécialisée dans l’analyse des données. Dans ce support, nous nous
intéresserons surtout aux fonctionnalités de manipulations de données qu’elle propose. Un objet de type
"data frame" permet de réaliser de nombreuses opérations de filtrage, prétraitements, etc., préalables à la modélisation
statistique.
1. Librairie Pandas
Il faut charger la librairie et, éventuellement, la configurer selon vos attentes. Pensez à vérifier votre version, elle doit être
raccord (la même ou plus récente) avec ce qui est proposé dans ce tutoriel.
#Première étape : il faut charger la librairie Pandas
1
import pandas
2. Structure DataFrame
Concernant notre fichier Excel « [Link] » : il s’agit d’un Tableau en Excel , la première ligne correspond aux
noms des colonnes (des variables) ; à partir de la seconde ligne, nous disposons des valeurs pour chaque colonne
(variable).
Un Tableau DataFrame correspond à un Tableau en Python où les lignes correspondent à des observations (valeurs,
calculs,..) les noms de colonnes correspondent à des noms décrivant les observations.
3. Chargement d’un Tableau Excel dans un DataFrame
Dans ce qui suit, nous chargeons le fichier Excel « [Link] » dans un DataFrame « df »cet nous procédons à
quelques vérifications.
#Chargement du fichier dans l’objet de type Data Frame nommé <df>
2 #Afficher le type de df
<class '[Link]'>
4. La structure DataFrame
#Afficher la structure d’un DataFrame: nombre de lignes et nombre de colonnes
3
(270, 8)
Manipulation des donnees avec Pandas
#Afficher les premières lignes du DataFrame
4
Age sexe typedouleur sucre tauxmax angine depression coeur
0 70 masculin D A 109 non 24 presence
1 67 feminin C A 160 non 16 absence
2 57 masculin B A 141 non 3 presence
3 64 masculin D A 105 oui 2 absence
4 74 feminin B A 121 oui 2 absence
#Afficher les dernières lignes du DataFrame
5
#Afficher les colonnes
6
Index(['age', 'sexe', 'typedouleur', 'sucre', 'tauxmax', 'angine', 'depression', 'coeur'], dtype='object')
7 #Afficher le type de chaque colonne
age int64
sexe object
typedouleur object
sucre object
tauxmax int64
angine object
depression int64
coeur object
dtype: object
#Afficher des informations sur les données
8
<class '[Link]'>
RangeIndex: 270 entries, 0 to 269 Data columns (total 8 columns):
age 270 non-null int64
sexe 270 non-null object
typedouleur 270 non-null object
sucre 270 non-null object
tauxmax 270 non-null int64
angine 270 non-null object
depression 270 non-null int64
coeur 270 non-null object
dtypes: int64(3), object(5)
memory usage: 17.0+ KB None
#Description des données
9
age sexe typedouleur sucre tauxmax angine depression
\
count 270.000000 270 270 270 270.000000 270 270.0
unique NaN 2 4 2 NaN 2 NaN
top NaN masculin D A NaN non NaN
freq NaN 183 129 230 NaN 181 NaN
mean 54.433333 NaN NaN NaN 149.677778 NaN 10.5
... ... ... ... ... ... ... ...
min 29.000000 NaN NaN NaN 71.000000 NaN 0.0
25% 48.000000 NaN NaN NaN 133.000000 NaN 0.0
50% 55.000000 NaN NaN NaN 153.500000 NaN 8.0
Manipulation des donnees avec Pandas
75% 61.000000 NaN NaN NaN 166.000000 NaN 16.0
max 77.000000 NaN NaN NaN 202.000000 NaN 62.0
coeur
count 270
unique 2
top absence
freq 150
mean NaN
... ...
min NaN
25% NaN
50% NaN
75% NaN
max NaN
[11 rows x 8 columns]
Certains indicateurs statistiques ne sont valables que pour les variables numériques (ex. moyenne, min, etc. pour age,
tauxmax,...), et inversement pour les non-numériques (ex. top, freq, etc. pour sexe, typedouleur, ...), d'où les NaN dans
certaines situations.
5. Manipulation des données
#Afficher les données d’une colonne (sexe par exemple)
10
0 masculin
1 feminin
2 masculin
3 masculin
4 feminin
...
265 masculin
266 masculin
267 feminin
268 masculin
269 masculin
Name: sexe, dtype: object
# Afficher les données d’une colonne: autre manière avec « . »
11
0 masculin
1 feminin
2 masculin
3 masculin
4 feminin
...
265 masculin
266 masculin
267 feminin
268 masculin
269 masculin
Name: sexe, dtype: object
#accéder à un ensemble de colonnes
13
sexe sucre
0 masculin A
1 feminin A
2 masculin A
3 masculin A
4 feminin A
.. ... ...
269 masculin A
Manipulation des donnees avec Pandas
[270 rows x 2 columns]
#Une colonne est un Tableau, pour afficher les premières valeurs de la colonne age
13
0 70
1 67
2 57
3 64
4 74
Name: age, dtype: int64
#Afichage des dernières valeurs de la colonne age
14
265 52
266 44
267 56
268 57
269 67
Name: age, dtype: int64
#Afficher les statistiques descriptives.
15
count 270.000000
mean 54.433333
std 9.109067
min 29.000000
25% 48.000000
50% 55.000000
75% 61.000000
max 77.000000
Name: age, dtype: float64
#calculer la somme (somme des tauxmax )
16
636
#calculer la moyenne (moyenne de l’age)
17
54.433333
#calculer le minimum (minimum de l’age)
18
29.000000
#calculer le maximum (maximum de l’age)
19
print( df['age'].max( ) )
77.000000
#Calculer le nombre de valeurs
20
D 129
Manipulation des donnees avec Pandas
C 79
B 42
A 20
Name: typedouleur, dtype: int64
# df['age'] est un tableau d’ages, il est possible d’afficher la première valeur de la manière suivante
21
70
#Afficher les 3 premières valeurs
22
#ou bien aussi
0 70
1 67
2 57
Name: age, dtype: int64
6. Trier les données d’un DataFrame
trier consiste à ordonner les données un sous-ensemble de lignes qui vérifie une condition
#trier les ages de manière croissante
23 #trier les ages de manière décroissante
#ou bien aussi, trier tous les données du dataFrame de manière croissante selon l’age
214 29
174 34
138 34
224 35
81 35
..
15 71
255 71
4 74
73 76
199 77
Name: age, dtype: int64
La plus petite valeur est 29, elle correspond à l'observation n°214.
#Afficher les indices des valeurs triées
24
0 214
1 174
2 138
3 224
4 81
...
Name:age, dtype: int64
Manipulation des donnees avec Pandas
214 est le numéro de l'individu portant la plus petite valeur de la variable age,
#le résultat du tri est aussi un DataFrame
25
age sexe typedouleur sucre tauxmax angine depression coeur
214 29 masculin B A 202 non 0 absence
174 34 masculin A A 174 non 0 absence
138 34 feminin B A 192 non 7 absence
224 35 feminin D A 182 non 14 absence
81 35 masculin D A 130 oui 16 presence
7. Filtrer les données d’un DataFrame
Filtrer consiste à sélectionner un sous-ensemble de lignes qui vérifie une condition
#Afficher les lignes qui représentent des hommes
26
age sexe typedouleur sucre tauxmax angine depression coeur
0 70 masculin D A 109 non 24 presence
1 57 masculin B A 141 non 3 presence
2 64 masculin D A 105 oui 2 absence
#Afficher les lignes qui représentent des hommes âgés de 64 ans
27
age sexe typedouleur sucre tauxmax angine depression coeur
0 64 masculin D A 105 oui 2 absence
8. Accès indicé aux données d'un DataFrame
On peut accéder aux valeurs du DataFrame via des indices ou plages d'indice. La structure se comporte alors comme une
matrice. La cellule en haut et à gauche est de coordonnées (0,0). Il y a différentes manières de le faire, l'utilisation de .iloc[,]
constitue une des solutions les plus simples. N'oublions pas que Shape permet d'obtenir les dimensions (lignes et colonnes) du
DataFrame.
# Afficher la première ligne
28
age 70
sexe masculin
typedouleur D
sucre A
tauxmax 109
angine non
depression 24
coeur presence
Name=0, dtype: object
#Afficher la valeur située en (ligne 0, colonne 0)
29
Manipulation des donnees avec Pandas
70
#Valeur située en dernière ligne (-1), première colonne (0)
30
67
#Afficher les 5 premières lignes
31
age sexe typedouleur sucre tauxmax angine dépression coeur
0 70 masculin D A 109 non 24 presence
1 67 feminin C A 160 non 16 absence
2 57 masculin B A 141 non 3 presence
3 64 masculin D A 105 oui 2 absence
4 74 feminin B A 121 oui 2 absence
# Afficher les 5 premières lignes, des deux premières colonnes
32
age sexe
0 70 masculin
1 67 feminin
2 57 masculin
3 64 masculin
4 74 feminin
# Afficher les 5 premières lignes et colonnes 0, 1 et 4
33
age typedouleur tauxmax
0 70 D 109
1 67 C 160
2 57 B 141
3 64 D 105
4 74 B 121
9. Calculs récapitulatifs - TCD
A la manière des tableaux croisés dynamiques (TCD) d'Excel, nous pouvons procéder à des croisements et opérer des
calculs récapitulatifs, qui vont du comptage simple aux calculs statistiques mettent en jeu d'autres variables.
#Afficher les fréquences selon sexe et coeur
34
coeur absence presence
sexe
feminin 67 20
masculin 83 100
#multiplier les critères est possible (cœur, sexe et sucre)
35 #mais comme avec les TCD, la lecture devient compliquée
Manipulation des donnees avec Pandas
Cœur absence presence
sexe sucre
feminin A 61 15
B 6 5
masculin A 66 88
B 17 12
10. Traitement conditionnel
#verifier une condition ou faire un traitement conditionnel
36 Exemple : verifier si la colonne ‘médicament’ existe dans le tableau
11. Traitement répétitif (ou itérative)
Le traitement itératif peut se faire via la boucle for, Exemple :
#boucler sur l'ensemble des colonnes.
37 Exemple: afficher le type de chaque colonne
int64
object
object
object
int64
object
int64
object
12. Graphiques
Passer par matplotlib permet de réaliser des graphiques performants ([Link] Mais il faut connaître les
procédures de la librairie, ce qui nécessite un apprentissage supplémentaire qui n'est pas toujours évident.
Heureusement, Pandas propose des commandes simples qui encapsulent l'appel à ces procédures et nous simplifie
grandement la vie. Il faut importer matplotlib pour que l'ensemble fonctionne correctement.
#importation de la librairie des courbes
38 Import [Link] as plt
#histogramme de l'âge
39
Manipulation des donnees avec Pandas
#Courbe de densité
40
#histogrammes de l'âge selon le sexe
41
13. Conclusion
Les possibilités de Pandas sont vraiment immenses. Des ouvrages entiers lui sont consacrés. Le plus difficile finalement est
d'explorer la documentation qui est particulière fournie, au point que l'on peut s'y perdre un peu parfois