English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Beispiel für Pandas-Reindexing-Operation
Um Ihre eigenen oder Funktionen aus anderen Bibliotheken auf Pandas-Objekte anzuwenden, sollten Sie drei wichtige Methoden verstehen. Wie nachstehend beschrieben. Die angemessene Methode hängt davon ab, ob Ihre Funktion den gesamten Datensatz, Zeilenoperationen, Spaltenoperationen oder Elementoperationen durchführen soll.
Tabellenfunktionen Anwendung: pipe() Zeilen- oder Spaltenfunktionen Anwendung: apply() Elementebene Funktionsanwendung: applymap()
Durch Übergeben einer Funktion und der erforderlichen Anzahl von Parametern als Pipe-Parameter kann auf eine benutzerdefinierte Operation an DataFrames zugegriffen werden
Zum Beispiel, den2Werte werden in den DataFrame hinzugefügt. Die Funktion des Adders addiert zwei numerische Werte und gibt die Summe zurück.
def adder(ele1,ele2) return ele1+ele2
Wir verwenden benutzerdefinierte Funktionen, um mit DataFrames umzugehen.
df = pd.DataFrame(np.random.randn(5,3)),columns=['col1','col2','col3']) df.pipe(adder,2)
Lassen Sie uns das vollständige Programm betrachten:
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))
Laufender Ergebnis:
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
Mit dem apply() Method kann eine beliebige Funktion entlang der Achse eines DataFrames oder Panels angewendet werden. Diese Methode ist wie beschreibende Statistikmethoden, die optionalen axis Parameter verwenden. Standardmäßig wird diese Operation zeilenweise ausgeführt und jede Spalte wird als Arrayähnliche Form behandelt.
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))
Laufender Ergebnis:
col1 -0.288022 col2 1.044839 col3 -0.187009 dtype: float64
Durch Übermittlung des axis-Parameters kann die Operation zeilenweise ausgeführt werden.
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))
Laufender Ergebnis:
col1 0.034093 col2 -0.152672 col3 -0.229728 dtype: float64
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))
Laufender Ergebnis:
col1 -0.167413 col2 -0.370495 col3 -0.707631 dtype: float64
Nicht alle Funktionen können vectorisiert werden (NumPy-Arrays geben weder ein weiteres Array zurück noch irgendeinen Wert zurück), das applymap() -Verfahren auf DataFrames und das map() -Verfahren auf Series akzeptieren ebenfalls jede Python-Funktion, die einen einzelnen Wert annimmt und einen einzelnen Wert zurückgibt.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3)),columns=['col1','col2','col3']) # Benutzerdefinierte Funktion df['col1'].map(lambda x:x*100) print(df.apply(np.mean))
Laufender Ergebnis:
col1 0.480742 col2 0.454185 col3 0.266563 dtype: float64
import pandas as pd import numpy as np # Benutzerdefinierte Funktion df = pd.DataFrame(np.random.randn(5,3)),columns=['col1','col2','col3']) df.applymap(lambda x:x*100) print(df.apply(np.mean))
Laufender Ergebnis:
col1 0.395263 col2 0.204418 col3 -0.795188 dtype: float64