pandas的resample重采样的使用

这篇文章主要介绍了pandas的resample重采样的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

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

主要函数:resample()(pandas对象都会有这个方法)

resample方法的参数

参数 说明
freq 表示重采样频率,例如‘M'、‘5min',Second(15)
how='mean' 用于产生聚合值的函数名或数组函数,例如‘mean'、‘ohlc'、np.max等,默认是‘mean',其他常用的值由:‘first'、‘last'、‘median'、‘max'、‘min'
axis=0 默认是纵轴,横轴设置axis=1
fill_method = None 升采样时如何插值,比如‘ffill'、‘bfill'等
closed = ‘right' 在降采样时,各时间段的哪一段是闭合的,‘right'或‘left',默认‘right'
label= ‘right' 在降采样时,如何设置聚合值的标签,例如,9:30-9:35会被标记成9:30还是9:35,默认9:35
loffset = None 面元标签的时间校正值,比如‘-1s'或Second(-1)用于将聚合标签调早1秒
limit=None 在向前或向后填充时,允许填充的最大时期数
kind = None 聚合到时期(‘period')或时间戳(‘timestamp'),默认聚合到时间序列的索引类型
convention = None 当重采样时期时,将低频率转换到高频率所采用的约定(start或end)。默认‘end'

首先创建一个Series,采样频率为一分钟。 

>>> index = pd.date_range('1/1/2000', periods=9, freq='T')
>>> series = pd.Series(range(9), index=index)
>>> series
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
Freq: T, dtype: int64

降低采样频率为三分钟 

>>> series.resample('3T').sum()
2000-01-01 00:00:00   3
2000-01-01 00:03:00  12
2000-01-01 00:06:00  21
Freq: 3T, dtype: int64

降低采样频率为三分钟,但是每个标签使用right来代替left。请注意,bucket中值的用作标签。

>>> series.resample('3T', label='right').sum()
2000-01-01 00:03:00   3
2000-01-01 00:06:00  12
2000-01-01 00:09:00  21
Freq: 3T, dtype: int64

降低采样频率为三分钟,但是关闭right区间。 

>>> series.resample('3T', label='right', closed='right').sum()
2000-01-01 00:00:00   0
2000-01-01 00:03:00   6
2000-01-01 00:06:00  15
2000-01-01 00:09:00  15
Freq: 3T, dtype: int64

增加采样频率到30秒

>>> series.resample('30S').asfreq()[0:5] #select first 5 rows
2000-01-01 00:00:00   0
2000-01-01 00:00:30  NaN
2000-01-01 00:01:00   1
2000-01-01 00:01:30  NaN
2000-01-01 00:02:00   2
Freq: 30S, dtype: float64

增加采样频率到30S,使用pad方法填充nan值。

>>> series.resample('30S').pad()[0:5]
2000-01-01 00:00:00  0
2000-01-01 00:00:30  0
2000-01-01 00:01:00  1
2000-01-01 00:01:30  1
2000-01-01 00:02:00  2
Freq: 30S, dtype: int64

增加采样频率到30S,使用bfill方法填充nan值。 

>>> series.resample('30S').bfill()[0:5]
2000-01-01 00:00:00  0
2000-01-01 00:00:30  1
2000-01-01 00:01:00  1
2000-01-01 00:01:30  2
2000-01-01 00:02:00  2
Freq: 30S, dtype: int64

通过apply运行一个自定义函数 

>>> def custom_resampler(array_like):
...   return np.sum(array_like)+5
>>> series.resample('3T').apply(custom_resampler)
2000-01-01 00:00:00   8
2000-01-01 00:03:00  17
2000-01-01 00:06:00  26
Freq: 3T, dtype: int64

到此这篇关于pandas的resample重采样的使用的文章就介绍到这了,更多相关pandas resample重采样内容请搜索昆居客【www.kunjuke.com】以前的文章或继续浏览下面的相关文章希望大家以后多多支持昆居客【www.kunjuke.com】!

相关推荐:

