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