在实际部署的时候,使用dataframe的计算效率明显低于numpy,因此在程序中大量运行时避免使用pandas.Series
与pandas.DataFrame
及频繁的构造,避免、替换的方法如下:
-
使用
numpy.ndarry
替换pandas.Series
,在需要使用series的地方都用ndarry数组计算 -
使用滑动计算时,使用numpy的如下方法替换:
np.roll(array, 1) # 向后搓一位(此时最后面的到最前面) np.roll(array, -1) # 向前搓一位(此时第一位到最末尾,第二位到第一位)
示例:计算增长率
array = np.array([2.3, 3.2, 2.8, 3.0, 4]) growth_rate = (array - np.roll(array, 1)) / np.roll(array, 1) * 100 growth_rate[0] = 0 print(growth_rate)
-
使用
DataFrame
的apply时,替换成for循环的ndarry计算,手动加一个多线程要远比使用pandas快 -
使用到
DataFrame
的多个维度的数据时,使用python dict
替代,就是把字典key当成Dataframe的列名称,value当成列的值