Diferença entre Pandas apply, map e applymap
Este tutorial explica a diferença entre os métodos apply()
, map()
e applymap()
no Pandas.
A função associada a applymap()
é aplicada a todos os elementos do DataFrame fornecido e, portanto, o método applymap()
é definido apenas para DataFrames. Da mesma forma, a função associada ao método apply()
pode ser aplicada a todos os elementos de DataFrame ou Series
e, portanto, o método apply()
é definido para objetos Series e DataFrame. O método map()
só pode ser definido para objetos Series
no 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")
Resultado:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
Usaremos o DataFrame df
exibido no exemplo acima para explicar a diferença entre os métodos apply()
, map()
e applymap()
no Pandas.
pandas.DataFrame.applymap()
Sintaxe
DataFrame.applymap(func, na_action=None)
Ele aplica a função func
a cada elemento do DataFrame
.
Exemplo: Use o método applymap()
para alterar itens de um 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")
Resultado:
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
Ele multiplica cada elemento de df
DataFrame e armazena o resultado em scaled_df
DataFrame. Passamos uma função lambda
como um argumento para a função applymap()
, que retorna um valor multiplicando a entrada por 10
. Portanto, cada elemento do DataFrame df
é escalado em 10.
Também podemos usar o loop for
para iterar sobre cada elemento no DataFrame df
, mas torna nosso código menos legível, confuso e menos eficiente. applymap()
é uma abordagem alternativa que torna o código mais legível e eficiente.
Além das operações matemáticas, também podemos realizar outras operações nos elementos do 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")
Resultado:
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
Ele anexa .00
no final de cada elemento no DataFrame df
.
Método map()
em 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)
Resultado:
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
Só podemos usar o método map()
com a coluna particular de um DataFrame.
Método apply()
em Pandas
Método apply()
para alterar DataFrame inteiro em 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")
Resultado:
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étodo apply()
para alterar coluna particular apenas em 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)
Resultado:
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
Portanto, a partir dos exemplos acima, podemos ver que o método apply()
pode ser usado para aplicar uma função específica a todos os elementos de todo o DataFrame ou a todos os elementos de uma coluna específica.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtigo relacionado - Pandas DataFrame
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como Converter a Coluna DataFrame para DataTempo em Pandas
- Como Converter um Flutuador em um Inteiro em Pandas DataFrame
- Como Classificar Pandas DataFrame pelos Valores de uma Coluna
- Como Obter o Agregado de Pandas Group-By e Sum