ShareGPT数据集的采样和子集提取:从大数据集中抽取特定领域对话的操作方法

需通过五种结构化采样策略精准提取ShareGPT数据集中特定领域子集:一、正则匹配human文本;二、零样本分类器打分筛选;三、tools字段结构化抽取;四、system提示词聚类后人工抽样;五、知识图谱实体链接扩展。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您拥有一个庞大的ShareGPT格式数据集,但仅需其中特定领域(如法律咨...

为什么Figma生成的图片分辨率固定_通过调整AI采样倍率提升

可通过五种方法提升Figma中AI生成图片分辨率:一、启用插件高倍采样参数;二、导出时设置Scale倍率;三、用超分插件后处理;四、导出后用Stable Diffusion重绘增强;五、结合Auto Layout与缩放约束模拟高清效果。 如果您在figma中使用ai插件生成图片后发现输出图像分辨率固定、无法满足高清交付需求,则可能是由于ai生成流程默认采用统一尺寸采样,未启用动态缩放或超分机制。以...
· AI · 83130

如何解决Figma图片边缘锯齿严重问题_开启AI超采样抗锯齿

Figma图片边缘锯齿可通过五种方法解决:一、启用超采样渲染;二、用SDMatte插件AI重绘边缘;三、手动添加匹配背景色的1像素描边;四、导出为带Alpha通道的PNG-24;五、前端用backdrop-filter模拟亚像素混合。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您在 Figma 中查看或导出图片时发现边缘呈现明显的阶...

如何在每月内保持目标变量比例平衡地对Pandas DataFrame进行下采样

本文介绍一种高效、安全的分组下采样方法:按month分组后,在每个组内对target=0和target=1的样本分别随机抽样,使二者数量相等(取每组中较小类别的原始频数),从而实现月度层面的类别平衡。 本文介绍一种高效、安全的分组下采样方法:按month分组后,在每个组内对target=0和target=1的样本分别随机抽样,使二者数量相等(取每组中较小类别的原始频数),从而实现月度层面的类别平衡...
· Python · 294064

如何在每月内保持目标变量比例一致地对Pandas DataFrame进行下采样

本文介绍一种高效、安全的分组下采样方法:对每个month组内,按target=0和target=1的最小频数统一截断,确保每月两类样本数量相等,同时保留所有原始列且避免settingwithcopywarning。 本文介绍一种高效、安全的分组下采样方法:对每个month组内,按target=0和target=1的最小频数统一截断,确保每月两类样本数量相等,同时保留所有原始列且避免settingw...
· Python · 258692

Python中如何处理时间序列数据的重采样_使用resample函数实现频次转换

resample必须在DatetimeIndex或PeriodIndex上调用,因它依赖时间索引结构分组;若date列非时间类型,需先转为datetime再设为索引;重采样后须接聚合操作(如mean、sum、ohlc等),并注意closed和label参数对时间对齐的影响。 resample 为什么必须在 DatetimeIndex 或 PeriodIndex 上调用 resample 不是普通 ...
· Python · 119790

Python如何解决分类样本极度不平衡情况下的分析评估_使用SMOTE算法进行少数类过采样平衡

直接用原始不平衡数据训练会导致模型偏向多数类;SMOTE需谨慎调参,如k=3、固定random_state、标准化、整数编码标签,并嵌入Pipeline防泄露,且须验证合成样本质量。 直接用原始不平衡数据训练分类器,模型大概率会把所有样本都判成多数类——这不是模型聪明,是它在“偷懒”。SMOTE 能缓解这个问题,但不是万能解药,关键得用对、用稳、用明白。 为什么不能直接用 SMOTE() 默认参数...
· Python · 168502

Python数据分析如何进行采样频率转换_Resample重采样技巧

resample() 报错因索引非 DatetimeIndex/TimedeltaIndex/PeriodIndex;需检查并转换索引类型,正确设置 rule 与 agg,注意时区、空组处理及 downsample/upsample 差异。 resample() 为什么报错“Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex” ...
· Python · 133970