Différence entre Pandas apply, map et applymap
-
pandas.DataFrame.applymap()
, etapplymap()
dans Pandas -
Méthode
map()
dans Pandas -
Méthode
apply()
dans Pandas
Ce tutoriel explique la différence entre les méthodes apply()
, map()
et applymap()
en Pandas.
La fonction associée à applymap()
est appliquée à tous les éléments du DataFrame donné, et donc la méthode applymap()
est définie pour les DataFrames uniquement. De même, la fonction associée à la méthode apply()
peut être appliquée à tous les éléments de DataFrame ou de Series
, et donc la méthode apply()
est définie à la fois pour les objets Series et DataFrame. La méthode map()
ne peut être définie que pour les objets Series
dans les Pandas.
import pandas as pd
df = pd.DataFrame(
{
"Col 1": [30, 40, 50, 60],
"Col 2": [23, 35, 65, 45],
"Col 3": [85, 87, 90, 89],
},
index=["A", "B", "C", "D"],
)
print(df, "\n")
Production :
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
Nous utiliserons le DataFrame df
affiché dans l’exemple ci-dessus pour expliquer la différence entre les méthodes apply()
, map()
, et applymap()
dans les Pandas.
pandas.DataFrame.applymap()
, et applymap()
dans Pandas
Syntaxe
DataFrame.applymap(func, na_action=None)
Il applique la fonction func
à chaque élément du DataFrame
.
Exemple : Utilisez la méthode applymap()
pour modifier les éléments d’un DataFrame
import pandas as pd
df = pd.DataFrame(
{
"Col 1": [30, 40, 50, 60],
"Col 2": [23, 35, 65, 45],
"Col 3": [85, 87, 90, 89],
},
index=["A", "B", "C", "D"],
)
print("Initial DataFrame:")
print(df, "\n")
scaled_df = df.applymap(lambda a: a * 10)
print("Scaled DataFrame:")
print(scaled_df, "\n")
Production :
Initial DataFrame:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
Scaled DataFrame:
Col 1 Col 2 Col 3
A 300 230 850
B 400 350 870
C 500 650 900
D 600 450 890
Il multiplie chaque élément de df
DataFrame et stocke le résultat dans scaled_df
DataFrame. Nous passons une fonction lambda
comme argument à la fonction applymap()
, qui retourne une valeur en multipliant l’entrée par 10
. Ainsi, chaque élément de la DataFrame df
est mis à l’échelle par 10.
Nous pouvons également utiliser la boucle for
pour itérer sur chaque élément de la DataFrame df
, mais cela rend notre code moins lisible, moins clair et moins efficace. applymap()
est une approche alternative qui rend le code plus lisible et plus efficace.
Outre les opérations mathématiques, nous pouvons également effectuer d’autres opérations sur les éléments du DataFrame.
import pandas as pd
df = pd.DataFrame(
{
"Col 1": [30, 40, 50, 60],
"Col 2": [23, 35, 65, 45],
"Col 3": [85, 87, 90, 89],
},
index=["A", "B", "C", "D"],
)
print("Initial DataFrame:")
print(df, "\n")
altered_df = df.applymap(lambda a: str(a) + ".00")
print("Altered DataFrame:")
print(altered_df, "\n")
Production :
Initial DataFrame:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
Altered DataFrame:
Col 1 Col 2 Col 3
A 30.00 23.00 85.00
B 40.00 35.00 87.00
C 50.00 65.00 90.00
D 60.00 45.00 89.00
Il ajoute .00
à la fin de chaque élément de la DataFrame df
.
Méthode map()
dans Pandas
import pandas as pd
df = pd.DataFrame(
{
"Col 1": [30, 40, 50, 60],
"Col 2": [23, 35, 65, 45],
"Col 3": [85, 87, 90, 89],
},
index=["A", "B", "C", "D"],
)
print("Initial DataFrame:")
print(df, "\n")
df["Col 1"] = df["Col 1"].map(lambda x: x / 100)
print("DataFrame after altering Col 1:")
print(df)
Production :
Initial DataFrame:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
DataFrame after altering Col 1:
Col 1 Col 2 Col 3
A 0.3 23 85
B 0.4 35 87
C 0.5 65 90
D 0.6 45 89
Nous ne pouvons utiliser la méthode map()
qu’avec la colonne particulière d’un DataFrame.
Méthode apply()
dans Pandas
Méthode apply()
pour modifier une DataFrame entière dans les pandas
import pandas as pd
df = pd.DataFrame(
{
"Col 1": [30, 40, 50, 60],
"Col 2": [23, 35, 65, 45],
"Col 3": [85, 87, 90, 89],
},
index=["A", "B", "C", "D"],
)
print("Initial DataFrame:")
print(df, "\n")
altered_df = df.apply(lambda x: x / 100)
print("Altered DataFrame:")
print(altered_df, "\n")
Production :
Initial DataFrame:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
Altered DataFrame:
Col 1 Col 2 Col 3
A 0.3 0.23 0.85
B 0.4 0.35 0.87
C 0.5 0.65 0.90
D 0.6 0.45 0.89
Méthode pour modifier une colonne particulière uniquement dans les pandas
import pandas as pd
df = pd.DataFrame(
{
"Col 1": [30, 40, 50, 60],
"Col 2": [23, 35, 65, 45],
"Col 3": [85, 87, 90, 89],
},
index=["A", "B", "C", "D"],
)
print("Initial DataFrame:")
print(df, "\n")
df["Col 1"] = df["Col 1"].apply(lambda x: x / 100)
print("DataFrame after altering Col 1:")
print(df)
Production :
Initial DataFrame:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
DataFrame after altering Col 1:
Col 1 Col 2 Col 3
A 0.3 23 85
B 0.4 35 87
C 0.5 65 90
D 0.6 45 89
Ainsi, à partir des exemples ci-dessus, nous pouvons voir que la méthode apply()
peut être utilisée pour appliquer une fonction particulière soit à tous les éléments de l’ensemble du DataFrame, soit à tous les éléments d’une colonne particulière.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArticle connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment trier le DataFrame de Pandas par les valeurs d'une colonne
- Comment obtenir l'agrégat des Pandas par groupe et par somme