Aller au contenu

Bibliothèque « pandas »

Bibliothèque « pandas » ou module « csv » ?⚓︎

Utiliser pandas plutôt que le module csv intégré de Python dépend du type de tâches que l'on souhaite accomplir avec vos données. Voici quelques situations où pandas est généralement plus approprié :

  • Manipulation complexe des données : si on a besoin de manipuler des données de manière complexe, comme le filtrage, l'agrégation, la transformation ou le nettoyage, pandas offre des fonctionnalités bien plus puissantes et intuitives que le module csv.

  • Gestion des données manquantes : pandas a des outils intégrés pour gérer les données manquantes, ce qui est courant dans les ensembles de données réelles. Le module csv ne fournit pas de tels outils.

  • Lecture et écriture de divers formats de fichiers : bien que le module csv soit limité à la lecture et à l'écriture de fichiers CSV, pandas peut lire et écrire dans divers formats, y compris Excel, SQL, JSON, et plus encore.

  • Analyse de données : si on a besoin de calculer des statistiques, de regrouper des données, ou de créer des visualisations, pandas s'intègre bien avec d'autres bibliothèques comme NumPy et Matplotlib, ce qui facilite ces tâches.

  • Performance : pour de grands ensembles de données, pandas est souvent plus performant grâce à son utilisation de structures de données optimisées et de fonctions vectorisées.

  • Facilité d'utilisation : pandas offre une API de haut niveau qui simplifie de nombreuses tâches courantes de manipulation de données, ce qui peut rendre votre code plus lisible et plus concis.

En revanche, le module csv peut être suffisant si vous avez simplement besoin de lire ou d'écrire des fichiers CSV sans effectuer de manipulations complexes. Il est également utile si vous travaillez dans un environnement avec des ressources limitées où l'installation de pandas n'est pas pratique.

En résumé, utilisez pandas pour des tâches d'analyse et de manipulation de données avancées, et le module csv pour des opérations simples et légères sur des fichiers CSV.

Intérêt de la bibliothèque « pandas »⚓︎

La bibliothèque pandas est un outil puissant et largement utilisé en Python pour la manipulation et l'analyse de données. Voici quelques-uns de ses principaux avantages :

Structures de données flexibles⚓︎

pandas introduit deux structures de données principales, les Series et les DataFrames, qui permettent de manipuler facilement des données tabulaires et des séries temporelles.

Series

Une Series est une structure de données unidimensionnelle. On peut créer une Series à partir d'une seule colonne de données, par exemple :

🐍 Editeur
import pandas as pd

# Données des noms des joueurs
noms = ['LEBRUN', 'CALDERANO', 'HARIMOTO', 'MOREGARD', 'LIN', 'WANG']

# Créer une Series
series_noms = pd.Series(noms, name='Nom')

print("Exemple de Series :")
print(series_noms)
Résultat
▶️ Console
Exemple de Series :
0       LEBRUN
1    CALDERANO
2     HARIMOTO
3     MOREGARD
4          LIN
5         WANG
Name: Nom, dtype: object
  • DataFrame :

    Un DataFrame est une structure de données bidimensionnelle qui peut contenir plusieurs Series comme colonnes. Voici comment créer un DataFrame :

    Script
    🐍 Editeur
    import pandas as pd
    
    # Données des joueurs de tennis de table
    data = {
        'Nom': ['LEBRUN', 'CALDERANO', 'HARIMOTO', 'MOREGARD', 'LIN', 'WANG'],
        'Prenom': ['Félix', 'Hugo', 'Tomakozu', 'Truls', 'Shidong', 'Chuqin'],
        'Pays': ['France', 'Brésil', 'Japon', 'Suède', 'Chine', 'Chine'],
        'Classement_Mondial': [6, 3, 4, 7, 1, 2]
    }
    
    # Créer un DataFrame
    df_joueurs = pd.DataFrame(data)
    
    print("\nExemple de DataFrame :")
    print(df_joueurs)
    
    Résultat
    ▶️ Console
    Exemple de DataFrame :
             Nom    Prenom    Pays  Classement_Mondial
    0     LEBRUN     Félix  France                   6
    1  CALDERANO      Hugo  Brésil                   3
    2   HARIMOTO  Tomakozu   Japon                   4
    3   MOREGARD     Truls   Suède                   7
    4        LIN   Shidong   Chine                   1
    5       WANG    Chuqin   Chine                   2
    

Manipulation de données⚓︎

