HOWTO · Pandas
Les Pandas déposent des lignes en double
Ce tutoriel explique comment nous pouvons supprimer toutes les lignes en double d'un Pandas DataFrame en utilisant la méthode DataFrame.drop_duplicates().
Sur cette page
Ce tutoriel explique comment nous pouvons supprimer tous les enregistrements en double d’un Pandas DataFrame en utilisant la méthode DataFrame.drop_duplicates().
DataFrame.drop_duplicates() Syntaxe
DataFrame.drop_duplicates(subset=None, keep="first", inplace=False, ignore_index=False)
Il renvoie un DataFrame en supprimant toutes les lignes répétées dans le DataFrame.
Supprimer les lignes en double en utilisant la méthode DataFrame.drop_duplicates()
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates()
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Production :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
Il supprime les lignes ayant les mêmes valeurs pour toutes les colonnes. Par défaut, seules les lignes ayant les mêmes valeurs pour chaque colonne dans le DataFrame sont considérées comme des doublons. Dans le DataFrame df_with_duplicates, la première et la cinquième ligne ont les mêmes valeurs pour toutes les colonnes, s que la cinquième ligne est supprimée.
Définissez le paramètre subset pour supprimer les doublons en fonction de colonnes spécifiques uniquement
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"])
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Production :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
Ici, nous passons Name comme un argument subset à la méthode drop_duplicates(). Les quatrième et cinquième lignes sont supprimées car elles ont la même valeur de la colonne Name que la première colonne.
Mettre keep='last' dans la méthode drop_duplicates()
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"], keep="last")
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Production :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
5 302 Watch 300
Il supprime toutes les lignes sauf la dernière ligne ayant la même valeur que la colonne Name.
Nous définissons keep=False pour supprimer toutes les lignes ayant la même valeur d’une colonne.
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"], keep=False)
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Résultat :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
Il supprime la première, la cinquième et la sixième ligne car elles ont toutes la même valeur pour la colonne Name.