问题
获取以下 pandas DataFrame 的有效方法是什么? (更新:数字每次都在变化)
alpha beta gamma
0 1.5 2.5 3.5
[1 rows x 3 columns]
动机
我在我的一些方法中添加了一个 pandas.DataFrame API,以便能够进行批量计算。
在为新 API 复制我的一些测试用例时,我的测试平台的执行时间从 200 毫秒增加到 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
请您参考如下方法:
您可以为您的测试使用一个全局数据框,只需执行 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
