在这里介绍一些更高级的pandas优化方法。
1 numpy
我们先来回顾一下上节说过的一个例子
import pandas as pd
import numpy as np
import time
row_number=100000
df = pd.DataFrame({'a': np.random.randn(row_number),
'b': np.random.randn(row_number),
'N': np.random.randint(100, 1000, (row_number)),
'x': np.random.randint(1, 10, (row_number))})
我们要计算a列与b列的乘积
方法1,采用apply
%timeit df.apply( lambda row: row['a']*row['b'],axis=1)
方法2,直接对series做乘法
%timeit df['a']*df['b']
方法3,使用numpy函数
%timeit np.multiply(df['a'].values,df['b'].values)
方法 | 运行时间 | 运行速度 |
---|---|---|
方法1 | 1.45s | 1 |
方法2 | 254µs | 5708 |