Heim > Artikel > Backend-Entwicklung > Python: So führen Sie effiziente Operationen mit Pandas durch
In diesem Artikel wird ein Vergleichstest zur Betriebseffizienz von Pandas durchgeführt, um herauszufinden, welche Methoden die Betriebseffizienz verbessern können.
Die Testumgebung ist wie folgt:
Windows 7, 64-Bit
Python 3.5
Numpy's ndarray
Methode 1: for-Schleife
import pandas as pdimport numpy as np# 100分别用 10,100,...,10,000,000来替换运行list_a = list(range(100))# 200分别用 20,200,...,20,000,000来替换运行list_b = list(range(100,200)) print(len(list_a)) print(len(list_b)) df = pd.DataFrame({'a':list_a, 'b':list_b}) print('数据维度为:{}'.format(df.shape)) print(len(df)) print(df.head())
100 100 数据维度为:(100, 2) 100 a b 0 0 100 1 1 101 2 2 102 3 3 103 4 4 104
%%timeit# 当DataFrame的行数大于等于1000000时,请用 %%time 命令for i in range(len(df)): df['a'][i]*df['a'][i]+df['b'][i]*df['b'][i]
100 loops, best of 3: 12.8 ms per loop
Methode 3: ndarray
type(df['a'])
pandas.core.series.Series
%%timeit df['a']*df['a']+df['b']*df['b']
The slowest run took 5.41 times longer than the fastest. This could mean that an intermediate result is being cached. 1000 loops, best of 3: 669 µs per loop2 Testergebnisse
type(df['a'].values)Der Unterschied zwischen Series und Ndarray ist nicht so groß.
numpy.ndarray
%%timeit df['a'].values*df['a'].values+df['b'].values*df['b'].valuesPS: Bei 10 Millionen Zeilen dauert die Ausführung der for-Schleife sehr lange. Wenn Sie sie testen möchten, müssen Sie auf
10000 loops, best of 3: 34.2 µs per loop%%time Befehl (nur einmal testen). Das folgende Diagramm vergleicht die Leistung zwischen Series und Ndarray. Wie aus der obigen Abbildung ersichtlich ist, schneidet ndarray besser ab als Series, wenn die Daten weniger als 100.000 Zeilen umfassen. Wenn die Anzahl der Datenzeilen mehr als 1 Million Zeilen beträgt, ist die Leistung von Series etwas besser als die von ndarray. Natürlich ist der Unterschied zwischen den beiden nicht besonders offensichtlich.
Unter normalen Umständen empfehle ich persönlich, wenn möglich die for-Schleife zu verwenden. Wenn die Anzahl nicht besonders groß ist, wird empfohlen, ndarray
(d. h. df['col '].values) Um Berechnungen durchzuführen, ist die Betriebseffizienz relativ besser.
Das obige ist der detaillierte Inhalt vonPython: So führen Sie effiziente Operationen mit Pandas durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!