Aller au contenu

26 Pandas

Introduction⚓︎

Pandas est l’une des bibliothèques Python les plus utilisées pour l’analyse de données. On l’importe avec la commande suivante :

🐍 Script Python
import pandas as pd

Objet Series⚓︎

Un objet Series est un vecteur colonne. C’est un objet mutable. Cela signifie qu’il peut être mis à jour, que de nouveaux éléments peuvent être ajoutés et que des éléments existants peuvent être supprimés. Il peut contenir des données de tout type (nombres, caractères, etc.). Il peut être instancié avec une liste ou un dictionnaire. Les clés du dictionnaire sont utilisées pour représenter les indices.

Créer un objet Series⚓︎

🐍 Script Python
ma_serie = pd.Series(data=[111, 222, 333], index=["un", "deux", "trois"])
autre_serie = pd.Series([444, 555, 666])

Récupérer des données d’une Series⚓︎

🐍 Script Python
ma_serie["deux"]
ma_serie[0]
ma_serie[["un","trois"]]
autre_serie[0]
autre_serie[[1, 2]]

Objet DataFrame⚓︎

Le DataFrame est la structure de données la plus utilisée. C’est un tableau avec des lignes et des colonnes, comme une table SQL ou une feuille de calcul Excel. Le tableau peut stocker en mémoire des données dans des formats différents. Un DataFrame se comporte comme un dictionnaire dont les clés sont les noms des colonnes et les valeurs sont des Séries. C’est un objet mutable.

Créer un DataFrame⚓︎

Il existe plusieurs façons de créer un DataFrame :

  • à partir d’une liste, d’un dictionnaire ;
  • à partir d’une Series ;
  • à partir d’un autre DataFrame.
🐍 Script Python
d = {"colonneA": ma_serie, "colonneB": pd.Series([444, 555, 666])}
df = pd.DataFrame(d)

Le DataFrame ci-dessus contient deux colonnes nommées ColonneA et ColonneB :

  • La colonne A contiendra trois lignes: 111, 222 et 333 (disposant, chacune, d’une étiquette).
  • La colonne B contiendra trois lignes: 444,555 et 666 (sans étiquette).

Sélection de colonnes⚓︎

On peut utiliser le nom de la colonne pour obtenir les données :

🐍 Script Python
colonne = df["colonneA"]

Pour supprimer une colonne, on utilise la fonction pop.

🐍 Script Python
col_suppr = df.pop("colonneB") # retourne la colonne supprimée

Sélection de lignes⚓︎

Si une ligne a une étiquette, on peut utiliser la fonction loc:

🐍 Script Python
ligne = df.loc["un"] # une seule ligne
lignes = df.loc[["deux", "trois"]] # plusieurs lignes

Sinon, on peut également utiliser la position en utilisant la fonction iloc :

🐍 Script Python
ligne_bis = df.iloc[0] # retourne la ligne d'indice 0 ou position 1

Pour supprimer une ligne, on utilise la fonction drop.

🐍 Script Python
df_sans_ligne_un = df.drop("un") # retourne le DataFrame sans la ligne "un"

Itérer sur les colonnes d’un DataFrame⚓︎

🐍 Script Python
for colonne in df:
    print(colonne)

On peut également parcourir les éléments d’un DataFrame:

🐍 Script Python
for colonne, items in df.iteritems():
    print(colonne, items)

Parcourir les lignes d’un DataFrame⚓︎

🐍 Script Python
for indice_ligne, ligne in df.iterrows():
    print(indice_ligne, ligne)

itertuples() est utilisé pour afficher chaque ligne en tant qu’objet :

🐍 Script Python
for ligne in df.itertuples():
    print(ligne)

Trier par lignes⚓︎

On peut trier par indice de lignes :

🐍 Script Python
tri_df_par_lignes = df.iloc[[0, 1, 2]].sort_index()

Trier par colonnes⚓︎

On peut utiliser la méthode sort_index(axis = 1) pour trier par colonnes.

