Introduction
Le DataFrame est la structure de données principale de Pandas, permettant de manipuler des données tabulaires de manière intuitive et efficace. Avec ses fonctionnalités riches, Pandas simplifie le nettoyage, la transformation et l'analyse des données, en rendant les tâches complexes accessibles avec peu de code.
Dans cet article, nous allons explorer les opérations courantes de manipulation des DataFrames, notamment la sélection de données, le nettoyage, les transformations, et l'analyse.
1. Qu'est-ce qu'un DataFrame dans Pandas ?
Un DataFrame est une structure de données en deux dimensions, similaire à une table. Il contient des lignes et des colonnes, chaque colonne ayant un label unique.
Exemple de création d’un DataFrame
import pandas as pd
data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
}
df = pd.DataFrame(data)
print(df)
Sortie :
Nom | Âge | Ville | |
---|---|---|---|
0 | Alice | 25 | Paris |
1 | Bob | 30 | Lyon |
2 | Charlie | 35 | Marseille |
2. Importer et exporter des données dans un DataFrame
2.1. Lire un fichier CSV
df = pd.read_csv('fichier.csv')
print(df.head()) # Affiche les 5 premières lignes
2.2. Exporter un DataFrame en CSV
df.to_csv('output.csv', index=False)
3. Sélection et indexation dans un DataFrame
3.1. Sélection de colonnes
Vous pouvez accéder à une colonne comme à une clé de dictionnaire ou en utilisant la notation pointée.
# Sélection d'une colonne
print(df['Nom'])
# Plusieurs colonnes
print(df[['Nom', 'Âge']])
3.2. Sélection de lignes avec loc
et iloc
loc
: Sélection par label (index ou nom de colonne).iloc
: Sélection par position.
# Ligne par index
print(df.loc[0]) # Première ligne
# Sous-ensemble par label
print(df.loc[:, ['Nom', 'Ville']])
# Sous-ensemble par position
print(df.iloc[0:2, 1:3]) # Les 2 premières lignes, colonnes 1 et 2
4. Filtrer et trier les données
4.1. Filtrer les lignes
Utilisez des conditions pour extraire des lignes spécifiques.
# Filtrer les personnes de plus de 30 ans
filtre = df[df['Âge'] > 30]
print(filtre)
4.2. Trier un DataFrame
Trier par une ou plusieurs colonnes, de manière ascendante ou descendante.
# Trier par âge
tri = df.sort_values(by='Âge', ascending=False)
print(tri)
5. Ajouter, modifier et supprimer des données
5.1. Ajouter une colonne
Ajoutez une nouvelle colonne en spécifiant son nom et les valeurs.
df['Score'] = [85, 90, 95]
print(df)
5.2. Modifier des valeurs
Modifiez les données d'une colonne ou d'une ligne spécifique.
df.loc[0, 'Âge'] = 26 # Modifier l'âge de la première ligne
print(df)
5.3. Supprimer des colonnes ou des lignes
Utilisez drop
pour supprimer des colonnes ou des lignes.
# Supprimer une colonne
df = df.drop('Score', axis=1)
# Supprimer une ligne
df = df.drop(1, axis=0) # Supprime la deuxième ligne
6. Gérer les valeurs manquantes
Les valeurs manquantes (NaN) sont courantes dans les données. Pandas offre plusieurs méthodes pour les gérer.
6.1. Détecter les valeurs manquantes
print(df.isnull()) # Affiche True pour les valeurs manquantes
print(df.isnull().sum()) # Compte les valeurs manquantes par colonne
6.2. Remplacer ou supprimer les valeurs manquantes
- Remplacer les valeurs manquantes :
df['Ville'] = df['Ville'].fillna('Inconnue')
- Supprimer les lignes contenant des NaN :
df = df.dropna()
7. Opérations groupées avec groupby
La méthode groupby
est utile pour regrouper les données et appliquer des fonctions d'agrégation.
Exemple : Calculer la moyenne par ville
grouped = df.groupby('Ville')['Âge'].mean()
print(grouped)
8. Combiner plusieurs DataFrames
8.1. Concaténation de DataFrames
La méthode concat
permet d’empiler plusieurs DataFrames horizontalement ou verticalement.
df1 = pd.DataFrame({'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]})
df2 = pd.DataFrame({'Nom': ['Charlie', 'Diana'], 'Âge': [35, 40]})
# Combiner verticalement
df_combined = pd.concat([df1, df2])
print(df_combined)
8.2. Fusion (jointure) de DataFrames
Pour combiner des DataFrames sur une colonne commune, utilisez merge
.
df1 = pd.DataFrame({'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]})
df2 = pd.DataFrame({'Nom': ['Alice', 'Bob'], 'Ville': ['Paris', 'Lyon']})
df_merged = pd.merge(df1, df2, on='Nom')
print(df_merged)
9. Appliquer des fonctions aux données
Pandas permet d'appliquer des transformations personnalisées à une colonne ou à tout le DataFrame.
9.1. Utiliser apply
sur une colonne
df['Âge carré'] = df['Âge'].apply(lambda x: x ** 2)
print(df)
9.2. Appliquer des fonctions aux lignes
df['Description'] = df.apply(lambda x: f"{x['Nom']} a {x['Âge']} ans", axis=1)
print(df)
10. Exporter les données
Une fois vos données manipulées, vous pouvez les enregistrer dans divers formats.
10.1. Enregistrer en CSV
df.to_csv('output.csv', index=False)
10.2. Enregistrer en Excel
df.to_excel('output.xlsx', index=False)
Conclusion
Les DataFrames de Pandas offrent une flexibilité exceptionnelle pour manipuler et analyser des données tabulaires. Que ce soit pour nettoyer des données, effectuer des agrégations ou les combiner, Pandas simplifie chaque étape de l'analyse. En maîtrisant ces techniques, vous pouvez transformer rapidement des ensembles de données bruts en informations exploitables.