Почему производительность уменьшается с размером фрейма данных? - PullRequest
4 голосов
/ 02 октября 2019

Я работаю с относительно большим набором данных (около 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?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...