Elle offre des fonctionnalités pour manipuler des données, comme le filtrage, l'indexation, le réindexage, la fusion, la concaténation et le remodelage des jeux de données.

  • Filtrage

    Supposons que l'on veut filtrer les joueurs en fonction de leur classement mondial ou de leur pays. Voici comment faire :

    Script
    🐍 Editeur
    import pandas as pd
    
    # Données des joueurs de tennis de table
    data = {
        'Nom': ['LEBRUN', 'CALDERANO', 'HARIMOTO', 'MOREGARD', 'LIN', 'WANG'],
        'Prenom': ['Félix', 'Hugo', 'Tomakozu', 'Truls', 'Shidong', 'Chuqin'],
        'Pays': ['France', 'Brésil', 'Japon', 'Suède', 'Chine', 'Chine'],
        'Classement_Mondial': [6, 3, 4, 7, 1, 2]
    }
    
    # Créer un DataFrame
    df_joueurs = pd.DataFrame(data)
    
    # Filtrer les joueurs avec un Classement_Mondial supérieur à 5
    joueurs_filtres_classement = df_joueurs[df_joueurs['Classement_Mondial'] > 5]
    print("Joueurs avec un classement mondial supérieur à 5:")
    print(joueurs_filtres_classement)
    
    # Filtrer les joueurs d'un pays spécifique, par exemple la Chine
    joueurs_filtres_pays = df_joueurs[df_joueurs['Pays'] == 'Chine']
    print("\nJoueurs de Chine:")
    print(joueurs_filtres_pays)
    
    # Filtrer les joueurs avec un Classement_Mondial inférieur à 4 et provenant du Brésil
    joueurs_filtres_combines = df_joueurs[(df_joueurs['Classement_Mondial'] < 4) & (df_joueurs['Pays'] == 'Brésil')]
    print("\nJoueurs avec un classement mondial inférieur à 4 et provenant du Brésil:")
    print(joueurs_filtres_combines)
    
    Résultat
    ▶️ Console
    Joueurs avec un classement mondial supérieur à 5:
            Nom Prenom    Pays  Classement_Mondial
    0    LEBRUN  Félix  France                   6
    3  MOREGARD  Truls   Suède                   7
    
    Joueurs de Chine:
        Nom   Prenom   Pays  Classement_Mondial
    4   LIN  Shidong  Chine                   1
    5  WANG   Chuqin  Chine                   2
    
    Joueurs avec un classement mondial inférieur à 4 et provenant du Brésil:
             Nom Prenom    Pays  Classement_Mondial
    1  CALDERANO   Hugo  Brésil                   3
    
  • Indexation avec une Series

    Supposons que l'on a une Series contenant les noms des joueurs :

    Script
    🐍 Editeur
    import pandas as pd
    
    # Données des noms des joueurs
    noms = pd.Series(['LEBRUN', 'CALDERANO', 'HARIMOTO', 'MOREGARD', 'LIN', 'WANG'], name='Nom')
    
    # Accéder au premier élément de la Series
    premier_nom = noms.iloc[0]
    print("Premier nom dans la Series:")
    print(premier_nom)
    
    # Accéder aux trois premiers éléments de la Series
    trois_premiers_noms = noms.iloc[:3]
    print("\nTrois premiers noms dans la Series:")
    print(trois_premiers_noms)
    
    Résultat
    ▶️ Console
    Premier nom dans la Series:
    LEBRUN
    
    Trois premiers noms dans la Series:
    0       LEBRUN
    1    CALDERANO
    2     HARIMOTO
    Name: Nom, dtype: object
    
  • Indexation avec un DataFrame

    Supposons que l'on a un DataFrame contenant les données des joueurs :

    Script
    🐍 Editeur
    import pandas as pd
    
    # Données des joueurs de tennis de table
    data = {
        'Nom': ['LEBRUN', 'CALDERANO', 'HARIMOTO', 'MOREGARD', 'LIN', 'WANG'],
        'Prenom': ['Félix', 'Hugo', 'Tomakozu', 'Truls', 'Shidong', 'Chuqin'],
        'Pays': ['France', 'Brésil', 'Japon', 'Suède', 'Chine', 'Chine'],
        'Classement_Mondial': [6, 3, 4, 7, 1, 2]
    }
    
    # Créer un DataFrame
    df_joueurs = pd.DataFrame(data)
    
    # Accéder à la première ligne du DataFrame
    premiere_ligne = df_joueurs.iloc[0]
    print("\nPremière ligne du DataFrame:")
    print(premiere_ligne)
    
    # Accéder à la colonne 'Nom'
    colonne_nom = df_joueurs['Nom']
    print("\nColonne 'Nom' du DataFrame:")
    print(colonne_nom)
    
    # Accéder à un élément spécifique (par exemple, le prénom du deuxième joueur)
    prenom_deuxieme_joueur = df_joueurs['Prenom'].iloc[1]
    print("\nPrénom du deuxième joueur:")
    print(prenom_deuxieme_joueur)
    
    Résultat
    ▶️ Console
    Première ligne du DataFrame:
    Nom                   LEBRUN
    Prenom                 Félix
    Pays                  France
    Classement_Mondial         6
    Name: 0, dtype: object
    
    Colonne 'Nom' du DataFrame:
    0       LEBRUN
    1    CALDERANO
    2     HARIMOTO
    3     MOREGARD
    4          LIN
    5         WANG
    Name: Nom, dtype: object
    
    Prénom du deuxième joueur:
    Hugo
    
  • Gestion des données manquantes : pandas fournit des outils pour gérer les données manquantes, ce qui est courant dans les ensembles de données du monde réel.

  • Fonctionnalités d'entrée/sortie : elle permet de lire et d'écrire des données dans divers formats, y compris CSV, Excel, SQL, et bien d'autres.

  • Agrégation et transformation de données : pandas facilite l'agrégation de données, le calcul de statistiques descriptives, et l'application de fonctions aux données.

  • Intégration avec d'autres bibliothèques : elle s'intègre bien avec d'autres bibliothèques Python comme NumPy, Matplotlib, et scikit-learn, ce qui en fait un outil central dans l'écosystème de science des données en Python.

  • Performance : pandas est optimisé pour les performances et peut gérer de grands ensembles de données de manière efficace.

  • Facilité d'utilisation : malgré sa puissance, pandas est conçu pour être intuitif et facile à utiliser, ce qui le rend accessible même aux débutants en programmation.

