Я работаю с относительно большим набором данных (около 5 м наблюдений, составленных из примерно 5,5 тыс. Фирм).
Мне нужно было запустить регрессии OLS с 60-месячным скользящим окном для каждой фирмы. Я заметил, что производительность была безумно медленной, когда я запустил следующий код:
for idx, sub_df in master_df.groupby("firm_id"):
# OLS code
Однако, когда я сначала разбил свой фрейм данных примерно на 5,5 тыс. Df, а затем прошел итерацию по каждому из 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?
Большое спасибо!