Warum ist die Anwendungsfunktion der Panda so langsam, wenn sie über eine ganze Zeile iteriert, und nicht eine bestimmte

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum ist die Anwendungsfunktion der Panda so langsam, wenn sie über eine ganze Zeile iteriert, und nicht eine bestimmte

by Anonymous » 08 Aug 2025, 00:04

Meine Intuition bei der Verwendung von Pandas ist, dass es optimaler ist, alle Antragsvorgänge in einem Anruf zu gruppieren, wenn Sie df.apply verwenden müssen. Dies wurde weiter verstärkt, indem ich erfuhr, dass Numpy Daten in einer Reihe von Zeilen und Major speichert, und damit das Aufrufen von Anwenden über eine ganze Zeile von der räumlichen Zeitlichkeit profitieren würde. Nach meiner Erfahrung ist es jedoch deutlich langsamer, anwenden in einer Funktion zu kombinieren, und es ist optimaler, in jeder Spalte die Anwendung separat aufzurufen. Erhöhen Sie. < /p>

Code: Select all

import pandas as pd
import numpy as np
import time

df = pd.DataFrame(
data = np.random.randint(0, 100, size=(1000, 5)).astype(float),
columns = [f'col{i}' for i in range(1, 6)]
)

def apply_row(row):
row['col1'] = row['col1'] * 2 + 3
row['col2'] = row['col2'] + 5
row['col3'] = row['col3'] - 1
row['col4'] = row['col4'] / 2
row['col5'] = row['col5'] ** 2
return row

start = time.time()
df.apply(apply_row, axis=1)
end = time.time()
print(f"Row-based time: {end - start} seconds")

start = time.time()
df['col1'] = df['col1'].apply(lambda x: x* 2 + 3)
df['col2'] = df['col2'].apply(lambda x: x + 5)
df['col3'] = df['col3'].apply(lambda x: x - 1)
df['col4'] = df['col4'].apply(lambda x: x / 2)
df['col5'] = df['col5'].apply(lambda x: x ** 2)
end = time.time()
print(f"Column-based time: {end - start} seconds")
Ich erkenne natürlich, dass die Operationen im obigen Snippet nicht anwenden . Aber der Punkt bleibt und ich stelle mir vor, dass String -Operationen noch signifikantere Leistungsunterschiede sehen.>

Top