Python Pandas - Funktionsanwendung
Um die Funktionen Ihrer eigenen oder einer anderen Bibliothek auf Pandas-Objekte anzuwenden, sollten Sie die drei wichtigen Methoden kennen. Die Methoden wurden unten diskutiert. Die geeignete Methode hängt davon ab, ob Ihre Funktion einen gesamten DataFrame, zeilen- oder spaltenweise oder elementweise ausführen soll.
- Tabelle weise Funktion Anwendung: pipe ()
- Zeilen- oder spaltenweise Funktionsanwendung: apply ()
- Elementweise Funktion Anwendung: applymap ()
Tabellenweise Funktionsanwendung
Benutzerdefinierte Operationen können ausgeführt werden, indem die Funktion und die entsprechende Anzahl von Parametern als Pipe-Argumente übergeben werden. Somit wird die Operation für den gesamten DataFrame ausgeführt.
Fügen Sie beispielsweise allen Elementen im DataFrame den Wert 2 hinzu. Dann,
Addiererfunktion
Die Addiererfunktion fügt zwei numerische Werte als Parameter hinzu und gibt die Summe zurück.
def adder(ele1,ele2):
return ele1+ele2
Wir werden nun die benutzerdefinierte Funktion verwenden, um Operationen am DataFrame durchzuführen.
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
Sehen wir uns das vollständige Programm an -
import pandas as pd
import numpy as np
def adder(ele1,ele2):
return ele1+ele2
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
print df.apply(np.mean)
Es ist output ist wie folgt -
col1 col2 col3
0 2.176704 2.219691 1.509360
1 2.222378 2.422167 3.953921
2 2.241096 1.135424 2.696432
3 2.355763 0.376672 1.182570
4 2.308743 2.714767 2.130288
Zeilen- oder spaltenweise Funktionsanwendung
Mit dem können beliebige Funktionen entlang der Achsen eines DataFrames oder Panels angewendet werden apply()Methode, die wie die deskriptiven Statistikmethoden ein optionales Achsenargument verwendet. Standardmäßig wird die Operation spaltenweise ausgeführt, wobei jede Spalte als Array-ähnlich betrachtet wird.
Beispiel 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean)
print df.apply(np.mean)
Es ist output ist wie folgt -
col1 -0.288022
col2 1.044839
col3 -0.187009
dtype: float64
Durch vorbei axis Parameter können Operationen zeilenweise ausgeführt werden.
Beispiel 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean,axis=1)
print df.apply(np.mean)
Es ist output ist wie folgt -
col1 0.034093
col2 -0.152672
col3 -0.229728
dtype: float64
Beispiel 3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(lambda x: x.max() - x.min())
print df.apply(np.mean)
Es ist output ist wie folgt -
col1 -0.167413
col2 -0.370495
col3 -0.707631
dtype: float64
Elementweise Funktionsanwendung
Nicht alle Funktionen können vektorisiert werden (weder die NumPy-Arrays, die ein anderes Array zurückgeben, noch ein Wert), die Methoden applymap() auf DataFrame und analogously map() on Series akzeptiert alle Python-Funktionen, die einen einzelnen Wert annehmen und einen einzelnen Wert zurückgeben.
Beispiel 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
# My custom function
df['col1'].map(lambda x:x*100)
print df.apply(np.mean)
Es ist output ist wie folgt -
col1 0.480742
col2 0.454185
col3 0.266563
dtype: float64
Beispiel 2
import pandas as pd
import numpy as np
# My custom function
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.applymap(lambda x:x*100)
print df.apply(np.mean)
Es ist output ist wie folgt -
col1 0.395263
col2 0.204418
col3 -0.795188
dtype: float64