Analyse de données avec Pandas
1 Analyse de Données avec Pandas
1.1 Introduction
Pandas est une bibliothèque open-source essentielle en Python pour la manipulation et l’analyse de données. Elle permet de travailler avec des ensembles de données sous forme de tableaux en offrant des outils puissants pour nettoyer, transformer et analyser les données efficacement.
Pourquoi utiliser Pandas ?
- Facilité de manipulation : Pandas simplifie la manipulation des données tabulaires (issues de fichiers CSV, Excel, bases de données, etc.).
- Performance : Pandas est optimisé pour gérer de grandes quantités de données bien plus rapidement que les structures classiques comme les listes Python.
- Interopérabilité : Compatible avec NumPy, Matplotlib, SQL, et d’autres bibliothèques de data science.
Objectifs du cours : - Comprendre les structures de Pandas : Series et DataFrame. - Apprendre à charger, explorer et manipuler des données. - Effectuer des analyses et transformations avancées.
1.2 Installation et Importation
Si Pandas n’est pas encore installé, vous pouvez l’ajouter à votre environnement Python avec la commande suivante :
Une fois installé, importez Pandas :
L’alias pd
est une convention utilisée pour simplifier l’appel aux fonctions de la bibliothèque.
1.3 Création et Chargement des Données
Pandas offre plusieurs méthodes pour créer des jeux de données ou les charger depuis divers formats.
Création d’un DataFrame
Un DataFrame est une table composée de lignes et de colonnes, similaire à une feuille de calcul Excel ou une base de données SQL.
data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Salaire': [50000, 60000, 70000]
}
df = pd.DataFrame(data)
print(df)
Pourquoi utiliser un DataFrame ? - Il permet de manipuler facilement des données hétérogènes. - Il est conçu pour des opérations analytiques rapides et intuitives.
Chargement des Données à partir de Fichiers
Pandas permet de lire des fichiers de différents formats : CSV, Excel, JSON, SQL, etc.
# Charger un fichier CSV
df = pd.read_csv("data.csv")
# Charger un fichier Excel
df = pd.read_excel("data.xlsx")
Exercice 1 : - Chargez un fichier CSV et affichez ses premières lignes. - Affichez le nombre total de lignes et de colonnes.
1.4 Sélection et Filtrage des Données
L’accès aux données est une étape essentielle pour manipuler efficacement un DataFrame.
Sélection des Colonnes
Vous pouvez sélectionner une colonne spécifique comme suit :
Pour sélectionner plusieurs colonnes :
Sélection des Lignes avec .loc
et .iloc
Différence entre .loc
et .iloc
.loc
sélectionne les données par étiquette (nom des lignes ou colonnes)..iloc
sélectionne les données par indice numérique.
Exemples :
# Sélection par étiquette avec loc
df.loc[0] # Sélectionne la première ligne
# Sélection par index numérique avec iloc
df.iloc[0] # Sélectionne la première ligne
Sélection de plusieurs lignes :
df.loc[1:2] # Sélectionne les lignes 1 à 2 (inclus)
df.iloc[0:2] # Sélectionne les deux premières lignes
Exercice 2 : - Sélectionnez toutes les personnes ayant un salaire supérieur à 50 000. - Affichez uniquement les colonnes ‘Nom’ et ‘Âge’.
1.5 Transformation et Nettoyage des Données
Les jeux de données réels sont souvent incomplets ou mal structurés. Pandas offre des outils pour les corriger.
Gestion des Valeurs Manquantes
df.isnull().sum() # Compter les valeurs manquantes
df.fillna(df.mean(), inplace=True) # Remplacer les NaN par la moyenne
Pourquoi gérer les valeurs manquantes ? - Les valeurs manquantes peuvent fausser les résultats d’analyse. - Pandas permet de les remplacer ou les supprimer intelligemment.
Ajout et Suppression de Colonnes
df['Revenu Annuel'] = df['Salaire'] * 12 # Ajouter une colonne
df.drop(columns=['Âge'], inplace=True) # Supprimer une colonne
Pourquoi manipuler les colonnes ? - Permet de calculer de nouvelles métriques. - Aide à nettoyer les données pour faciliter l’analyse.
Exercice 3 : - Remplacez les valeurs NaN par la médiane. - Ajoutez une colonne calculant le double du salaire.
1.6 Gestion des indices
Pandas permet de manipuler et personnaliser les indices d’un DataFrame pour optimiser l’analyse des données.
Modification de l’index
Réinitialisation de l’index
Pourquoi utiliser des indices personnalisés ? - Permet d’accéder plus rapidement aux lignes spécifiques. - Facilite les jointures et les regroupements de données.
1.7 Tri et ordonnancement des données
Pandas permet de trier les données selon différentes colonnes.
Trier selon une colonne
Trier selon l’index
Pourquoi trier les données ?
- Facilite l’interprétation des résultats.
- Permet d’optimiser certaines analyses.
1.8 Optimisation et performances
Pandas permet d’améliorer les performances des manipulations de données.
Utilisation des types category
Pourquoi utiliser category
?
- Permet de réduire la mémoire utilisée.
- Optimise les opérations de regroupement.
Chargement efficace de fichiers volumineux
Pourquoi charger en morceaux ?
- Évite de saturer la mémoire RAM.
- Facilite le traitement de très gros fichiers.
1.9 Exportation des données
Pandas permet d’exporter facilement les résultats de l’analyse sous différents formats.
df.to_csv('output.csv', index=False) # Sauvegarde en CSV
df.to_excel('output.xlsx', index=False) # Sauvegarde en Excel
df.to_json('output.json') # Sauvegarde en JSON
Pourquoi exporter les données ?
- Facilite le partage et la réutilisation des résultats.
- Permet de documenter le travail réalisé.
1.10 GroupBy et Agrégations
Pandas facilite le regroupement des données et leur analyse statistique.
Agrégation par GroupBy
Pourquoi utiliser GroupBy ?
- Permet d’analyser des tendances et de comparer des groupes.
Statistiques Avancées
Pourquoi les statistiques sont utiles ?
- Aident à détecter les tendances et anomalies.
Exercice 4 :
- Trouvez la moyenne des salaires par groupe.
- Identifiez la personne ayant le salaire le plus élevé.
1.11 Jointures et Fusion de Données
Lorsqu’on travaille avec plusieurs ensembles de données, il est souvent nécessaire de les fusionner pour obtenir une vue d’ensemble cohérente. Pandas offre plusieurs méthodes pour combiner des DataFrames.
La méthode merge()
La méthode merge()
permet de fusionner deux DataFrames sur une colonne commune.
Types de Jointures
Pandas permet plusieurs types de jointures similaires aux bases de données SQL :
- Inner Join (Intersection) : Ne garde que les valeurs communes aux deux DataFrames.
- Left Join (Jointure à gauche) : Conserve toutes les lignes du premier DataFrame et ajoute les correspondances du second.
- Right Join (Jointure à droite) : Conserve toutes les lignes du second DataFrame et ajoute les correspondances du premier.
- Outer Join (Jointure complète) : Conserve toutes les données des deux DataFrames, même celles sans correspondance.
Concaténation de DataFrames
Parfois, il est nécessaire de concaténer des DataFrames, c’est-à-dire les empiler verticalement ou horizontalement.
df3 = pd.DataFrame({'ID': [4, 5], 'Nom': ['David', 'Emma']})
concat_vertical = pd.concat([df1, df3], ignore_index=True)
print(concat_vertical)
Pourquoi utiliser concat()
?
- Utile lorsqu’on dispose de plusieurs fichiers contenant des données similaires et qu’on souhaite les regrouper.
- Permet de fusionner facilement des ensembles de données de manière efficace.
Jointure Multi-index
Dans certains cas, la fusion se fait sur plusieurs colonnes :
df1 = pd.DataFrame({'ID': [1, 2, 3], 'Nom': ['Alice', 'Bob', 'Charlie'], 'Ville': ['Paris', 'Lyon', 'Marseille']})
df2 = pd.DataFrame({'ID': [1, 2, 3], 'Ville': ['Paris', 'Lyon', 'Marseille'], 'Salaire': [50000, 60000, 70000]})
fusion_multi = pd.merge(df1, df2, on=['ID', 'Ville'])
print(fusion_multi)
Exercice 5 :
- Créez deux DataFrames et appliquez différents types de jointures.
- Testez la concaténation avec des DataFrames ayant des colonnes différentes.
1.12 Conclusion
Ce cours vous a permis d’apprendre à :
- Charger et manipuler des ensembles de données.
- Effectuer des analyses exploratoires et des transformations.
- Nettoyer les données et appliquer des techniques avancées.
- Fusionner et joindre plusieurs ensembles de données pour une analyse plus complète.