Python Pandas – Tuto (Partie N°2) 3   Mise à jour récente !


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:

Python
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 :

Python
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 :

Python
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.

Python
B.loc[B['Col3'] == 7]

ou plus simplement

Python
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:

Python
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 :

Python
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
Python
pd.merge(A, B, how='inner', on='Col1')

Union

Pour ce faire rien de plus simple utilisez la méthode concat:

Python
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.

Python
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 :

Python
# 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.


A propos de Benoit Cayla

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.

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

3 commentaires sur “Python Pandas – Tuto (Partie N°2)