Unterschied zwischen Pandas apply, map und applymap
In diesem Tutorial wird der Unterschied zwischen den Methoden apply()
, map()
und applymap()
in Pandas erklärt.
Die Funktion, die mit applymap()
assoziiert ist, wird auf alle Elemente des gegebenen DataFrames angewendet, und daher ist die Methode applymap()
nur für DataFrames definiert. In ähnlicher Weise kann die Funktion, die der Methode apply()
zugeordnet ist, auf alle Elemente von DataFrame oder Series
angewendet werden, und daher ist die Methode apply()
sowohl für Series- als auch für DataFrame-Objekte definiert. Die Methode map()
kann in Pandas nur für Series
-Objekte definiert werden.
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")
Ausgabe:
Col 1 Col 2 Col 3
A 30 23 85
B 40 35 87
C 50 65 90
D 60 45 89
Wir werden den Unterschied zwischen den Methoden apply()
, map()
und applymap()
in Pandas anhand des DataFrame df
aus dem obigen Beispiel erklären.
pandas.DataFrame.applymap()
Syntax
DataFrame.applymap(func, na_action=None)
Sie wendet die Funktion func
auf jedes Element des DataFrame
an.
Beispiel: Verwenden der Methode applymap()
zum Ändern von Elementen eines DataFrames
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")
Ausgabe:
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
Sie multipliziert jedes Element des df
DataFrame und speichert das Ergebnis im scaled_df
DataFrame. Wir übergeben eine lambda
-Funktion als Argument an die Funktion applymap()
, die einen Wert durch Multiplikation der Eingabe mit 10
zurückgibt. Jedes Element des DataFrame df
wird also mit 10 skaliert.
Wir können auch die for
-Schleife verwenden, um über jedes Element im DataFrame df
zu iterieren, aber das macht unseren Code weniger lesbar, unübersichtlich und weniger effizient. applymap()
ist ein alternativer Ansatz, der den Code lesbarer und effizienter macht.
Neben mathematischen Operationen können wir auch andere Operationen mit den Elementen des DataFrame durchführen.
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")
Ausgabe:
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
Es wird .00
an das Ende jedes Elements im DataFrame df
angehängt.
Methode 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)
Ausgabe:
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
Wir können die Methode map()
nur mit der jeweiligen Spalte eines DataFrame verwenden.
apply()
Methode in Pandas
Methode apply()
zum Ändern des gesamten DataFrames 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")
Ausgabe:
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()
Methode, um nur eine bestimmte Spalte in Pandas zu ändern
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)
Ausgabe:
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
Aus den obigen Beispielen geht hervor, dass die Methode apply()
verwendet werden kann, um eine bestimmte Funktion entweder auf alle Elemente des gesamten DataFrame oder auf alle Elemente einer bestimmten Spalte anzuwenden.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInVerwandter Artikel - Pandas DataFrame
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- Wie konvertiert man eine Fließkommazahl in eine Ganzzahl in Pandas DataFrame
- Wie man Pandas-DataFrame nach den Werten einer Spalte sortiert
- Wie erhält man das Aggregat der Pandas gruppenweise und sum