Manipulation des Tableaux en Python – Pandas
Python propose plusieurs façons de manipuler des tableaux en Python (ou listes, arrays, DataFrames), principalement à travers les structures de données natives et les bibliothèques comme numpy
et pandas
.
1. Tableaux en Python (Listes) Python natif
Les listes en Python sont des tableaux dynamiques qui permettent de stocker des collections d’éléments. Voici les opérations de base sur les listes :
a) Créer une liste
# Créer une liste
fruits = ['Pomme', 'Banane', 'Orange']
b) Accéder aux éléments
# Accéder au premier élément
print(fruits[0]) # 'Pomme'
# Accéder au dernier élément
print(fruits[-1]) # 'Orange'
c) Ajouter des éléments
# Ajouter un élément à la fin
fruits.append('Mangue')
# Insérer un élément à une position donnée
fruits.insert(1, 'Fraise')
d) Supprimer des éléments
# Supprimer un élément spécifique
fruits.remove('Banane')
# Supprimer le dernier élément
fruits.pop()
e) Trier une liste
fruits.sort() # Trie par ordre alphabétique
2. Manipulation des Tableaux avec Numpy
numpy
est une bibliothèque spécialisée dans le calcul scientifique et permet de manipuler des tableaux multidimensionnels (arrays) efficacement.
a) Créer un tableau Numpy
import numpy as np
# Créer un tableau numpy à partir d'une liste
arr = np.array([1, 2, 3, 4, 5])
b) Opérations sur les tableaux
# Ajouter 5 à chaque élément du tableau
arr_plus_5 = arr + 5
# Calculer la somme des éléments
somme = arr.sum()
# Calculer la moyenne des éléments
moyenne = arr.mean()
c) Tableaux multidimensionnels (Matrices)
# Créer une matrice 2x2
matrice = np.array([[1, 2], [3, 4]])
# Accéder à un élément
element = matrice[0, 1] # 2
3. Manipulation de Tableaux avec Pandas (DataFrames)
pandas
est une bibliothèque puissante pour manipuler des données tabulaires avec des DataFrames, qui sont des tableaux structurés avec des étiquettes de lignes et de colonnes.
a) Créer un DataFrame
import pandas as pd
# Créer un DataFrame à partir d'un dictionnaire
data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
}
df = pd.DataFrame(data)
b) Accéder aux données
# Accéder à une colonne
print(df['Nom'])
# Accéder à une ligne par index
print(df.iloc[1]) # Deuxième ligne
c) Filtrer les données
# Filtrer les lignes où l'âge est supérieur à 30
df_filtre = df[df['Âge'] > 30]
d) Ajouter et supprimer des colonnes
# Ajouter une colonne
df['Pays'] = 'France'
# Supprimer une colonne
df.drop('Ville', axis=1, inplace=True)
e) Manipulations avancées : Groupement et statistiques
# Calculer la moyenne d'une colonne
moyenne_age = df['Âge'].mean()
# Grouper par une colonne et appliquer une fonction
groupe_par_ville = df.groupby('Ville')['Âge'].mean()
- Listes : Utilisez-les pour des collections d’éléments simples et dynamiques.
- Numpy : Pour des opérations mathématiques sur des tableaux multidimensionnels.
- Pandas : Pour manipuler des ensembles de données tabulaires et réaliser des analyses avancées.
Ces outils permettent de manipuler efficacement les tableaux et les données en Python, en fonction de la complexité des tâches.
Liste des Manipulations des Tableaux en Python avec Pandas
Voici une liste concise des manipulations courantes avec pandas, une bibliothèque puissante pour la gestion des données tabulaires.
1. Création d’un DataFrame
import pandas as pd
# Créer un DataFrame à partir d'un dictionnaire
data = {'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]}
df = pd.DataFrame(data)
2. Accéder aux Données
- Accéder à une colonne :
df['Nom']
- Accéder à une ligne (par index) :
df.iloc[1]
- Accéder à une ligne (par étiquette) :
df.loc['index_label']
3. Filtrer les Données
# Filtrer les lignes où l'âge est supérieur à 25
df_filtre = df[df['Âge'] > 25]
4. Ajouter / Supprimer des Colonnes
# Ajouter une colonne
df['Ville'] = ['Paris', 'Lyon']
# Supprimer une colonne
df.drop('Ville', axis=1, inplace=True)
5. Opérations sur les Colonnes
# Appliquer une fonction sur une colonne
df['Âge_plus_5'] = df['Âge'] + 5
6. Regrouper et Agréger les Données
# Calculer la moyenne d'une colonne après regroupement
df_grouped = df.groupby('Ville')['Âge'].mean()
7. Gérer les Valeurs Manquantes
# Remplacer les valeurs manquantes par 0
df.fillna(0, inplace=True)
# Supprimer les lignes contenant des valeurs manquantes
df.dropna(inplace=True)
8. Trier les Données
# Trier par une colonne
df.sort_values(by='Âge', ascending=False, inplace=True)
9. Fusionner des DataFrames
# Fusionner deux DataFrames sur une colonne commune
df1.merge(df2, on='Nom', how='inner')
10. Exporter et Importer des Données
# Lire un fichier CSV
df = pd.read_csv('fichier.csv')
# Exporter un DataFrame en CSV
df.to_csv('fichier_exporte.csv', index=False)
Ces opérations sont essentielles pour la manipulation de données avec pandas, permettant de réaliser des analyses et transformations efficacement.
Comment filtrer les lignes dans pandas ?
En pandas
, il est très facile de filtrer des lignes en fonction de conditions spécifiques. Voici plusieurs méthodes courantes pour filtrer les lignes d’un tableau (DataFrame) dans pandas
.
1. Filtrer en fonction d’une colonne
Vous pouvez filtrer les lignes d’un DataFrame en fonction de la valeur d’une ou plusieurs colonnes. Par exemple, pour ne sélectionner que les lignes où une certaine colonne satisfait une condition.
Exemple :
import pandas as pd
# Créer un DataFrame d'exemple
data = {
'Nom': ['Alice', 'Bob', 'Charlie', 'David'],
'Âge': [25, 30, 35, 40],
'Ville': ['Paris', 'Lyon', 'Marseille', 'Paris']
}
df = pd.DataFrame(data)
# Filtrer les lignes où l'Âge est supérieur à 30
df_filtre = df[df['Âge'] > 30]
# Afficher le DataFrame filtré
print(df_filtre)
Résultat :
Nom Âge Ville
2 Charlie 35 Marseille
3 David 40 Paris
2. Filtrer avec plusieurs conditions
Vous pouvez combiner plusieurs conditions avec les opérateurs logiques &
(et), |
(ou), et ~
(non). Il est important de mettre chaque condition entre parenthèses.
Exemple :
# Filtrer les lignes où l'Âge est supérieur à 30 et la Ville est Paris
df_filtre = df[(df['Âge'] > 30) & (df['Ville'] == 'Paris')]
print(df_filtre)
Résultat :
Nom Âge Ville
3 David 40 Paris
3. Filtrer avec des valeurs spécifiques (méthode isin
)
La méthode isin()
permet de filtrer les lignes qui contiennent des valeurs spécifiques dans une colonne.
Exemple :
# Filtrer les lignes où la Ville est soit Paris soit Lyon
df_filtre = df[df['Ville'].isin(['Paris', 'Lyon'])]
print(df_filtre)
Résultat :
Nom Âge Ville
0 Alice 25 Paris
1 Bob 30 Lyon
3 David 40 Paris
4. Filtrer les lignes avec des valeurs manquantes (méthode isnull
ou notnull
)
Vous pouvez également filtrer les lignes en fonction des valeurs manquantes ou non manquantes avec isnull()
et notnull()
.
Exemple :
import numpy as np
# Ajouter des valeurs manquantes au DataFrame
df['Âge'][1] = np.nan
# Filtrer les lignes où l'Âge est manquant
df_filtre = df[df['Âge'].isnull()]
print(df_filtre)
Résultat :
Nom Âge Ville
1 Bob NaN Lyon
5. Filtrer les lignes avec query
(méthode avancée)
La méthode query()
permet de filtrer les lignes en utilisant des chaînes de caractères pour définir les conditions. Cela rend le filtrage plus lisible, surtout lorsque les conditions sont complexes.
Exemple :
# Filtrer les lignes où l'Âge est supérieur à 30 et la Ville est Paris
df_filtre = df.query('Âge > 30 and Ville == "Paris"')
print(df_filtre)
Résultat :
Nom Âge Ville
3 David 40 Paris
6. Filtrer les lignes avec une fonction personnalisée (méthode apply
)
Vous pouvez aussi utiliser la méthode apply()
pour appliquer une fonction à chaque ligne et filtrer les lignes selon des critères plus complexes.
Exemple :
# Définir une fonction pour filtrer les lignes où l'Âge est supérieur à 30
def filtre_lignes(row):
return row['Âge'] > 30 and row['Ville'] == 'Paris'
# Filtrer les lignes en appliquant la fonction
df_filtre = df[df.apply(filtre_lignes, axis=1)]
print(df_filtre)
Résultat :
Nom Âge Ville
3 David 40 Paris
Voici un récapitulatif des méthodes courantes pour filtrer des lignes dans pandas
:
- Filtrage simple :
df[df['colonne'] condition]
- Filtrage multiple :
(df['colonne1'] condition1) & (df['colonne2'] condition2)
- Filtrage par valeurs spécifiques :
df[df['colonne'].isin(liste_de_valeurs)]
- Filtrage des valeurs manquantes :
df[df['colonne'].isnull()]
oudf[df['colonne'].notnull()]
- Utilisation de
query()
:df.query('condition')
- Fonction personnalisée avec
apply()
:df[df.apply(fonction, axis=1)]
Ces techniques vous permettent de manipuler et d’analyser vos données efficacement en fonction de critères spécifiques.
Comment supprimer les doublons dans pandas ?
Pour supprimer les doublons dans un DataFrame pandas
, vous pouvez utiliser la méthode drop_duplicates()
. Cette méthode permet de supprimer les lignes qui sont identiques selon une ou plusieurs colonnes. Voici un guide sur la manière d’utiliser cette fonctionnalité.
1. Supprimer les doublons sur toutes les colonnes
Si vous souhaitez supprimer les doublons dans l’ensemble des lignes (en prenant en compte toutes les colonnes), vous pouvez utiliser drop_duplicates()
sans spécifier de colonnes particulières.
Exemple :
import pandas as pd
# Créer un DataFrame avec des doublons
data = {
'Nom': ['Alice', 'Bob', 'Charlie', 'Alice', 'David'],
'Âge': [25, 30, 35, 25, 40],
'Ville': ['Paris', 'Lyon', 'Marseille', 'Paris', 'Lyon']
}
df = pd.DataFrame(data)
# Supprimer les doublons
df_sans_doublons = df.drop_duplicates()
# Afficher le DataFrame sans doublons
print(df_sans_doublons)
Résultat :
Nom Âge Ville
0 Alice 25 Paris
1 Bob 30 Lyon
2 Charlie 35 Marseille
4 David 40 Lyon
2. Supprimer les doublons en fonction d’une ou plusieurs colonnes spécifiques
Si vous souhaitez supprimer les doublons en fonction de certaines colonnes uniquement (et ignorer les autres colonnes), vous pouvez spécifier ces colonnes avec le paramètre subset
.
Exemple :
# Supprimer les doublons en fonction de la colonne 'Nom'
df_sans_doublons = df.drop_duplicates(subset=['Nom'])
print(df_sans_doublons)
Résultat :
Nom Âge Ville
0 Alice 25 Paris
1 Bob 30 Lyon
2 Charlie 35 Marseille
4 David 40 Lyon
Dans cet exemple, même si ‘Alice’ apparaît deux fois, seule la première occurrence est conservée, car le filtre est basé uniquement sur la colonne ‘Nom’.
3. Conserver la dernière occurrence d’un doublon
Par défaut, drop_duplicates()
conserve la première occurrence de chaque doublon et supprime les suivantes. Si vous souhaitez conserver la dernière occurrence à la place, vous pouvez utiliser le paramètre keep='last'
.
Exemple :
# Supprimer les doublons en conservant la dernière occurrence
df_sans_doublons = df.drop_duplicates(keep='last')
print(df_sans_doublons)
Résultat :
Nom Âge Ville
1 Bob 30 Lyon
2 Charlie 35 Marseille
3 Alice 25 Paris
4 David 40 Lyon
Dans ce cas, la deuxième occurrence de ‘Alice’ est conservée, car keep='last'
.
4. Supprimer les doublons sur place
Si vous voulez supprimer les doublons directement dans le DataFrame sans créer de copie, vous pouvez utiliser le paramètre inplace=True
.
Exemple :
# Supprimer les doublons directement dans le DataFrame
df.drop_duplicates(inplace=True)
# Afficher le DataFrame modifié
print(df)
5. Gérer les doublons en fonction de plusieurs colonnes
Vous pouvez également spécifier plusieurs colonnes pour filtrer les doublons. Cela vous permet de conserver uniquement les lignes qui sont uniques en fonction d’une combinaison de colonnes.
Exemple :
# Supprimer les doublons en fonction des colonnes 'Nom' et 'Ville'
df_sans_doublons = df.drop_duplicates(subset=['Nom', 'Ville'])
print(df_sans_doublons)
6. Vérifier la présence de doublons
Avant de supprimer les doublons, vous pouvez vérifier quelles lignes sont des doublons en utilisant duplicated()
, qui retourne un masque booléen indiquant si une ligne est un doublon ou non.
Exemple :
# Vérifier les doublons dans le DataFrame
doublons = df.duplicated()
print(doublons)
Résultat :
0 False
1 False
2 False
3 True
4 False
dtype: bool
Cela montre que la 4ème ligne (index 3) est un doublon.
Pour supprimer les doublons dans pandas
, vous pouvez utiliser drop_duplicates()
de différentes manières :
- Supprimer tous les doublons :
df.drop_duplicates()
- Supprimer les doublons en fonction d’une colonne :
df.drop_duplicates(subset=['colonne'])
- Conserver la dernière occurrence des doublons :
df.drop_duplicates(keep='last')
- Supprimer les doublons directement dans le DataFrame :
df.drop_duplicates(inplace=True)
Ces méthodes vous permettent de nettoyer vos données efficacement selon vos besoins.
Comment remplacer les valeurs manquantes ?
En pandas
, il est courant de rencontrer des valeurs manquantes dans les jeux de données. Ces valeurs manquantes peuvent être remplacées de différentes façons en fonction du contexte et des besoins. La méthode principale pour cela est fillna()
. Voici un guide détaillé sur les différentes façons de remplacer les valeurs manquantes dans un DataFrame.
1. Remplacer les valeurs manquantes par une valeur spécifique
Si vous souhaitez remplacer toutes les valeurs manquantes (NaN
) par une valeur spécifique (comme 0
, une chaîne de caractères, ou une moyenne), vous pouvez utiliser fillna()
.
Exemple :
import pandas as pd
import numpy as np
# Créer un DataFrame avec des valeurs manquantes
data = {
'Nom': ['Alice', 'Bob', 'Charlie', 'David'],
'Âge': [25, np.nan, 35, np.nan],
'Ville': ['Paris', 'Lyon', np.nan, 'Marseille']
}
df = pd.DataFrame(data)
# Remplacer les valeurs manquantes par une valeur spécifique
df_rempli = df.fillna(0)
print(df_rempli)
Résultat :
Nom Âge Ville
0 Alice 25.0 Paris
1 Bob 0.0 Lyon
2 Charlie 35.0 0
3 David 0.0 Marseille
2. Remplacer les valeurs manquantes par la moyenne ou la médiane d’une colonne
Dans les cas où vous travaillez avec des données numériques, vous pouvez vouloir remplacer les valeurs manquantes par la moyenne, la médiane, ou d’autres statistiques de la colonne.
Exemple : remplacer par la moyenne
# Remplacer les valeurs manquantes de la colonne 'Âge' par la moyenne de la colonne
moyenne_age = df['Âge'].mean()
df['Âge'] = df['Âge'].fillna(moyenne_age)
print(df)
Résultat :
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 NaN
3 David 30.000000 Marseille
Ici, la valeur manquante dans la colonne Âge
a été remplacée par la moyenne (qui est 30).
Exemple : remplacer par la médiane
# Remplacer par la médiane
mediane_age = df['Âge'].median()
df['Âge'] = df['Âge'].fillna(mediane_age)
print(df)
3. Remplacer les valeurs manquantes dans des colonnes spécifiques
Si vous souhaitez ne remplacer les valeurs manquantes que dans certaines colonnes, vous pouvez utiliser fillna()
de manière sélective sur une ou plusieurs colonnes.
Exemple :
# Remplacer les valeurs manquantes dans la colonne 'Ville' par 'Inconnue'
df['Ville'] = df['Ville'].fillna('Inconnue')
print(df)
Résultat :
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Inconnue
3 David 30.000000 Marseille
4. Remplacer les valeurs manquantes avec une méthode (propagation)
pandas
permet également de remplacer les valeurs manquantes en utilisant une propagation des valeurs voisines avec les options method='ffill'
(forward fill) et method='bfill'
(backward fill).
Remplissage par la valeur précédente (ffill
)
# Remplacer les valeurs manquantes avec la valeur précédente
df_rempli = df.fillna(method='ffill')
print(df_rempli)
Résultat :
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Lyon
3 David 30.000000 Marseille
Remplissage par la valeur suivante (bfill
)
# Remplacer les valeurs manquantes avec la valeur suivante
df_rempli = df.fillna(method='bfill')
print(df_rempli)
Résultat :
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Marseille
3 David 30.000000 Marseille
5. Remplacer les valeurs manquantes avec des valeurs différentes pour chaque colonne
Vous pouvez passer un dictionnaire à fillna()
pour spécifier des valeurs différentes pour chaque colonne.
Exemple :
# Remplacer les valeurs manquantes avec des valeurs différentes pour chaque colonne
df_rempli = df.fillna({'Âge': df['Âge'].mean(), 'Ville': 'Inconnue'})
print(df_rempli)
Résultat :
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Inconnue
3 David 30.000000 Marseille
6. Remplacer directement dans le DataFrame (inplace=True)
Pour éviter de créer une copie et appliquer le remplacement directement sur le DataFrame, vous pouvez utiliser le paramètre inplace=True
.
Exemple :
# Remplacer les valeurs manquantes dans la colonne 'Âge' par la moyenne directement dans le DataFrame
df.fillna(df['Âge'].mean(), inplace=True)
print(df)
Pour remplacer les valeurs manquantes dans un DataFrame pandas
, voici les principales techniques :
- Remplacer par une valeur spécifique :
df.fillna(valeur)
- Remplacer par une statistique (moyenne, médiane, etc.) :
df.fillna(df['colonne'].mean())
- Remplacer dans une colonne spécifique :
df['colonne'].fillna(valeur)
- Remplacer avec une méthode de propagation :
df.fillna(method='ffill')
oudf.fillna(method='bfill')
- Remplacer avec des valeurs différentes pour chaque colonne :
df.fillna({'colonne1': valeur1, 'colonne2': valeur2})
Ces méthodes autour des – Tableaux en Python – permettent de traiter efficacement les valeurs manquantes en fonction de vos besoins dans un jeu de données.