Préparer les données avec Pandas et Numpy
Pandas, la bibliothèque Python incontournable pour manipuler les données
Nous sommes désormais prêts à explorer et analyser nos données. Pour ce faire, nous nous appuierons sur l’un des modules Python les plus essentiels : Pandas.
Pandas est la bibliothèque de Python permettant de manipuler et analyser les données. Elle a été créée en 2008 par Wes McKinney, un statisticien et développeur Python. Cette bibliothèque s’est progressivement imposée comme un élément incontournable pour gérer des données et a contribué à faire de Python une référence en la matière.
1. Installation
Pour commencer, assurons-nous qu’elle est bien installée. Si tel n’est pas le cas, validons la ligne suivante dans une invite de commande :
pip install pandas
Une fois installée, il suffit de l’importer :
import pandas as pd
L’alias pd est couramment utilisé pour simplifier les commandes liées à Pandas. Il permet ensuite de s’assurer que les commandes pandas que nous lançons s’y réfèrent bien.
2. Structure et type de données
Avant de l’utiliser, prenons le temps d’expliquer les différentes structures que peut prendre pandas. Celle que tout le monde a en tête est le DataFrame à deux dimensions se présentant comme un tableur Excel, mais il existe en réalité un type par dimension :
Nom de la structure |
Nombre de dimensions |
Principe |
Séries |
1 |
Données unidimensionnelles indexées |
DataFrames |
2 |
Feuille de calcul avec lignes et colonnes |
Panels... |
Numpy, le pilier du calcul numérique
Numpy est une bibliothèque fondamentale pour le calcul scientifique en Python agissant comme une infrastructure de base pour de nombreuses autres bibliothèques. Prenons le temps de voir ensemble ce qui fait sa force et pourquoi elle est omniprésente dans les modules Python.
1. La structure ndarray
Le ndarray, abréviation de N-dimensionnal array signifiant tableau à n dimensions, est vraiment au cœur de la bibliothèque Numpy. Deux autres structures, les matrix et scalars, sont également proposées mais nous polariserons notre attention sur le ndarray tant son rôle est central.
Attention, quantité de noms différents peuvent renvoyer à un ndarray. Ainsi, le terme tableau est la forme générique pour les qualifier mais nous pouvons rencontrer le terme vecteur pour des ndarray à une dimension ou matrice pour ceux en comprenant deux. Au-delà de deux dimensions, il est courant de rencontrer les appellations : array, NDArray, tenseur ou tensor.
Commençons par étudier les caractéristiques de cette structure fondamentale de Numpy.
a. Une structure homogène
Avant tout, c’est un tableau multidimensionnel homogène, c’est-à-dire qu’il peut prendre autant de dimensions que souhaité avec la contrainte que toutes les données soient du même type. Voici un moyen simple de créer un vecteur ndarray à partir d’une simple liste Python :
import numpy as np
a = [1, 2, 3, 4, 5]
array_numpy = np.array(a)
print(array_numpy.dtype)
# Output: int64
Quant à l’obligation d’homogénéité mentionnée plus haut, notons que l’introduction d’un membre de type float entraîne de facto le changement de type de l’ensemble du ndarray :
array_numpy_2 = np.array([1.0, 2, 3, 4, 5])
print(array_numpy_2.dtype)
# Output: float64
Cet exemple n’avait pour but que de créer un ndarray à partir d’une structure familière. Maintenant que nous avons pris nos marques, voici la façon de le créer directement :
debut = 0
fin = 10 #valeur non incluse
pas = 2
array_numpy = np.arange(debut, fin, pas) # Le pas peut être décimal ...
Collecte des données

Nuage de mots des termes techniques et informatiques utilisés pour la section Collecte des données
Définir son dossier de travail est un bon réflexe à prendre avant de commencer. En effet, les importations et exportations de fichiers en tout genre seront monnaie courante et figer, une bonne fois pour toutes, le chemin nous évitera de le répéter.
Nous réalisons cette opération grâce à la bibliothèque os dont l’acronyme correspond à Operating System. C’est en effet une bibliothèque standard mais essentielle permettant d’interagir avec le système d’exploitation, la manipulation des fichiers et des dossiers dont, dans notre cas, la gestion des chemins d’accès.
Définir le dossier de travail se passe de la façon suivante :
import os
os.chdir(r"D:\ENI\CHAPITRE_03")
Le « r » avant les guillemets est important car il indique au système que c’est une raw string empêchant ainsi l’interprétation de caractères comme \n qui renvoie à la ligne ou \t créant une tabulation.
Nous pouvons vérifier que le dossier a bien été défini de cette façon :
os.getcwd()
# Output : 'D:\\ENI\\CHAPITRE_03'
Pour celles et ceux qui souhaiteraient utiliser les notebooks Google Colab, la méthode nécessite une étape supplémentaire car il faut au préalable déclarer le dossier du Drive.
from google.colab import drive
drive.mount(r'/content/gdrive')
Une fois ces deux lignes exécutées, quatre écrans vont apparaître successivement :
-
Écran 1 : cliquer sur Se connecter à Google Drive.
-
Écran 2 : cliquer sur le compte mail à utiliser.
-
Écran 3 : le titre de l’écran est Connectez-vous à Google Drive for desktop. Cliquer sur Continuer.
-
Écran 4 : le titre de l’écran est Google Drive veut un accès supplémentaire à votre compte Google. Cliquer sur Continuer.
À l’issue de ces quatre étapes, l’accès au Drive est actif et nous pouvons utiliser la procédure précédente pour définir le dossier de travail....
Nettoyage des données

Nuage de mots des termes techniques et informatiques utilisés pour la section Nettoyage des données
Le nettoyage des données est quasiment systématique. Il est extrêmement rare de pouvoir l’éluder. Mais qu’entend-on par nettoyage ?
Le nettoyage des données consiste à sélectionner, corriger et organiser les données pour éliminer erreurs et incohérences. C’est essentiel pour garantir la qualité et la fiabilité des analyses ultérieures.
Regardons étape par étape comment mener à bien ce processus.
1. Sélection des données
Les données que nous utilisons ne sont pas forcément à prendre dans leur entièreté. En fonction de la mission à mener, toutes ne sont pas nécessaires. Par exemple, si nous souhaitons réaliser une analyse des produits vendus par une certaine enseigne, il ne sera d’aucune utilité de conserver les autres enseignes présentes dans la base. C’est primordial de commencer par là car nettoyer des données inutiles serait une perte de temps.
Voici différentes façons de sélectionner les lignes d’intérêt :
# Sélection de l'enseigne AAA
df_enseigne = df[df["Enseigne"] == "AAA"]
# Sélection des départements 14 et 78
df_departements = df[df["Département"].isin([14,78])]
# Sélection des départements 14 et 78 pour le mois de mai
df_departements2 = df[(df["Département"].isin([14,78])) &
(df["Mois"]=="mai")]
# Sélection des départements 14 et 78 pour le mois de mai avec query
df_departements3 = df.query("Département.isin([14, 78]) &
Mois=='mai'")
Réduire le nombre de lignes par sélection peut aussi contribuer à améliorer le taux de remplissage des variables.
Réciproquement, toutes les variables ne sont pas forcément nécessaires. Commençons par les cas les plus simples : celles que nous pouvons supprimer sans nous poser de questions. C’est le cas des variables intégralement vides ou ne possédant qu’une...