Pandas: NumPy-Funktion auf jede Spalte anwenden

English Deutsch

Du kannst df.transform(func, axis=0) verwenden, um eine NumPy-Funktion anzuwenden. Dies nutzt die Tatsache, dass NumPy-Funktionen mit pandas Series-Objekten funktionieren.

Beispiel basierend auf How to create pandas time series DataFrame example dataset:

pandas_apply_numpy_to_columns.py
# Vordefiniertes Zeitreihen-Beispieldatenset laden
df = pd.read_csv("https://datasets.techoverflow.net/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)

# np.square wird individuell für jede Spalte aufgerufen
new_df = df.transform(np.square, axis=0)

Ausgabe

Original Zeitreihe:

Original pandas-Zeitreihen-Plot mit Sinus- und Kosinus-Spalten Quadrierte Zeitreihe:

Quadrierter pandas-Zeitreihen-Plot nach Anwendung von np.square auf jede Spalte

Vollständiger Beispielcode

pandas_apply_numpy_full.py
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

# Vordefiniertes Zeitreihen-Beispieldatenset laden
df = pd.read_csv("https://datasets.techoverflow.net/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)

# np.sqrt wird individuell für jede Spalte aufgerufen
new_df = df.transform(np.square, axis=0)

# Teilabschnitt des originalen DF für bessere Sichtbarkeit plotten
df.iloc[:len(df)//2].plot()
plt.gcf().set_size_inches(10,5)
plt.savefig("Normal-Timeseries.svg")

# Teilabschnitt des transformierten DF für bessere Sichtbarkeit plotten
new_df.iloc[:len(df)//2].plot()
plt.gcf().set_size_inches(10,5)
plt.savefig("Square-Timeseries.svg")

Check out similar posts by category: Pandas, Python