df.resample——如何把日度数据转化为周度数据
老板甩给我们一堆日度数据,说要跟其他数据merge使用,而其他数据是周度的,因此需要把日度数据中转化为周度数据。我们可能会想着直接两个merge就好了,但实际上并不是这样。
我们的数据长这样:
日期 | 产品交易量 | 产品价格 |
2022-01-01 | 38 | 61.564967 |
2022-01-02 | 13 | 4.661551 |
2022-01-03 | 73 | 44.665341 |
2022-01-04 | 10 | 96.804464 |
2022-01-05 | 76 | 36.020075 |
因为日度数据转化为周度数据,并不是简单取最后一天。例如价格,可能取这周的价格平均数,成交量,可能取这周成交量的加总。
于是我们的思路是,生成一个新列,判断是星期几,如果遇到星期日就把前7天的成交量相加,价格取平均。但这样很累的。所以这里介绍一个有用的函数:
df.resample
是Pandas中的一个强大的时间序列重采样方法,它允许我们将时间序列数据从一个频率转换为另一个频率。该方法常用于将高频率数据降采样为低频率数据(如将分钟数据转换为小时数据),或者将低频率数据升采样为高频率数据(如将月度数据转换为每日数据)。下面是
df.resample
的一般语法:其中,
rule
是一个字符串参数,指定重采样的规则或频率。它可以是以下几种常见的规则:'D'
:按天重采样
'W'
:按周重采样
'M'
:按月重采样
'Q'
:按季度重采样
'A'
:按年重采样
此外,还可以使用其他频率规则,例如
'H'
表示按小时重采样,'T'
表示按分钟重采样等。重采样操作通常与聚合函数一起使用,以便在转换过程中对数据进行聚合。一些常见的聚合函数包括:
mean()
:计算平均值
sum()
:计算总和
min()
:计算最小值
max()
:计算最大值
count()
:计算非缺失值的数量
举个例子
此时生成的数据是上面已经提到的那个数据
日期 | 产品交易量 | 产品价格 |
2022-01-02 | 51 | 33.113259 |
2022-01-09 | 327 | 55.875075 |
2022-01-16 | 256 | 70.283696 |
2022-01-23 | 241 | 65.349920 |
2022-01-30 | 538 | 48.355630 |
- Twikoo
- Utterance
Last update: 2021-07-02
你好呀,欢迎浏览我的网站~