Skip to main content
 首页 » 编程设计

python之快速 pandas.DataFrame 初始化

2025年05月04日10jiqing9006

问题

获取以下 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