🐍 Script Python
tri_df_par_lignes = df.iloc[[0, 1, 2]].sort_index(axis = 1)

On peut également utiliser sort_values(by="liste de colonnes") pour trier par nombre de colonnes :

🐍 Script Python
tri_df_par_valeurs = df.sort_values(by="colonneA")

Les fonctions qu’on applique habituellement sur des chaînes de caractères peuvent également l’être sur des colonnes ou des lignes d’un DataFrame, telles que lower(), upper(), len(), strip(), etc.

Fonctionnalités de base⚓︎

Lire un fichier CSV⚓︎

On peut créer un DataFrame à partir d’un fichier csv.

🐍 Script Python
dataFrame = pd.read_csv(
    "un_fichier.csv",
    encoding="utf8",
    skiprows=1,
    names=["nom", "age", "ville", "nbre_enfants", "nbre_animaux"],
)

On utilise head(n) pour retourner les \(n\) premières lignes d’un DataFrame:

🐍 Script Python
premieres = dataFrame.head(2)

Tail⚓︎

On utilise tail(n) pour retourner les \(n\) dernières lignes d’un DataFrame:

🐍 Script Python
dernieres = dataFrame.tail(2)

Valeurs manquantes⚓︎

Vérifier les valeurs manquantes⚓︎

🐍 Script Python
d1 = dataFrame.notnull()

Supprimer les valeurs manquantes⚓︎

🐍 Script Python
d2 = dataFrame.dropna()

Remplacer les valeurs manquantes⚓︎

  • Par une valeur fixée
🐍 Script Python
d3 = dataFrame.fillna(0)

On peut également passer un dictionnaire et utiliser la méthode replace() pour remplacer les éléments par la valeur remplacée.

  • Par la valeur précédente
🐍 Script Python
d4 = dataFrame.fillna(method = 'backfill')
  • Par la valeur suivante
🐍 Script Python
d5 = dataFrame.fillna(method = 'ffill')

Transposée et attributs⚓︎

Pour échanger les lignes par les colonnes et vice versa, on utilise l’attribut T:

🐍 Script Python
transpose = dataFrame.T

On peut également appliquer à un DataFrame, les attributs auivants :

  • shape qui retourne la dimension du DataFrame (nombre de lignes et colonnes) ;
  • size qui donne le nombre d’éléments ;
  • ndim qui donne le nombre d’axes.
🐍 Script Python
dataFrame.shape
dataFrame.size
dataFrame.ndim

Describe et indicateurs statistiques⚓︎

Pour obtenir un résumé rapide de votre DataFrame (moyenne, écart-type, minimum, maximum et d’autres informations pour chacune des colonnes du DataFrame), on utilise la méthode describe() :

🐍 Script Python
dataFrame.describe()

Un DataFrame offre également un certain nombre de fonctions statistiques telles que :

  • abs() : valeur absolue
  • mean() : Valeur moyenne. On a aussi median() et mode()
  • min() : valeur minimale (et max())
  • count() : effectif total
  • std() : écart type
  • prod() : calcul le produit des valeurs
  • cumsum() : calcule les sommes cumulées

Graphiques⚓︎

Les DataFrames offrent des options pour tracer des graphiques. On peut tracer des courbes, des boîtes à moustaches, des surfaces, des nuages de points, des graphiques empilés, des diagrammes à barres, des histogrammes, etc.

🐍 Script Python
import matplotlib.pyplot as plt

d2.plot(kind = 'scatter', x = 'nbre_enfants', y = 'nbre_animaux', color = 'red')
d2.plot(kind = 'bar', x = 'nom', y = 'age')
🐍 Script Python
# gca signifie 'get current axis'
ax = plt.gca()

d2.plot(kind = 'line', x = 'nom', y = 'nbre_enfants', ax = ax)
d2.plot(kind = 'line', x = 'nom', y = 'nbre_animaux', color='red', ax = ax)
🐍 Script Python
d2.groupby('ville')['nom'].nunique().plot(kind = 'bar')