pandas的resample使用

pandas的resample使用

重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。

降采样:高频数据到低频数据
升采样:低频数据到高频数据

方法的格式:
DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention=‘start’,kind=None, loffset=None, limit=None, base=0)

举例:
1、原始数据如下图所示,有三列【站点,时间,流量】每15分钟记录一次流量数据。比如:6:15:00的值为0.451,表示从6:00:00到6:15:00的时间内产生的流量为0.451.
pandas的resample使用
2、将15分钟的数据转化成60分钟的数据,即1小时记录一个数据,那么就需要将一小时内的四个时间点的数据相加,比如:7:00:00的流量就是将6:00:00到7:00:00间产生的流量相加,即6:15的+6:30的+6:45的+7:00的,最后结果应该是1.805.
先将数据转化成time series

read_df.drop(columns=[“站点”], inplace=True)
read_df[“时间”] = pd.to_datetime(read_df[“时间”])
read_df.set_index(“时间”, inplace=True)

利用resample实现每小时内数据聚合,当然聚合函数可以选择sum, mean,或者自定义函数。

data = read_df.resample(‘1h’, closed=‘right’, label=‘right’).sum()
参数closed的选择很重要,相当于我们数学中的开闭概念,是左开右闭还是左闭右开,我们的例子中是左开右闭,如果closed=‘left’,上面7:00的流量就是1.351.
参数label表示:用哪一边的边缘值标记bucket的值。
具体参数意义可以参见链接https://www.cnblogs.com/jingsupo/p/pandas-resample.html