获取以下pandas DataFrame的有效方法是什么? (更新:每次更改数字)
alpha beta gamma
0 1.5 2.5 3.5
[1 rows x 3 columns]
我为我的一些方法添加了一个pandas.DataFrame API,可以批量进行计算。
在为新API复制一些测试用例时,我的测试平台的执行时间从200ms增加到超过8秒。在进行配置文件运行时,我注意到主要原因是创建了20k pandas.DataFrame
个对象。
参见比较
In [1]: import pandas as pd
In [2]: timeit pd.DataFrame({'alpha': 1.5, 'beta': 2.5, 'gamma': 3.5}, [0])
1000 loops, best of 3: 405 us per loop
In [3]: timeit {'alpha': 1.5, 'beta': 2.5, 'gamma': 3.5}
1000000 loops, best of 3: 200 ns per loop
似乎创建一个DataFrame对象比低级结构慢2000倍。我试图优化它,但这和我一样快:
In [4]: import numpy as np
In [5]: timeit pd.DataFrame(np.array([[1.5, 2.5, 3.5]]), columns=['alpha', 'beta', 'gamma'])
1000 loops, best of 3: 144 us per loop
这仍然比dict慢720倍。有可能更快吗?例如,创建numpy数组只慢了10倍:
In [6]: timeit np.array([[1.5, 2.5, 3.5]])
100000 loops, best of 3: 1.99 us per loop
答案 0 :(得分:1)
您可以拥有测试的全局数据框,只需执行df = global_df.copy()
,例如:
In[1] global_df = pd.DataFrame({'alpha': 1.5, 'beta': 2.5, 'gamma': 3.5}, [0])
In[2] timeit global_df.copy()
10000 loops, best of 3: 20.2 us per loop