Python

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()] ou df[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') ou df.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.

Autres articles

Comment Gérer Efficacement le Budget Mariage avec...
Télécharger un modèle Excel automatisé de budget mariage automatisé avec...
Read more
Manipulation des Tableaux en Python avec Numpy
Numpy est une bibliothèque puissante et efficace pour la manipulation...
Read more
Expressions Régulières - Regex en Python
Les expressions régulières (ou Regex en Python ) sont un...
Read more

Laisser un commentaire

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