
Analyse exploratoire et visualisation
Apprenez à effectuer une analyse exploratoire de vos données en Python en utilisant Pandas et des bibliothèques de visualisation (Matplotlib, Seaborn). Calculez des statistiques descriptives, créez des visualisations pertinentes et identifiez les tendance
Qu'est-ce que l'analyse exploratoire des données (AED) ?
L'analyse exploratoire des données (AED, ou Exploratory Data Analysis, EDA, en anglais) est une étape cruciale de tout projet d'analyse de données ou de science des données. Elle consiste à explorer, visualiser et résumer les principales caractéristiques d'un jeu de données, afin de :
- Comprendre la structure des données.
- Identifier les tendances, les motifs, les relations et les anomalies.
- Formuler des hypothèses.
- Guider les étapes ultérieures de l'analyse (nettoyage, modélisation, etc.).
- Extraire des informations et des connaissances à partir des données.
L'AED est un processus itératif et interactif, qui implique souvent de poser des questions, de calculer des statistiques descriptives, de créer des visualisations, et d'ajuster l'approche en fonction des découvertes.
L'AED n'est pas une simple étape préliminaire, c'est une partie essentielle du processus d'analyse. Elle permet de se familiariser avec les données, de détecter les erreurs, et de générer des idées.
Statistiques descriptives avec Pandas
Pandas offre des fonctions pratiques pour calculer des statistiques descriptives sur vos données :
- `df.describe()` : Fournit des statistiques descriptives pour les colonnes numériques (nombre de valeurs, moyenne, écart-type, min, max, quartiles). Vous pouvez inclure ou exclure certains types de données avec les arguments `include` et `exclude`.
- `df.mean()`, `df.median()`, `df.std()`, `df.var()`, `df.min()`, `df.max()`, `df.sum()`, `df.count()` : Calculent respectivement la moyenne, la médiane, l'écart-type, la variance, le minimum, le maximum, la somme, et le nombre de valeurs (non nulles) pour chaque colonne. Ces fonctions peuvent être appliquées à l'ensemble du DataFrame, à une colonne spécifique, ou à un sous-ensemble de données.
- `df['colonne'].value_counts()` : Compte le nombre d'occurrences de chaque valeur unique dans une colonne (utile pour les variables catégorielles).
- `df.groupby('colonne').mean()` : Calcule la moyenne pour chaque groupe défini par une colonne. Vous pouvez appliquer d'autres fonctions d'agrégation (`sum`, `min`, `max`, `median`, `std`, etc.) après `groupby`.
Exemple :
import pandas as pd
import numpy as np
df = pd.DataFrame({
'age': [25, 30, 35, 28, 42, 30, 32],
'sexe': ['F', 'M', 'M', 'F', 'M', 'F', 'M'],
'salaire': [30000, 40000, 50000, 35000, 60000, 45000, 55000]
})
print(df.describe())
# age salaire
# count 7.000000 7.000000
# mean 31.714286 45000.000000
# std 5.736274 10801.234501
# min 25.000000 30000.000000
# 25% 29.000000 37500.000000
# 50% 30.000000 45000.000000
# 75% 33.500000 52500.000000
# max 42.000000 60000.000000
print(df['sexe'].value_counts())
# M 4
# F 3
# Name: sexe, dtype: int64
print(df.groupby('sexe')['salaire'].mean())
# sexe
# F 36666.666667
# M 51250.000000
# Name: salaire, dtype: float64Ces statistiques descriptives donnent un premier aperçu des caractéristiques des données (distribution, valeurs centrales, dispersion, etc.).
Visualisation avec Matplotlib et Seaborn
La visualisation est un outil puissant pour l'analyse exploratoire des données. Elle permet de détecter des tendances, des relations, des anomalies, et de communiquer des informations de manière intuitive.
Matplotlib et Seaborn sont deux bibliothèques Python populaires pour la visualisation de données. Seaborn est construit au-dessus de Matplotlib et offre une interface de plus haut niveau, ainsi que des styles et des types de graphiques plus avancés.
Quelques types de graphiques utiles pour l'exploration de données :
- Histogrammes : Pour visualiser la distribution d'une variable numérique.
- Nuages de points : Pour visualiser la relation entre deux variables numériques.
- Boîtes à moustaches : Pour comparer la distribution d'une variable numérique pour différentes catégories.
- Diagrammes en barres : Pour visualiser la distribution d'une variable catégorielle.
- Cartes de chaleur (heatmaps) : Pour visualiser les corrélations entre plusieurs variables numériques, ou pour représenter des données matricielles.
- Diagrammes linéaires : Pour visualiser une série temporelle
- Violin plots
- ... et bien d'autres.
Exemple (histogramme avec Matplotlib) :
import matplotlib.pyplot as plt
import numpy as np
# Générer des données aléatoires
donnees = np.random.randn(1000) # 1000 nombres aléatoires suivant une loi normale
# Créer l'histogramme
plt.hist(donnees, bins=30)
# Ajouter des titres et des étiquettes
plt.title("Histogramme de données aléatoires")
plt.xlabel("Valeur")
plt.ylabel("Fréquence")
# Afficher le graphique
plt.show()Exemple (nuage de points et droite de régression avec Seaborn) :
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
# Générer des données aléatoires
x = np.random.rand(50)
y = 2 * x + 1 + 0.1 * np.random.randn(50)
# Créer le nuage de points et la droite de régression avec Seaborn
sns.regplot(x=x, y=y)
# Afficher le graphique
plt.show()Exemple d'analyse exploratoire avec Pandas, Matplotlib et Seaborn
Voici un exemple d'analyse exploratoire simple, combinant Pandas, Matplotlib et Seaborn :
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Créer un DataFrame d'exemple (ou importer vos données)
df = pd.DataFrame({
'age': [25, 30, 35, 28, 42, 30, 32, 22, 48, 55],
'sexe': ['F', 'M', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'F'],
'salaire': [30000, 40000, 50000, 35000, 60000, 45000, 55000, 28000, 70000, 65000]
})
# Statistiques descriptives
print(df.describe())
# Distribution de l'âge (histogramme)
plt.figure()
plt.hist(df['age'], bins=5, edgecolor='black')
plt.title("Distribution de l'âge")
plt.xlabel("Age")
plt.ylabel("Nombre de personnes")
plt.show()
# Salaire en fonction de l'âge (nuage de points)
plt.figure()
plt.scatter(df['age'], df['salaire'])
plt.title("Salaire en fonction de l'âge")
plt.xlabel("Age")
plt.ylabel("Salaire")
plt.show()
# Salaire moyen par sexe (diagramme en barres)
plt.figure()
sns.barplot(x='sexe', y='salaire', data=df) # Utilisation de Seaborn
plt.title("Salaire moyen par sexe")
plt.show()
# Matrice de corrélation (carte de chaleur)
plt.figure()
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.title("Matrice de corrélation")
plt.show()Ce code effectue les opérations suivantes :
- Importe les bibliothèques nécessaires (Pandas, Matplotlib, Seaborn).
- Crée un DataFrame d'exemple (vous importeriez vos propres données à cette étape).
- Affiche des statistiques descriptives avec `df.describe()`.
- Crée un histogramme de la distribution de l'âge.
- Crée un nuage de points du salaire en fonction de l'âge.
- Crée un diagramme en barres du salaire moyen par sexe (en utilisant Seaborn).
- Crée une carte de chaleur (heatmap) de la matrice de corrélation entre les variables numériques (en utilisant Seaborn).
Cet exemple montre comment vous pouvez combiner Pandas, Matplotlib et Seaborn pour explorer rapidement vos données et identifier des tendances et des relations intéressantes.
Itérer et approfondir
L'analyse exploratoire est un processus *itératif*. Les premières visualisations et statistiques descriptives vous donneront une idée générale de vos données, et vous mèneront à poser de nouvelles questions, à créer de nouvelles visualisations, à calculer de nouvelles statistiques, etc.
N'hésitez pas à explorer différentes visualisations, à zoomer sur des parties spécifiques des données, à regrouper les données de différentes manières, et à essayer différentes approches pour découvrir des informations intéressantes.
L'analyse exploratoire est un processus créatif et interactif. Il n'y a pas de recette unique. L'important est de se familiariser avec les données, de poser des questions pertinentes, et d'utiliser les outils disponibles (statistiques, visualisations) pour y répondre.