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
.
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 :
# Créer une liste
fruits = ['Pomme', 'Banane', 'Orange']
# Accéder au premier élément
print(fruits[0]) # 'Pomme'
# Accéder au dernier élément
print(fruits[-1]) # 'Orange'
# Ajouter un élément à la fin
fruits.append('Mangue')
# Insérer un élément à une position donnée
fruits.insert(1, 'Fraise')
# Supprimer un élément spécifique
fruits.remove('Banane')
# Supprimer le dernier élément
fruits.pop()
fruits.sort() # Trie par ordre alphabétique
numpy
est une bibliothèque spécialisée dans le calcul scientifique et permet de manipuler des tableaux multidimensionnels (arrays) efficacement.
import numpy as np
# Créer un tableau numpy à partir d'une liste
arr = np.array([1, 2, 3, 4, 5])
# 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()
# Créer une matrice 2x2
matrice = np.array([[1, 2], [3, 4]])
# Accéder à un élément
element = matrice[0, 1] # 2
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.
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)
# Accéder à une colonne
print(df['Nom'])
# Accéder à une ligne par index
print(df.iloc[1]) # Deuxième ligne
# Filtrer les lignes où l'âge est supérieur à 30
df_filtre = df[df['Âge'] > 30]
# Ajouter une colonne
df['Pays'] = 'France'
# Supprimer une colonne
df.drop('Ville', axis=1, inplace=True)
# 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()
Ces outils permettent de manipuler efficacement les tableaux et les données en Python, en fonction de la complexité des tâches.
Voici une liste concise des manipulations courantes avec pandas, une bibliothèque puissante pour la gestion des données tabulaires.
import pandas as pd
# Créer un DataFrame à partir d'un dictionnaire
data = {'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]}
df = pd.DataFrame(data)
df['Nom']
df.iloc[1]
df.loc['index_label']
# Filtrer les lignes où l'âge est supérieur à 25
df_filtre = df[df['Âge'] > 25]
# Ajouter une colonne
df['Ville'] = ['Paris', 'Lyon']
# Supprimer une colonne
df.drop('Ville', axis=1, inplace=True)
# Appliquer une fonction sur une colonne
df['Âge_plus_5'] = df['Âge'] + 5
# Calculer la moyenne d'une colonne après regroupement
df_grouped = df.groupby('Ville')['Âge'].mean()
# Remplacer les valeurs manquantes par 0
df.fillna(0, inplace=True)
# Supprimer les lignes contenant des valeurs manquantes
df.dropna(inplace=True)
# Trier par une colonne
df.sort_values(by='Âge', ascending=False, inplace=True)
# Fusionner deux DataFrames sur une colonne commune
df1.merge(df2, on='Nom', how='inner')
# 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.
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
.
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.
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)
Nom Âge Ville
2 Charlie 35 Marseille
3 David 40 Paris
Vous pouvez combiner plusieurs conditions avec les opérateurs logiques &
(et), |
(ou), et ~
(non). Il est important de mettre chaque condition entre parenthèses.
# 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)
Nom Âge Ville
3 David 40 Paris
isin
)La méthode isin()
permet de filtrer les lignes qui contiennent des valeurs spécifiques dans une colonne.
# Filtrer les lignes où la Ville est soit Paris soit Lyon
df_filtre = df[df['Ville'].isin(['Paris', 'Lyon'])]
print(df_filtre)
Nom Âge Ville
0 Alice 25 Paris
1 Bob 30 Lyon
3 David 40 Paris
isnull
ou notnull
)Vous pouvez également filtrer les lignes en fonction des valeurs manquantes ou non manquantes avec isnull()
et notnull()
.
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)
Nom Âge Ville
1 Bob NaN Lyon
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.
# 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)
Nom Âge Ville
3 David 40 Paris
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.
# 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)
Nom Âge Ville
3 David 40 Paris
Voici un récapitulatif des méthodes courantes pour filtrer des lignes dans pandas
:
df[df['colonne'] condition]
(df['colonne1'] condition1) & (df['colonne2'] condition2)
df[df['colonne'].isin(liste_de_valeurs)]
df[df['colonne'].isnull()]
ou df[df['colonne'].notnull()]
query()
: df.query('condition')
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.
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é.
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.
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)
Nom Âge Ville
0 Alice 25 Paris
1 Bob 30 Lyon
2 Charlie 35 Marseille
4 David 40 Lyon
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
.
# Supprimer les doublons en fonction de la colonne 'Nom'
df_sans_doublons = df.drop_duplicates(subset=['Nom'])
print(df_sans_doublons)
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’.
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'
.
# Supprimer les doublons en conservant la dernière occurrence
df_sans_doublons = df.drop_duplicates(keep='last')
print(df_sans_doublons)
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'
.
Si vous voulez supprimer les doublons directement dans le DataFrame sans créer de copie, vous pouvez utiliser le paramètre inplace=True
.
# Supprimer les doublons directement dans le DataFrame
df.drop_duplicates(inplace=True)
# Afficher le DataFrame modifié
print(df)
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.
# Supprimer les doublons en fonction des colonnes 'Nom' et 'Ville'
df_sans_doublons = df.drop_duplicates(subset=['Nom', 'Ville'])
print(df_sans_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.
# Vérifier les doublons dans le DataFrame
doublons = df.duplicated()
print(doublons)
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 :
df.drop_duplicates()
df.drop_duplicates(subset=['colonne'])
df.drop_duplicates(keep='last')
df.drop_duplicates(inplace=True)
Ces méthodes vous permettent de nettoyer vos données efficacement selon vos besoins.
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.
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()
.
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)
Nom Âge Ville
0 Alice 25.0 Paris
1 Bob 0.0 Lyon
2 Charlie 35.0 0
3 David 0.0 Marseille
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.
# 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)
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).
# Remplacer par la médiane
mediane_age = df['Âge'].median()
df['Âge'] = df['Âge'].fillna(mediane_age)
print(df)
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.
# Remplacer les valeurs manquantes dans la colonne 'Ville' par 'Inconnue'
df['Ville'] = df['Ville'].fillna('Inconnue')
print(df)
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Inconnue
3 David 30.000000 Marseille
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).
ffill
)# Remplacer les valeurs manquantes avec la valeur précédente
df_rempli = df.fillna(method='ffill')
print(df_rempli)
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Lyon
3 David 30.000000 Marseille
bfill
)# Remplacer les valeurs manquantes avec la valeur suivante
df_rempli = df.fillna(method='bfill')
print(df_rempli)
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Marseille
3 David 30.000000 Marseille
Vous pouvez passer un dictionnaire à fillna()
pour spécifier des valeurs différentes pour chaque colonne.
# 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)
Nom Âge Ville
0 Alice 25.000000 Paris
1 Bob 30.000000 Lyon
2 Charlie 35.000000 Inconnue
3 David 30.000000 Marseille
Pour éviter de créer une copie et appliquer le remplacement directement sur le DataFrame, vous pouvez utiliser le paramètre inplace=True
.
# 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 :
df.fillna(valeur)
df.fillna(df['colonne'].mean())
df['colonne'].fillna(valeur)
df.fillna(method='ffill')
ou df.fillna(method='bfill')
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.
Voici une liste étendue de mots piégeux en français, avec leurs genres et des explications…
Apprendre à distinguer le genre des noms en français peut être un véritable défi pour…
1. Informations Générales Nom complet : Charles-Louis de Secondat, Baron de La Brède et de…
Introduction L’Art de la Guerre (Dell’arte della guerra), publié en 1521, est l’un des ouvrages…
1. Informations Générales Nom complet : Niccolò Machiavelli (en français : Nicolas Machiavel) Date de…
1. Informations Générales Nom complet : Albert Camus Date de naissance : 7 novembre 1913…
This website uses cookies.