Производительность pandas GroupBy по ключам - PullRequest
1 голос
/ 15 апреля 2020

Я должен сгруппировать Dataframe и сделать еще несколько вычислений, используя ключи в качестве входного параметра. При этом я выяснил странное поведение производительности. Время для группировки в порядке и время, чтобы получить ключи тоже. Но если я выполню оба шага, это займет 24 раза.

Я неправильно его использую или есть другой способ получить уникальные пары параметров со всеми их индексами?

Вот простой пример:

import numpy as np
import pandas as pd

def test_1(df):
    grouped = df.groupby(['up','down'])
    return grouped

def test_2(grouped):
    keys = grouped.groups.keys()
    return keys

def test_3(df):
    keys = df.groupby(['up','down']).groups.keys()    
    return keys

def test_4(df):
    grouped = df.groupby(['up','down'])    
    keys = grouped.groups.keys()
    return keys

n = np.arange(1,10,1)
df = pd.DataFrame([],columns=['up','down'])
df['up'] = n
df['down'] = n[::-1]

grouped = df.groupby(['up','down'])

%timeit test_1(df)
169 µs ± 12.5 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%timeit test_2(grouped)
1.01 µs ± 70.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

%timeit test_3(df)
4.36 ms ± 210 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit test_4(df)
4.2 ms ± 161 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Спасибо за заранее за комментарии или идеи.

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