Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Python pour la Data Science
  3. Maîtriser la librairie Pandas
Extrait - Python pour la Data Science Analysez vos données par la pratique avec NumPy, Pandas, Matplotlib et Seaborn
Extraits du livre
Python pour la Data Science Analysez vos données par la pratique avec NumPy, Pandas, Matplotlib et Seaborn
5 avis
Revenir à la page d'achat du livre

Maîtriser la librairie Pandas

Introduction

1. Introduction à la librairie Pandas

Pandas est une librairie Python dédiée à la Data Science (science des données, en français). Il s’agit d’ailleurs de la librairie Python la plus populaire et la plus performante pour faire de l’analyse de données.

Cette librairie amène avec elle deux nouvelles structures essentielles pour l’analyse de données, appelées Series et DataFrame. Un objet de type DataFrame, que je nommerai dataframe dans la suite de l’ouvrage, peut être assimilé à un tableau à deux dimensions ou encore une feuille Excel, ce qui correspond à la structure de données la plus utilisée en Data Science. Cette structure est composée de lignes représentant des observations ou individus et de colonnes correspondant aux variables décrivant ces observations/individus.

images/140.png

Un objet de type "Series", que je nommerai série dans la suite de l’ouvrage, peut être assimilé à un vecteur, c’est-à-dire à une suite de valeurs. La série correspond aussi à une colonne d’un dataframe. En réalité, le dataframe est constitué d’autant de séries qu’il a de colonnes. Ci-dessous, voici comment des séries peuvent être représentées visuellement.

images/141.png

C’est seulement avec l’arrivée de Pandas et ses structures de données que Python a réellement commencé à être utilisé pour faire de l’analyse de données. Cette librairie apporte non seulement de nouvelles structures ultra performantes pour stocker des données, mais elle apporte aussi un ensemble de méthodes et fonctions associées, permettant d’explorer les dataframes et séries, de les nettoyer, transformer, manipuler ou encore de les visualiser de manière très efficace et rapide.

Il faut savoir que la librairie Pandas s’appuie fortement sur la librairie NumPy, puisque ses structures de données sont basées sur les tableaux NumPy que nous avons vus précédemment (ndarrays). Ainsi, en plus de la structure ndarrays, la librairie Pandas profite aussi des performances de calcul de NumPy.

L’avantage de Pandas par rapport à NumPy est que l’objet...

Lire et écrire des fichiers avec Pandas

Il est important que vous appreniez à lire des données à partir de fichiers avec Pandas, avant même de découvrir ses structures de données. En effet, pour la suite, il faut que vous puissiez importer le jeu de données concernant les Jeux olympiques dans votre notebook Jupyter.

1. Lecture de fichiers texte (CSV ou TXT)

Lorsqu’on souhaite utiliser Pandas pour analyser des données, la première étape est généralement d’importer les données dans son notebook. Les fichiers peuvent être de différents formats, mais le plus courant en Data Science est le format CSV. CSV signifie comma-separated values, traduisez : "valeurs séparées par une virgule". Il s’agit donc d’un format texte, dans lequel les colonnes sont séparées par des virgules. L’autre format très courant est le format TXT, qui lui aussi est un format texte, mais contenant des valeurs séparées par des tabulations, cette fois.

a. Lecture basique d’un fichier

Pour lire un fichier TXT avec Pandas, il faut utiliser la fonction read_table(), dont la syntaxe générale est la suivante :

import pandas as pd 
pd.read_table("mon_fichier.txt") 

Il est courant d’utiliser l’alias pd pour pandas, ce qui permet de réduire le code d’appel des fonctions appartenant à cette librairie.

La fonction read_table() possède un argument obligatoire, qui est le chemin complet vers le fichier ainsi que le nom du fichier, ou juste le nom du fichier si celui-ci se trouve dans votre dossier de travail, c’est-à-dire dans le même dossier que votre notebook. Dans cette syntaxe, le fichier mon_fichier.txt se trouve dans le même dossier que le notebook.

Pour lire un fichier CSV avec Pandas, il faut utiliser la fonction read_csv(), dont la syntaxe générale est la suivante :

import pandas as pd 
pd.read_csv("mon_fichier.csv") 

Ces deux fonctions sont les plus utilisées pour importer des données à partir d’un fichier. La seule différence entre ces deux fonctions est la valeur par défaut que prend l’option sep. En effet, l’option sep, qui signifie séparateur, permet de dire à Pandas quel est le séparateur...

Structure de données Pandas : les Series (Séries)

1. Introduction

On peut décrire les séries de Pandas comme étant une colonne d’un dataframe, un tableau à une dimension (vecteur) ou encore une suite de valeurs, numériques ou non. On peut aussi décrire une série comme un ensemble de valeurs représentant une variable pour un ensemble d’observations ou d’individus. Une série a un nom : par exemple dans l’image ci-dessous, le nom de la série est "Variable". Tout comme les autres structures Python que nous avons déjà vues, une série possède aussi des index.

images/175.PNG

Une série peut être créée à partir d’une liste, d’un tableau NumPy, ou encore d’un dictionnaire, grâce à la méthode Series(). Elle peut aussi être créée à partir d’un fichier grâce aux fonctions de lecture de fichiers que nous avons vues précédemment, telles que read_table() ou read_csv().

La structure de données Series possède deux composants principaux :

  • les valeurs, auxquelles on peut accéder avec la méthode values(),

  • les étiquettes, plus couramment appelées les index, auxquelles on peut accéder avec la méthode index().

La série possède un seul axe, il s’agit de l’axe des index, contrairement au dataframe, que nous verrons plus tard, qui contient deux axes : les lignes et les colonnes.

