Différence entre Pandas apply, map et applymap

Suraj Joshi 30 janvier 2023
  1. pandas.DataFrame.applymap(), et applymap() dans Pandas
  2. Méthode map() dans Pandas
  3. Méthode apply() dans Pandas
Différence entre Pandas apply, map et applymap

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.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Pandas DataFrame