Pandas групповая функция с максимальной производительностью агрегации медленная. улучшение производительности - PullRequest
0 голосов
/ 22 марта 2020

У меня есть кадр данных, имеющий около 16 000 строк, и я выполняю максимальное агрегирование одного столбца и группирую его по другому.

df.groupby(['col1']).agg({'col2': 'max'}).reset_index()

Требуется 1,97 с. Я хотел бы улучшить его производительность. Запрос вы предлагаете в строках использования numpy или векторизации.

Тип данных: оба столбца являются объектами.

%%timeit
df.groupby(['col1']).agg({'col2': 'max'}).reset_index()

1.97 s ± 42 ms per loop (mean ± std. dev. of 7 runs, 1 loop each

1 Ответ

0 голосов
/ 22 марта 2020

Я поиграл с типами данных и изменил тип данных col2 на целочисленный, что значительно сократило время выполнения.

%%timeit
df['col2'] = df['col2'].astype(int)
df.groupby(['col1']).agg({'col2': 'max'}).reset_index()

6.58 ms ± 74.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Агрегация целых будет быстрее, чем строка.

...