为什么性能会随着数据帧的大小而降低?

时间:2019-10-02 09:15:14

标签: python pandas performance memory

我正在处理一个相对较大的数据集(大约500万个观测值,由大约5.5k的公司组成)。

我需要为每个公司运行60个月滚动窗口的OLS回归。我注意到,当我运行以下代码时,性能异常缓慢:

for idx, sub_df in master_df.groupby("firm_id"):
    # OLS code

但是,当我首先将数据帧分割为约5.5k dfs,然后在每个dfs上进行迭代时,性能得到了显着改善。

grouped_df = master_df.groupby("firm_id")
df_list = [group for group in grouped_df]

for df in df_list:
    my_df = df[1]
    # OLS code

我要花1-2周的时间(24/7)才能完成第一个版本,而顶部需要8-9小时。

任何人都可以解释为什么将主df拆分为N个较小的df,然后对每个较小的df进行迭代比对主df中相同数量的组进行迭代更好吗?

非常感谢!

0 个答案:

没有答案