En résumé, pandas est un outil essentiel pour quiconque travaille avec des données en Python, que ce soit pour le nettoyage, l'analyse ou la visualisation des données.

Utilisation du module « pandas »⚓︎

Pour des opérations plus avancées, la bibliothèque pandas est très utile.

Lire un fichier CSV avec pandas

🐍 Editeur
import pandas as pd

# Lecture du fichier CSV
table = pd.read_csv('joueurs_tt.csv')

# Affichage des 5 premières lignes
print(table.head())

# Affichage d'une ligne de séparation
print('-'*80)

# Affichage de toutes les données
print(table)
▶️ Console
             Nom    Prenom    Pays  Classement_Mondial
    0     LEBRUN     Félix  France                   6
    1  CALDERANO      Hugo  Brésil                   3
    2   HARIMOTO  Tomakozu   Japon                   4
    3   MOREGARD     Truls   Suède                   7
    4        LIN   Shidong   Chine                   1
    --------------------------------------------------------------------------------
             Nom    Prenom    Pays  Classement_Mondial
    0     LEBRUN     Félix  France                   6
    1  CALDERANO      Hugo  Brésil                   3
    2   HARIMOTO  Tomakozu   Japon                   4
    3   MOREGARD     Truls   Suède                   7
    4        LIN   Shidong   Chine                   1
    5       WANG    Chuqin   Chine                   2

Écrire dans un fichier CSV avec pandas

🐍 Editeur
import pandas as pd

data = pd.DataFrame({
    'Nom': ['LEBRUN', 'CALDERANO', 'HARIMOTO', 'MOREGARD', 'LIN', 'WANG'],
    'Prenom': ['Félix', 'Hugo', 'Tomakozu', 'Truls', 'Shidong', 'Chuqin'],
    'Pays': ['France', 'Brésil', 'Japon', 'Suède', 'Chine', 'Chine'],
    'Classement_Mondial': [6, 3, 4, 7, 1, 2]
})

data.to_csv('joueurs_tt.csv', index=False)

Principales fontionnalités de « pandas »⚓︎

La bibliothèque pandas offre de nombreuses fonctions courantes qui facilitent la manipulation et l'analyse des données. Voici quelques-unes des fonctions les plus utilisées :

Lecture et écriture de données :

  • pd.read_csv() : lit un fichier CSV dans un Dataframe.
  • pd.read_excel() : lit un fichier Excel dans un Dataframe.
  • df.to_csv() : écrit un DataFrame dans un fichier CSV.
  • df.to_excel() : écrit un DataFrame dans un fichier Excel.

Inspection des données :

  • df.head(n) : affiche les n premières lignes du DataFrame.
  • df.tail(n) : affiche les n dernières lignes du DataFrame.
  • df.info() : affiche un résumé concis du DataFrame.
  • df.describe() : génère des statistiques descriptives du DataFrame.

Sélection et indexation :

  • df['colonne'] : sélectionne une colonne spécifique.
  • df.loc[] : sélectionne des lignes et des colonnes par étiquettes.
  • df.iloc[] : sélectionne des lignes et des colonnes par indices.

Manipulation des données :

  • df.drop() : supprime des lignes ou des colonnes.
  • `df.fillna() : remplace les valeurs manquantes.
  • df.dropna() : supprime les valeurs manquantes.
  • df.rename() : renomme les colonnes ou les indices.

Agrégation et transformation :

  • df.groupby() : groupe les données par une ou plusieurs colonnes.
  • df.agg() : applique une ou plusieurs fonctions d'agrégation.
  • df.sum(), df.mean(), df.min(), df.max() : calcule des statistiques sur les colonnes.

Fusion et concaténation :

  • pd.merge() : fusionne des DataFrames.
  • pd.concat() : concatène des DataFrames.

Application de fonctions :

  • df.apply() : applique une fonction le long d'un axe du DataFrame.
  • df.map() : applique une fonction élément par élément sur une Series.

Tri et réindexation :

  • df.sort_values() : trie les valeurs d'une colonne.
  • df.sort_index() : trie l'index du DataFrame.
  • df.reset_index() : réinitialise l'index du DataFrame.

Ces fonctions sont essentielles pour effectuer des tâches courantes de manipulation et d'analyse de données avec pandas.

Bibliothèque « pandas » de Python (vidéo)⚓︎

Vidéo de David Latouche (24:06)

Manipulation de tables avec la bibliothèque « pandas »⚓︎

Fichier PDF (doc. Eduscol)