[英]Pandas get min, max, mean value for every quarter of an hour for a whole week
我有一个Pandas DataFrame,它的值是整个一年中每25分钟一次。
Datum
2017-01-01 00:15:00 223.1500
2017-01-01 00:30:00 224.8000
2017-01-01 00:45:00 229.3500
2017-01-01 01:00:00 226.7500
2017-01-01 01:15:00 221.9500
2017-01-01 01:30:00 225.7500
2017-01-01 01:45:00 230.7000
现在,我要绘制所有周平均值的每季度的最小值,平均值和最大值。
所以最后我应该有一个具有672行的数据帧(星期一00:00,星期一00:15,星期一00:30,...,星期日23:30,星期日23:45),并带有min,max,mean。
我试着用df.groupby()
并resample()
没有成功。
您可以使用groupby()
和agg()
:
一些示例数据:
import pandas as pd
import numpy as np
np.random.seed(444)
idx = pd.date_range('2017', end='2018', freq='15min')[:-1]
df = pd.DataFrame(np.random.randint(2000, 3000, size=idx.size) / 10,
index=idx, columns=['data'])
而您正在寻找的操作:
to_grp = [df.index.weekday_name, df.index.time]
grp = df.groupby(to_grp, squeeze=True)['data'].agg(['min', 'mean', 'max'])
这是一个片段:
>>> grp.head()
min mean max
Friday 00:00:00 200.5 255.253846 299.7
00:15:00 200.2 250.359615 299.9
00:30:00 204.0 248.376923 299.4
00:45:00 203.9 258.228846 299.9
01:00:00 200.0 252.519231 298.6
>>> grp.shape
(672, 3)
我以为您可以使用pd.Grouper(freq='15min')
代替df.index.time
,但这似乎在给您带来一些麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.