← Retourner à la liste des articles
Image blog
Auteur

Par Équipe Blent

Data Scientist

Publié le 10 mai 2022

Catégorie Machine Learning

Introduction à pandas sous Python

Le traitement des données est une étape fondamentale dans le cycle de vie d'un projet Data Science. Certains domaines, tels que le traitement de langage naturel, demandent une grande quantité de traitement de données avant de pouvoir faire intervenir des modèles de Machine et Deep Learning.

L'une des bibliothèques utiliser pour le prétraitement des données est Pandas. Si vous avez travaillé avec des données tabulaires avant, vous l'avez certainement utilisé. C'est une bibliothèque du langage de programmation Python utilisée pour la manipulation et l’analyse des données. Si vous envisagez la science des données comme une carrière, alors il est impératif que l’une des premières choses que vous faites est d’apprendre à utiliser Pandas.

Dans cet article, nous allons détailler la notion des DataFrames et nous allons voir comment utiliser la bibliothèque Pandas pour manipuler des données tabulaires.

Les DataFrames, qu'est-ce que c'est ?

Avant de commencer à parler de Pandas, regardant d'abord ce que sont les DataFrames. Les DataFrames, ou trames de données en français, sont un moyen de stocker des données dans des grilles rectangulaires qui peuvent facilement être survolées. Chaque ligne de ces grilles correspond aux mesures ou valeurs d’une instance, tandis que chaque colonne est un vecteur contenant des données pour une variable spécifique.


À lire aussi : découvrez notre formation MLOps


Ils sont définis comme des structures de données étiquetées en deux dimensions avec des colonnes de types potentiellement différents. Les lignes d’une DataFrame peuvent contenir des données numériques, des chaines de caractères, des objets logiques, et ils peuvent même être vides.

En général, on pourrait dire que le Pandas DataFrame se compose de trois composantes principales : les données, l’index et les colonnes. On peut spécifier les index et les noms de colonnes pour un DataFrame. L’index, d’une part, indique la différence dans les lignes, tandis que les noms des colonnes indiquent la différence dans les colonnes. Ces deux composants seront utiles lorsqu'on va manipuler des données.

Un DataFrame peut aussi contenir d'autres types d'objets :

  • Une série Pandas : un tableau étiqueté unidimensionnel capable de contenir tout type de données avec des étiquettes d’axe ou d’index. Un exemple d’objet Série est une colonne d’un DataFrame.
  • Un tableau : NumPy ndarray, unidimensionnel ou bidimensionnel.
  • Un dictionnaire : peut contenir des ndarray unidimensionnel, listes, dictionnaires ou séries.

Il existe plusieurs moyens et plusieurs librairies sous Python pour manipuler des trames de données. L'un des moyens les plus populaires est Pandas.

Principales caractéristiques de Pandas

Pandas est une librairie de gestion de données, extrêmement populaire et incontournable dans le monde de la Data Science. Elle est une surcouche à NumPy, et donc hérite de toutes les fonctions (moyenne, tri, statistiques, ...) déjà présentes dans NumPy.

Logo Pandas

Pandas prend des données, comme une base de données CSV ou SQL, et en crée un DataFrame. Il fournit des outils de manipulation de données de haut niveau, notamment des outils pour :

  • Lire et écrire des données de différents formats (CSV, Excel, JSON, ...)
  • Effectuer des requêtes SQL sur des données.
  • Manipuler des tables de données (ajouter, supprimer, modifier des lignes et des colonnes ...)
  • effectuer des calculs sur les données (agrégation, filtrage, ...)

Pandas est simple à apprendre et à utiliser. Les données traitées avec Pandas sont souvent utilisées pour alimenter des analyses statistiques avec SciPy, les fonctions de traçage de Matplotlib et les algorithmes d’apprentissage automatique dans Scikit-learn. Cela rend cette bibliothèque indispensable surtout pour les missions Machine Learning.

Pandas fournit de nombreux avantages :

  • C'est une bibliothèque open source et gratuite, ce qui la rend accessible à tous. - Elle permet de manipuler facilement des données de toutes sortes, notamment des tableaux et des matrices.
  • Elle est très performante et peut gérer de très gros volumes de données. Elle offre une multitude d'outils pour analyser ces données.
  • Elle fournit aussi des outils pour importer et exporter des données.Les données provenant de différents objets de fichiers peuvent être chargées.

Traitement des données avec Pandas

Avant de traiter les données, la première chose à effectuer consiste à créer un DataFrame.

Chargement des données

Pour ce faire, il existe plusieurs méthodes possibles en fonction du type de fichier :

  • Pour les fichiers CSV, la fonction read_csv est efficace, car elle permet également de gérer les fichiers de taille importante en segmentant la lecture bloc par bloc.
  • Pour les fichiers JSON, la fonction read_json fonctionne sur le même principe.
  • Pour les connaisseurs de SQL, il existe read_sql et bien d'autres.

Par exemple, pour charger des données provenant d'un fichier CSV, il suffit d'exécuter la commande suivante:

data  =  pd.read_csv("data.csv")

Dans ce qui suit, nous allons travailler sur un ensemble de données provenant du jeu de données très connu titanic, qui contient des informations à propos d’un sous-ensemble des passagers du navire Titanic.

Nous allons commencer par importer le jeu de données :

import numpy as np
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')

Une fonction pratique pour afficher les cinq premières lignes du DataFrame est la fonction head, très pratique lorsque l'on travaille avec plusieurs DataFrames et que l'on souhaite, en un coup d'oeil, se remémorer de la structure d'un DataFrame.

titanic.head()

Une propriété qui peut être utile, est le shape (forme) des DataFrame, qui indique le nombre de lignes et de colonnes.

titanic.shape
(891, 15)

