Differenza tra Pandas apply, map e applymap
Questo tutorial spiega la differenza tra i metodi apply(), map() e applymap() in Pandas.
La funzione associata a applymap() è applicata a tutti gli elementi del dato DataFrame, e quindi il metodo applymap() è definito solo per DataFrame. Allo stesso modo, la funzione associata al metodo apply() può essere applicata a tutti gli elementi di DataFrame o Series, e quindi il metodo apply() è definito sia per gli oggetti Series che per gli oggetti DataFrame. Il metodo map() può essere definito solo per oggetti Series in 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")
Produzione:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
Useremo il DataFrame df mostrato nell’esempio sopra per spiegare la differenza tra i metodi apply(), map() e applymap() in Pandas.
pandas.DataFrame.applymap()
Sintassi
DataFrame.applymap(func, na_action=None)
Applica la funzione func ad ogni elemento del DataFrame.
Esempio: utilizzare il metodo applymap() per modificare gli elementi di 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")
Produzione:
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
Moltiplica ogni elemento di df DataFrame e memorizza il risultato in scaled_df DataFrame. Passiamo una funzione lambda come argomento alla funzione applymap(), che restituisce un valore moltiplicando l’input per 10. Quindi ogni elemento del DataFrame df viene scalato di 10.
Possiamo anche usare il cicli for per iterare su ogni elemento nel DataFrame df, ma rende il nostro codice meno leggibile, disordinato e meno efficiente. applymap() è un approccio alternativo che rende il codice più leggibile ed efficiente.
Oltre alle operazioni matematiche, possiamo anche eseguire altre operazioni sugli elementi del 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")
Produzione:
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
Aggiunge .00 alla fine di ogni elemento nel DataFrame df.
Metodo map() in 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)
Produzione:
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
Possiamo usare il metodo map() solo con la particolare colonna di un DataFrame.
Metodo apply() in Pandas
Metodo apply() per modificare l’intero DataFrame in 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")
Produzione:
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
apply() Metodo per modificare una colonna specifica solo nei 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)
Produzione:
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
Quindi, dagli esempi precedenti, possiamo vedere che il metodo apply() può essere utilizzato per applicare una particolare funzione a tutti gli elementi dell’intero DataFrame oa tutti gli elementi di una particolare colonna.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArticolo correlato - Pandas DataFrame
- Come ottenere le intestazioni delle colonne DataFrame Pandas come lista
- Come cancellare la colonna DataFrame Pandas DataFrame
- Come convertire la colonna DataFrame in data e ora in pandas
- Converti un Float in un Integer in Pandas DataFrame
- Ordina Pandas DataFrame in base ai valori di una colonna
- Ottieni l'aggregato di Pandas Group-By e Sum