Il faut savoir que pour les séries, par défaut, les index sont des nombres entiers : ils commencent à 0 et s’incrémentent, comme les ndarrays de NumPy. Mais il est aussi possible de remplacer ces index entiers par des étiquettes du type que l’on souhaite (nombres, caractères). Par exemple, si on préfère mettre des lettres comme index plutôt que des nombres, Pandas nous autorise à le faire. Ainsi, on pourra accéder aux valeurs de la série soit en donnant la position de la valeur entre crochets, soit en donnant l’étiquette correspondant à cette valeur, toujours entre crochets.

Enfin, au sein d’une série, il est fortement conseillé d’utiliser des données qui sont homogènes, de même type...

Structure de données Pandas : les objets de type DataFrame

1. Introduction

On peut décrire les dataframes comme étant des tableaux à deux dimensions, qu’on pourrait aussi comparer à une feuille Excel. Les tableaux à deux dimensions sont les structures de données les plus utilisées en analyse de données, car cela permet de représenter en ligne les individus/observations et en colonne les variables représentant ces individus/observations. Ainsi, ce qui caractérise le dataframe, ce sont son index pour les lignes et ses noms de colonnes. Son index et ses noms de colonnes permettront d’accéder aux données.

Tout comme les séries, les dataframes sont construits sur les ndarrays NumPy et possèdent donc une très bonne performance. Aussi, une colonne d’un dataframe (qui est en réalité une série) contient, dans la très grande majorité des cas, des données homogènes, de même type. En revanche, le dataframe peut contenir des données hétérogènes, puisque les colonnes sont indépendantes entre elles, chacune correspondant à une série et, en termes statistiques, à une variable. Ainsi, le dataframe peut contenir des colonnes avec des données de type int, float, bool, etc.

Le dataframe possédant un index et des noms de colonnes, on dit aussi qu’il possède deux axes, appelés axe 0 (pour l’axe des index, ou lignes) et axe 1 (pour l’axe des colonnes). Cette notion d’axe est importante, car certaines fonctions prennent en paramètre l’axe qui est à traiter, il faut donc se rappeler que 0 signifie les lignes et 1 les colonnes. Par exemple, si on souhaite effectuer la somme de chaque colonne d’un dataframe, on utilise la fonction sum() sur l’axe 0. En revanche, si on souhaite avoir une somme par ligne du dataframe, on utilise la fonction sum() sur l’axe 1.

Une image étant plus claire que des mots, voyons ensemble la structure d’un dataframe sur la figure ci-dessous :

images/190.png

L’ensemble des propriétés précédemment décrites que possède le dataframe sont nécessaires dans le domaine de la Data Science, étant donné que l’analyste de données travaille avec des données...

Structure de données Pandas : les panels

Il existe une dernière structure de données dans Pandas appelée Panel. Contrairement aux séries et aux dataframes, cette structure est peu utilisée. Toutefois, il est bon qu’elle fasse partie de votre culture générale de Python pour l’analyse de données.

Les panels peuvent être décrits comme des tableaux à trois dimensions, c’est-à-dire qu’ils contiennent plusieurs dataframes, sachant qu’un dataframe peut lui-même contenir plusieurs séries (plusieurs colonnes). En reprenant l’exemple des feuilles Excel, un dataframe correspond à une feuille Excel et un objet de type Panel correspond à plusieurs feuilles Excel (donc plusieurs dataframes). 

Les panels ne seront pas traités dans ce livre, car ils sont peu utilisés. La structure la plus utilisée est le dataframe et c’est cette structure que nous approfondirons.

Manipulation avancée des données avec Pandas

1. Les opérations groupby

Il est possible de grouper un dataframe sur une ou plusieurs colonnes puis d’appliquer des fonctions dessus, de manière très simple, grâce à la méthode groupby() de Pandas, qui signifie littéralement en français "grouper par". Cette méthode est très puissante et largement utilisée en analyse de données avec Python et sa librairie Pandas.

a. groupby sur une colonne

La syntaxe globale d’utilisation de groupby est la suivante :

dataframe.groupby("nom_de_colonne") 

Ici, un dataframe groupé sur la colonne nom_de_colonne est retourné par la méthode groupby(). Il est aussi possible d’appliquer directement une fonction de calcul après la méthode groupby(). Par exemple, imaginons que nom_de_colonne soit une variable qualitative avec des modalités. On pourrait additionner chaque colonne numérique pour chaque modalité de la colonne nom_de_colonne et ce très facilement avec groupby().

Syntaxe

dataframe.groupby("nom_de_colonne").sum() 

Ici, groupby() retourne un dataframe avec, en index de ligne, chaque modalité de la colonne nom_de_colonne, ainsi que la somme de chaque colonne numérique pour chaque modalité de nom_de_colonne.

Afin d’illustrer ces propos, prenons un exemple avec notre dataframe des JO. Calculons la moyenne des variables numériques Age, Height et Weight pour chaque modalité de la variable qualitative Sport.

Code

donnees.groupby("Sport").mean() 

Résultat

images/229.PNG

Voici un sous-ensemble du dataframe obtenu, sachant qu’il y a en réalité une ligne par sport, que vous pouvez visualiser entièrement dans le notebook associé à ce chapitre. Ici, de manière transparente, la méthode groupby() va créer un dataframe pour chaque modalité de la variable Sport, donc un dataframe contenant les lignes du sport "boxe", un autre pour le sport "basket", etc. Elle va créer autant de dataframes qu’il y a de modalités dans la variable Sport du dataframe de départ. Ces dataframes contiendront la totalité des lignes correspondant à leur sport respectif. Ensuite, on applique sur ces dataframes la méthode...