EEIA 2022 - Informatique
EEIA 2022
Initiation à la programmation informatique avec Python
Jour 5 : Calcul numérique: les dataframes
22 juillet 2022
Fidèle Dégni
Horus Dagnon
Merchrist Kiki
Bénin Excellence | Fondation Vallet
EEIA 2022 - Informatique
Plan
Module Pandas
1. Lecture / Ecriture d'un fichier csv
2. La gestion des dates
3. Jouer avec les data frame
4. Agrégation
5. Tracés graphiques
6. Cheat sheets
7. Aller plus loin
Bénin Excellence | Fondation Vallet 2/32
EEIA 2022 - Informatique
Le Module Pandas
Pandas permet de lire et traiter des blocs de données de manière pratique et
facile à interpreter.
Type de données utilisé: [Link]
Un DataFrame se représente comme un tableau. Mais en pratique, il s’agit d’un
dictionnaire dont les clés sont les noms des colonnes formant le tableau.
chaque colonne représente un type de données différent.
il est possible de nommer les ligne du tableau.
Bénin Excellence | Fondation Vallet 3/32
EEIA 2022 - Informatique
Le Module Pandas
Exemple:
import pandas as pd
df = [Link]({'num_legs': [2, 4], 'num_wings': [2, 0]}, index=['falcon', 'dog'])
[Link]()
Bénin Excellence | Fondation Vallet 4/32
EEIA 2022 - Informatique
Lecture / Écriture d'un fichier csv
En data science, enregistre souvent les données dans des fichiers csv
Un fichier csv est un fichier de base des données recueillies - sans formatage
particulier. Chaque champ est séparé par une virgule ou un point-virgule (ou un
autre séparateur défini par le data scientist).
Fonction utilisée pour lire un fichier csv :
pd.read_csv (file_path: str, sep: str, **kwargs)
Fonction utilisée pour écrire dans un fichier csv :
pd.to_csv (file_path: str, sep: str, **kwargs)
Bénin Excellence | Fondation Vallet 5/32
EEIA 2022 - Informatique
Lecture / Écriture d'un fichier csv
Exemple: Lecture d'un fichier csv
adresses = pd.read_csv('[Link]', sep=';')
[Link]()
Bénin Excellence | Fondation Vallet 6/32
EEIA 2022 - Informatique
Lecture / Écriture d'un fichier csv
Exemple: Écriture dans un fichier csv
[Link]().to_csv('adresses_tail_5.csv', sep=',', index=False)
Le fichier adresses_tail_5.csv contient alors:
Bénin Excellence | Fondation Vallet 7/32
EEIA 2022 - Informatique
La gestion des dates
Il est très fréquent d'avoir des dates dans nos jeux de données.
Les dates sont représentés par des strings dans le fichier csv
date,product,price
1/1/2019,A,10
1/2/2020,B,20
1/3/1998,C,30
Bien manipuler les dates en python nécessite leur conversion en objet date ou
plus précisément en datetime .
Bénin Excellence | Fondation Vallet 8/32
EEIA 2022 - Informatique
La gestion des dates
Exemple: lecture basique sans traitement du csv
# noter qu'on ne spécifie par l'argument `sep`
# sa valeur par defaut est `sep=','`
date_df = pd.read_csv('dates_1.csv')
date_df.info()
<class '[Link]'>
Int64Index: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 date 3 non-null object
1 product 3 non-null object
2 price 3 non-null int64
dtypes: int64(1), object(2)
memory usage: 72.0+ bytes
Bénin Excellence | Fondation Vallet 9/32
EEIA 2022 - Informatique
La gestion des dates
Exemple: lecture basique sans traitement du csv
On remarque que le type de la colonne date est object . (ce qu'on ne veut pas)
Bénin Excellence | Fondation Vallet 10/32
EEIA 2022 - Informatique
La gestion des dates
Exemple: lecture du csv en parsant les dates
date_df = pd.read_csv('dates_1.csv', parse_dates=['date'])
date_df.info()
<class '[Link]'>
Int64Index: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 date 3 non-null datetime64[ns]
1 product 3 non-null object
2 price 3 non-null int64
dtypes: datetime64[ns](1), int64(1), object(1)
memory usage: 200.0+ bytes
Bénin Excellence | Fondation Vallet 11/32
EEIA 2022 - Informatique
La gestion des dates
Exemple: lecture du csv en parsant les dates
Cette fois, le type de la colonne date est bien datetime . (ce qu'on veut)
date_df
Bénin Excellence | Fondation Vallet 12/32
EEIA 2022 - Informatique
Jouer avec les data frame
Accès aux colonnes de la dataframe
[Link]
Affichage des 5 premières lignes
[Link](5)
# ou encore [Link](). La valeur par défaut est 5.
Affichage des 3 dernières lignes
[Link](3)
Affichage des 4 premières lig,es
df[:4]
Bénin Excellence | Fondation Vallet 13/32
EEIA 2022 - Informatique
Jouer avec les data frame
Accès à une colonne dont on connaît le nom.
En reprenant l'exemple des adresses on accède à la colonne COL_ADRESSE en
faisant:
addresses["COL_ADRESSE"]
ou encore
addresses.COL_ADRESSE
Ceci est possible car COL_ADRESSE est un nom valable de variable.
[Link] ADRESSE n'aurait pas marché.
Bénin Excellence | Fondation Vallet 14/32
EEIA 2022 - Informatique
Jouer avec les data frame
Affichage des 6 premières lignes de la colonne COL_ADRESSE .
addresses.COL_ADRESSE[:6]
Affichage des 6 premières lignes des colonnes COL_A et COL_B .
addresses[["COL_A", "COL_B"]][:6]
Nombre de lignes et nombre de colonnes.
[Link]
Bénin Excellence | Fondation Vallet 15/32
EEIA 2022 - Informatique
Jouer avec les data frame
Suppression des lignes sans données.
Il peut arriver des fois que les données soit corrompues, des fois certaines valeurs
manquent juste. Une manière de procéder est de supprimer de telles lignes de
notre tableau:
df = [Link]()
ou encore
[Link](inplace=True)
Bénin Excellence | Fondation Vallet 16/32
EEIA 2022 - Informatique
Jouer avec les data frame
Récupérer les addresses dont COL_A vaut 530.
adresses[adresses.COL_A == 530]
Rajouter une colonne contenant la différence entre les valeurs de deux colonnes
x et y .
df["diff"] = df.x - df.y
Bénin Excellence | Fondation Vallet 17/32
EEIA 2022 - Informatique
Agrégation
Agréger c'est unir en un tout
Un agrégation se suit généralement d'une opération sur chacun des groupes
obtenus
Il s'agit par exemple de sum() , mean() , count() , max() , min() , etc.
En pandas , on utilise [Link] pour faire une agrégation
# grouper par départements
# puis faire la somme des valeurs sur chaque groupe
departements_df.groupby(["Departements"]).sum()
Bénin Excellence | Fondation Vallet 18/32
EEIA 2022 - Informatique
Tracés graphiques
On peut rapidement faire des tracé de graphes avec pandas
Ces tracés son basés sur la librairie matplotlib
On peut également utilisé directement matplotlib pour faire les tracés si on veut
faire des choses avancées.
Bénin Excellence | Fondation Vallet 19/32
EEIA 2022 - Informatique
Tracés graphiques
Exemple:
Données de l'unicef contenant une colonne year .
Faire un barplot du nombre d'années
year_counts = data_unicef.year.value_counts()
year_counts.plot(kind="bar")
Bénin Excellence | Fondation Vallet 20/32
EEIA 2022 - Informatique
Cheat sheets - Importer des données
>>> pd.read_csv(filename) # d'un fichier .csv
>>>
>>> pd.read_excel(filename) # d'un fichier Excel
>>>
>>> pd.read_sql(query, connection_object) # d'une table/database SQL
>>>
>>> pd.read_json(json_string) # d'un string JSON
>>>
>>> # d'un dictionnaire, clés pour les noms des colonnes
>>> # valeurs dans des listes
>>> [Link](dict)
Bénin Excellence | Fondation Vallet 21/32
EEIA 2022 - Informatique
Cheat sheets - Exporter des données
>>> df.to_csv(filename) # dans un fichier .csv
>>>
>>> df.to_excel(filename) # dans un fichier Excel
>>>
>>> df.to_sql(query, connection_object) # dans une table/database SQL
>>>
>>> df.to_json(filename) # dans un fichier JSON
Bénin Excellence | Fondation Vallet 22/32
EEIA 2022 - Informatique
Cheat sheets - Inspection des données
>>> [Link](n) # n premières colonnes
>>>
>>> [Link](n) # n dernières colonnes
>>>
>>> [Link] # nombre de lignes et de colonnes
>>>
>>> [Link]() # Index, Datatype et Information mémoire
>>>
>>> [Link]() # Résumé statisriques sur les colonnes numériques
>>>
>>> s.value_counts(dropna=False) # compter les donnée sur une série
Bénin Excellence | Fondation Vallet 23/32
EEIA 2022 - Informatique
Cheat sheets - Sélection
>>> df[col] # colonne ayant le nom col comme une série
>>>
>>> df[[col1, col2]] # les colonnes col1 et col2 en tant que DataFrame
>>>
>>> [Link][0] # Sélection par position
>>>
>>> [Link]['index_one'] # Sélection par index
>>>
>>> [Link][0,:] # Première colonne
>>>
>>> [Link][0,0] # Premier élément de la première colonne
Bénin Excellence | Fondation Vallet 24/32
EEIA 2022 - Informatique
Cheat sheets - Nettoyage de données
>>> [Link] = ['a','b','c'] # renommer les colonnes
>>>
>>> [Link]() # vérifier les valeurs nulles ou manquantes
>>>
>>> [Link]() # contraire de [Link]
>>>
>>> [Link]() # supprimer les lignes avec des données manquantes
>>>
>>> [Link](axis=1) # supprimer les colonnes avec des données manquantes
>>>
>>> # supprimer les colonnes avec moins de n valeurs non nulles
>>> [Link](axis=1,thresh=n)
>>>
>>> [Link](x) # remplacer les valeurs nulles par x
>>>
>>> [Link]([Link]()) # remplacer les valeurs nulles par la moyenne
Bénin Excellence | Fondation Vallet 25/32
EEIA 2022 - Informatique
Cheat sheets - Nettoyage de données
>>> [Link](float) # conversion en float
>>>
>>> [Link](1,'un') # remplacer les 1 par 'un'
>>>
>>> [Link]([1,3],['un','trois']) # remplacement multiple
>>>
>>> [Link](columns=lambda x: x + 1) # renommage de colonnes en masse
>>>
>>> [Link](columns={'old_name': 'new_ name'}) # renommage d'une colonne
>>>
>>> df.set_index('column_one') # changer d'index : column_one devient l'index
>>>
>>> [Link](index=lambda x: x + 1) # renommage d'index en masse
Bénin Excellence | Fondation Vallet 26/32
EEIA 2022 - Informatique
Cheat sheets - Filtre, Trie et Groupby
>>> df[df[col] > 0.5] # lignes pour lesquelles la colonne col est > 0.5
>>>
>>> df[(df[col] > 0.5) & (df[col] < 0.7)] # lignes où 0.7 > col > 0.5
>>>
>>> df.sort_values(col1) # trier par la colonne col1 par ordre croissant
>>>
>>> # trier par la colonne col2 par ordre décroissant
>>> df.sort_values(col2,ascending=False)
>>>
>>> # trier par col1 croissant puis par col2 décroissant
>>> df.sort_values([col1,col2],ascending=[True,False])
Bénin Excellence | Fondation Vallet 27/32
EEIA 2022 - Informatique
Cheat sheets - Filtre, Trie et Groupby
>>> # retourne un objet de type groupby pour les valeurs de col
>>> [Link](col)
>>>
>>> [Link]([col1,col2]) # groupby sur plusieurs colonnes
>>>
>>> # moyenne sur toutes les colonnes, groupé par valeur uniques sur col1
>>> [Link](col1).mean()
>>>
>>> # moyenne sur toutes les colonnes, groupé par valeur uniques sur col1
>>> [Link](col1).agg([Link])
>>>
>>> # appliquer la fonction [Link]() sur toutes les colonnes
>>> [Link]([Link])
Bénin Excellence | Fondation Vallet 28/32
EEIA 2022 - Informatique
Cheat sheets - Jointures
>>> # ajouter les lignes de df1 à la fin de df2 (colones identiques)
>>> [Link](df2)
>>>
>>> # ajouter les colonnes de df1 à la fin df2 (lignes identiques)
>>> [Link]([df1, df2],axis=1)
>>>
>>> # jointure style SQL
>>> [Link](df2,on=col1,how='inner')
Bénin Excellence | Fondation Vallet 29/32
EEIA 2022 - Informatique
Cheat sheets - Statistiques
>>> [Link]()
>>> [Link]()
>>> [Link]()
>>> [Link]()
>>> [Link]()
>>> [Link]()
>>> [Link]()
>>> [Link]()
Bénin Excellence | Fondation Vallet 30/32
EEIA 2022 - Informatique
Aller plus loin
Vous pouvez faire bien plus avec Pandas.
N’hésitez pas à faire des recherches si vous voulez utiliser une fonction qui n’a
pas été abordée dans ce chapitre.
La seule limitation, c'est votre curiosité.
Bénin Excellence | Fondation Vallet 31/32
EEIA 2022 - Informatique
FIN
Bénin Excellence | Fondation Vallet 32/32