Cet article fait suite à la première partie de mon tutoriel sur la librairie Python Pandas. L’idée ici est d’aller plus loin dans la découverte de cette librairie et notamment donner les clés sur les manipulations ensemblistes qu’elle propose. Pour faire simple, vous avez des DataFrame mais vous aller devoir les combiner ensemble afin de travailler vos caractéristiques. Bref vous aller vouloir faire du « SQL like » sur vos données ! Bonne nouvelle, cette librairie vous le permet et ce, de la plus élégante et simple des manières.
Préparons notre jeu de données
Pour ce tuto nous allons créer deux matrices A et B:
import pandas as pd
A = pd.DataFrame({'Col1': [1, 2, 3],
'Col2': [4, 4, 6]},
index=['rowA1', 'rowA2', 'rowA3'])
print("Matrice A\n", A)
B = pd.DataFrame({'Col1': [1, 3],
'Col3': [7, 8],
'Col4': [9, 10]},
index=['rowB1', 'rowB2'])
print("\nMatrice B\n", B)
Les voici :
Matrice A
Col1 Col2
rowA1 1 4
rowA2 2 4
rowA3 3 6
Matrice B
Col1 Col3 Col4
rowB1 1 7 9
rowB2 3 8 10
Décompter les valeurs d’une colonne
La méthode value_counts() apposée à une colonne d’un DataFrame permet de lister les valeurs de cette colonne avec leur nombre d’occurences :
A["Col1"].value_counts()
3 1
2 1
1 1
Name: Col1, dtype: int64
Parcourir les lignes d’un DataFrame
Il peut être parfois utile de parcourir ligne après ligne un DataFrame. pour celà Pandas propose deux itérateurs iterrows() et itertuples (). Ces deux méthodes ont leur subtilité comme itertuples()
qui est supposé être plus rapide que iterrows()
, ou iterrows(
) pourrait ne pas correspondre d’une ligne à l’autre. Bref je vous conseille de bien regarder la documentation Pandas avant de vous lancer dans cette voie.
Pour itérer donc, vous pouvez donc utiliser :
for index, ligne in monDataFrame.iterrows():
print (ligne["Colonne X"])
Filtrer les lignes d’un DataFrame
Le filtrage est une action indispensable dés lors que l’on manipule des jeux de données. Pour celà on dispose de deux méthodes l’une Python et l’autre via Pandas.
B.loc[B['Col3'] == 7]
ou plus simplement
B[B['Col3'] == 7]
Dans les deux cas on filtre le DataFrame sur la colonne ‘Col3’ qui a pour valeur 7.
On peut bien sur combiner plusieurs conditions mais attention de ne pas utiliser les opérateurs booléens and et or dans ce cas mais & et | à la place:
B.loc[(B['Col3'] == 7) | (B['Col3'] > 1)]['Col1']
B.loc[(B['Col3'] == 7) & (B['Col3'] > 1)]['Col1']
Maintenant on peut utiliser la méthode filter des DataFrame Pandas. Elle ne rend pas exactement les mêmes services mais peut s’évérer très pratique pour faire un like par exemple :
A.filter(like='A3', axis=0)
Jointures
Pour ce faire rien de plus simple utilisez la méthode merge et précisez le mode de jointure:
- INNER : jointure stricte
- LEFT : jointure gauche
- RIGHT: jointure droite
- OUTER : full outer
pd.merge(A, B, how='inner', on='Col1')
Union
Pour ce faire rien de plus simple utilisez la méthode concat:
pd.concat([A, B])
Group By
La méthode groupby permet de regrouper des lignes sur un critère et d’effectuer des opérations sur les colonnes. C’est exactement ce que fait le Group By du SQL.
print ("Group By / Count:\n ", A.groupby("Col2")['Col1'].size(), "\n")
print ("Group By / Moyenne:\n ", A.groupby("Col2")['Col1'].mean(), "\n")
Il est possible de préciser plusieurs transformations sur un même groupement :
# Multiple opérations
import numpy as np
A.groupby('Col2').agg({'Col1': np.mean, 'Col2': np.size})
Téléchargez ou consultez le notebook Jupyter avec les exemples ci-dessus sur GitHub.
Ingénieur en informatique avec plus de 20 ans d’expérience dans la gestion et l’utilisation de données, Benoit CAYLA a mis son expertise au profit de projets très variés tels que l’intégration, la gouvernance, l’analyse, l’IA, la mise en place de MDM ou de solution PIM pour le compte de diverses entreprises spécialisées dans la donnée (dont IBM, Informatica et Tableau). Ces riches expériences l’ont naturellement conduit à intervenir dans des projets de plus grande envergure autour de la gestion et de la valorisation des données, et ce principalement dans des secteurs d’activités tels que l’industrie, la grande distribution, l’assurance et la finance. Également, passionné d’IA (Machine Learning, NLP et Deep Learning), l’auteur a rejoint Blue Prism en 2019 et travaille aujourd’hui en tant qu’expert data/IA et processus. Son sens pédagogique ainsi que son expertise l’ont aussi amené à animer un blog en français (datacorner.fr) ayant pour but de montrer comment comprendre, analyser et utiliser ses données le plus simplement possible.
3 Replies to “Python Pandas – Tuto (Partie N°2)”