Accès

Pour accéder à une colonne du DataFrame, c'est de la même façon que pour les listes, mais plutôt que d'utiliser la position de la colonne, il suffit de donner son étiquette.

titanic['survived']
0        0
1         1
2        1
3         1
4         0
        ..
886        0
887     1
888     0
889     1
890     0
Name: survived, Length: 891, dtype: int64

La librairie pandas dispose des deux types d'indexation : par positionnement et par label. La fonction d'indexation loc effectue une indexation par label et la fonction d'indexation iloc, par positionnement.

# mélanger l’ordre des lignes du DataFrame
import sklearn
titanic=sklearn.utils.shuffle(titanic)
# Ligne dont l'indice est le label 87
titanic.loc[87]
survived     0
pclass         3
sex             male
age          22.0
sibsp          1
parch          0
fare         7.25
embarked     S
class         Third
who            man
adult_male    True
deck         NaN
embark_town Southampton
alive         no
alone         False
Name: 0, dtype: object
# Ligne dont la position est 87 (88ème ligne)
titanic.iloc[87]
survived     0
pclass          3
sex             female
age             NaN
sibsp         0
parch         0
fare         7.6292
embarked     Q
class         Third
who             woman
adult_male     False
deck         NaN
embark_town  Queenstown
alive         no
alone         True
Name: 502, dtype: object

Filtrage

Nous allons maintenant filtrer pour récupérer uniquement ce qui nous intéresse.

# récupérer que les informations à propos des femmes
titanic[titanic['sex']=='female']

enter image description here

Groupement

Le groupement consiste à regrouper les données selon une ou plusieurs variables et d'en agréger certaines afin de pouvoir résumer une information. Nous allons chercher la moyenne d'âge des femmes et des hommes sur le navire :

titanic[["age","sex"]].groupby(by='sex').mean()

enter image description here

Modification

La fonction drop permet de supprimer des axes (colonnes ou lignes) d'un DataFrame. Son utilisation est plutôt simple.

Pour supprimer la ligne dont l'index est égal à 0 nous exécutons la ligne suivante :

titanic=titanic.drop(0)

Pour supprimer la colonne age nous exécutons la ligne suivante :

titanic=titanic.drop(columns=["age"])

Pour ajouter une où plusieurs lignes a un DataFrame, il existe deux méthodes, soit on utilise la fonction loc, dans ce cas, nous pouvons ajouter cette ligne qu'à la fin du DataFrame en specifiant le label de cette ligne :

titanic.loc[0] = [0,3,'female',24.0,0,0,7.5,'First','woman',False,'B','Cherbourg','yes',True ]

titanic.loc[0]
survived     0
pclass         3
sex             female
sibsp         24
parch         0
fare         0.0
embarked     7.5
class         First
who             woman
adult_male     False
deck         B
embark_town     Cherbourg
alive         yes
alone         True
Name: 0, dtype: object

La fonction iloc peut être utilisé de la même manière, elle permet de spécifier l'emplacement de la ligne à ajouter.

Exportation de données en format CSV

Après avoir modifié nos données, nous désirons les enregistrer en local en format CSV, il suffit d'exécuter la commande suivante :

titanic_modified.to_csv('<File Path>\titanic_modified.csv')

Les meilleurs alternatives à Pandas :

Même si Pandas est la bibliothèque la plus utilisée par les Data Scientists, et malgré sa performance et sa flexibilité, il existe plusieurs autres choix plus convenables dans des situations bien spécifiques, nous prendrons en guise d'exemple :

  • Polars est une bibliothèque conçue pour traiter les données avec un temps d’éclairage rapide en implémentant le langage Rust et en utilisant Arrow comme base. Polars donne aux utilisateurs une expérience plus rapide par rapport à Pandas. La situation idéale pour utiliser Polars est lorsque nous avons des données trop volumineuses pour Pandas, mais trop petites pour utiliser Spark.
  • Dask offre la possibilité de traiter des données tabulaires sous forme de DataFrames comme Pandas, mais avec Dask les données sont traitées en parallèle pour accélérer le temps d’exécution. Dask offre aussi un planificateur de tâches.
  • Vaex est une bibliothèque Python utilisé pour le traitement et l’exploration de grands ensembles de données tabulaires avec des interfaces similaires à Pandas. L'utilisation de Vaex est proche de celle de Pandas.

À lire aussi : découvrez notre formation MLOps


Explorer, nettoyer, transformer et visualiser des données avec des pandas en Python est une compétence essentielle pour un Data Scientist. Maîtriser cet outil permettra non seulement d’avoir plus de contrôle sur les données d’entrée, mais aussi donnera plus de flexibilité et de puissance lors de l’exploration de données.

Articles similaires

Blog

20 sept. 2022

Machine Learning

Hugging Face est une startup française qui s'est fait connaître grâce à l'infrastructure NLP qu'ils ont développée. Aujourd'hui, elle est sur le point de révolutionner le domaine du Machine Learning et traitement automatique du langage naturel. Dans cet article, nous allons présenter Hugging Face et détailler les taches de base que cette librairie permet de réaliser. Nous allons également énumérer ses avantages et ses alternatifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

12 juil. 2022

Machine Learning

spaCy est une bibliothèque open-source pour le traitement avancé du langage naturel. Elle est conçue spécifiquement pour une utilisation en production et permet de construire des applications qui traitent et comprennent de grands volumes de texte.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

4 juil. 2022

Machine Learning

Un auto-encodeur est une structure de réseaux neuronaux profonds qui s'entraîne pour réduire la quantité de données nécessaires pour représenter une donnée d'entrée. Ils sont couramment utilisés en apprentissage automatique pour effectuer des tâches de compression de données, d'apprentissage de représentations et de détection de motifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article