我正在处理一个相对较大的数据集(大约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中相同数量的组进行迭代更好吗?
非常感谢!