У меня есть dataframe, где строки - это время, столбцы - дата, а каждое входное значение - частота. Как я могу генерировать гистограмму в каждом 30-минутном периоде в день, сколько частот есть?
В настоящее время я использую df.groupby(pd.Grouper(freq='30Min')).count()
. Однако count()
не принимает значения ввода.
Например, кадр данных выглядит так:
03/12 03/13
1:00:01 2 3
1:00:02 3 4
1:31:03 1 2
Текущий выход:
03/12 03/13
1:00:00 2 2
1:30:00 1 1
Желаемый результат должен быть:
03/12 03/13
1:00:00 5 7
1:30:00 1 2
Как отметил @jezrael я протестированные resample
на моем наборе данных. Вот результаты:
In [270]: %timeit date_df.resample('30Min').count()
7.7 ms ± 10.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [271]: %timeit date_df.groupby(pd.Grouper(freq='30Min')).count()
7.99 ms ± 49.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Использовать sum
:
df1 = df.groupby(pd.Grouper(freq='30Min')).sum()
#alternative solution
#df1 = df.resample('30Min').sum()
print (df1)
03/12 03/13
01:00:01 5 7
01:30:01 1 2
grouper
быстрее , какresample
является возможным проверить его с реальными данными?