【发布时间】:2019-08-05 23:18:56
【问题描述】:
我想要做的是获取一个数据集,该数据集包含几年内每分钟的 x 值,并创建一个“典型周”的数据,因此数据框具有 (60*24*7) = 10080 行.每行都有一些特定的分位数/百分位数,例如[0.1、0.25、0.5、0.75、0.9]。分位数是根据所有历史数据集中一周中该分钟的 x 值以及该分钟之前的五分钟和之后五分钟的 x 值计算得出的。
因此输出将是一周中的每一分钟,该分钟的 x 值,以及这些数据的值,包括百分位数计算之前和之后的分钟,例如
输入数据:
x dow hour minute
time
2016-10-18 07:55:00 29.500000 0 7 55
2016-10-18 07:56:00 35.000000 0 7 56
2016-10-18 07:57:00 24.666667 0 7 57
2016-10-18 07:58:00 31.833333 0 7 58
2016-10-18 07:59:00 35.500000 0 7 59
2016-10-18 08:00:00 35.500000 0 8 00
2016-10-18 08:01:00 33.500000 0 8 01
... ... ... ... ...
2018-10-18 10:01:00 32.500000 6 10 01
2018-10-18 10:02:00 34.500000 6 10 02
2018-10-18 10:03:00 39.500000 6 10 03
输出数据:
dow hour minute percentile1 percentile2 percentile3 percentile4 percentile5
3 4 58 25 28 33 44 50
...
...
我怎么能在 pandas 中实现这样的事情。这似乎是朝着正确方向迈出的一步,但我不确定滚动是否包括预期的前后分钟:
df.groupby([df.dow, df.hour, df.minute]).rolling(5).apply(pd.quantile, [0.25, 0.30, 0.50])
【问题讨论】:
-
滚动分位数不允许像输入一样的列表,你只能做浮动
标签: python pandas pandas-groupby percentile rolling-computation