Pandas—resample重采样

重采样指的是将时间序列从一个频率转换到另一个频率的处理过程。
时间序列基础
pandas对象都带有一个resample方法,它是各种频率转换工作的主力函数。
调用resample可以分组数据,然后会调用一个聚合函数(mean,max,min等)

import pandas as pd
import numpy as np
rng = pd.date_range('2000-01-01', periods=12, freq='T')
ts = pd.Series(np.arange(12), index=rng)
ts
2000-01-01 00:00:00     0
2000-01-01 00:01:00     1
2000-01-01 00:02:00     2
2000-01-01 00:03:00     3
2000-01-01 00:04:00     4
2000-01-01 00:05:00     5
2000-01-01 00:06:00     6
2000-01-01 00:07:00     7
2000-01-01 00:08:00     8
2000-01-01 00:09:00     9
2000-01-01 00:10:00    10
2000-01-01 00:11:00    11
Freq: T, dtype: int32

降采样
在用resample对数据进行降采样时,需要考虑两样东西:
1.各区间哪边是闭合的。
2.如何标记各个聚合面元,用区间的开头还是末尾。

# 通过求和的方式将这些数据聚合到“5分钟”块中
ts.resample('5min', closed='right').sum()
1999-12-31 23:55:00     0
2000-01-01 00:00:00    15
2000-01-01 00:05:00    40
2000-01-01 00:10:00    11
Freq: 5T, dtype: int32
#传入label='right'即可用面元的邮编界对其进行标记:
ts.resample('5min', closed='right', label='right').sum()
2000-01-01 00:00:00     0
2000-01-01 00:05:00    15
2000-01-01 00:10:00    40
2000-01-01 00:15:00    11
Freq: 5T, dtype: int32

升采样和插值
注意,新的日期索引完全没必要跟旧的重叠

frame = pd.DataFrame(np.random.randn(2, 4),
                      index=pd.date_range('1/1/2000', periods=2,
                                          freq='W-WED'),
                      columns=['Colorado', 'Texas', 'New York', 'Ohio'])
frame

在这里插入图片描述

frame.resample('D').ffill(limit=2)

在这里插入图片描述

frame.resample('W-THU').ffill()

在这里插入图片描述
通过时期进行重采样
由于时期指的是时间区间,所以升采样和降采样的规则就比较严格:
在降采样中,目标频率必须是源频率的子时期(subperiod)。
在升采样中,目标频率必须是源频率的超时期(superperiod)。
这主要影响的是按季、年、周计算的频率。

frame = pd.DataFrame(np.random.randn(24, 4),
                      index=pd.period_range('1-2000', '12-2001',
                                            freq='M'),
                      columns=['Colorado', 'Texas', 'New York', 'Ohio'])
# Q-DEC: Quarterly, year ending in December
frame.resample('Q-DEC').mean()

在这里插入图片描述

重采样(Resampling)是指将时间序列的频度从一个频度转换为另一个频度的过程。降采样(downsampling)是将高频度的数据转换为低频度,而增采样(upsampling)是将低频度的数据转换为高频度。\[1\] 举个例子,如果我们有一个时间序列数据,频度为每分钟一次,我们可以使用resample函数将其降采样为每小时一次,或者将其增采样为每秒钟一次。 在pandas中,可以使用resample函数来进行重采样操作。例如,使用asfreq函数可以将频度转换为指定的频度,而不进行重采样。\[2\] 另外,可以使用resample函数的ffill方法来填充缺失值。例如,如果我们有一个每天的时间序列数据,我们可以将其降采样为每周一次,并使用ffill方法来填充每周的缺失值。\[3\] 总之,重采样是一种将时间序列数据的频度转换为另一个频度的方法,可以通过降采样或增采样来实现,并可以使用pandas中的resample函数进行操作。 #### 引用[.reference_title] - *1* *2* [Pandas —— resample()重采样和asfreq()频度转换](https://blog.csdn.net/starter_____/article/details/81437626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [resample 重采样](https://blog.csdn.net/Return_Li/article/details/114142589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值