Manipulation des DataFrames avec Pandas

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ÂgeVille
0Alice25Paris
1Bob30Lyon
2Charlie35Marseille

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *