Diferença entre Pandas apply, map e applymap

  1. pandas.DataFrame.applymap()
  2. Método map() em Pandas
  3. Método apply() em Pandas

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.

Artigo 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