как сделать код быстрее, удалив цикл - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь провести анализ большого количества данных, сначала я применил функцию groupby, чтобы разделить данные на разные группы. Затем я проверяю некоторые условия в каждой группе, если условие выполнено, затем вычисляю среднее, максимальное и некоторые другие характеристики, приведенный ниже код работает нормально, но он очень низкий. в моем случае общее количество групп превышает 50000.

x=df.groupby(pd.Grouper(freq='10Min', base=30, label='right'))
for name,df in x:
    min_x=np.min(df['A'])
    y_max=np.max(df['B'])
    z_max=np.max(df['C'])
    if (z_max<60)&(min_x>2) & (y_max<35):
        mean_D=np.mean(df['D'])

Этот код дает правильный вывод, но он очень медленный. мне нужно найти какой-нибудь быстрый способ сделать это

1 Ответ

2 голосов
/ 21 октября 2019

Одна идея должна быть:

df1=(df.groupby(pd.Grouper(freq='10Min', base=30, label='right'))
       .agg({'A':'min', 'B':'max', 'C':'max', 'D':'mean'}))

s = df1.loc[(df1['C']<60)&(df1['A']>2) & (df1['B']<35), 'D']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...