python科学计算笔记(十二)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’ |
降采样
需考虑:
1)各区间哪边是闭合的(参数:closed)
2)如何标记各聚合面元,用区间的开头还是末尾(参数:label)
ts_index = pd.date_range('2017-06-20',periods =12,freq = '1min')#一分钟采样数据ts = pd.Series(np.arange(12),index = ts_index)
ts
2017-06-20 00:00:00 02017-06-20 00:01:00 12017-06-20 00:02:00 22017-06-20 00:03:00 32017-06-20 00:04:00 42017-06-20 00:05:00 52017-06-20 00:06:00 62017-06-20 00:07:00 72017-06-20 00:08:00 82017-06-20 00:09:00 92017-06-20 00:10:00 102017-06-20 00:11:00 11Freq: T, dtype: int32
聚合到5分钟
ts.resample('5min',how='sum')
C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: how in .resample() is deprecatedthe new syntax is .resample(...).sum()if __name__ == '__main__':2017-06-20 00:00:00 102017-06-20 00:05:00 352017-06-20 00:10:00 21Freq: 5T, dtype: int32
ts.resample('5min',how='sum',closed='left')
C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: how in .resample() is deprecatedthe new syntax is .resample(...).sum()if __name__ == '__main__':2017-06-20 00:00:00 102017-06-20 00:05:00 352017-06-20 00:10:00 21Freq: 5T, dtype: int32
ts.resample('5min',how='sum',closed='left',label ='left')
C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: how in .resample() is deprecatedthe new syntax is .resample(...).sum()if __name__ == '__main__':2017-06-20 00:00:00 102017-06-20 00:05:00 352017-06-20 00:10:00 21Freq: 5T, dtype: int32
通过groupby进行重插样
另外一种降采样方法
ts1_index = pd.date_range('2017-6-01',periods = 100,freq = 'd')ts1 = pd.Series(np.arange(100),index = ts1_index)
ts1.head()
2017-06-01 02017-06-02 12017-06-03 22017-06-04 32017-06-05 4Freq: D, dtype: int32
ts1.groupby(lambda x:x.month).mean()
6 14.5 7 45.0 8 76.0 9 95.5dtype: float64
ts1.groupby(lambda x:x.weekday).mean()
0 49.5 1 50.5 2 51.5 3 49.0 4 50.0 5 47.5 6 48.5dtype: float64
df1 = pd.DataFrame(np.arange(200).reshape(100,2),index = ts1_index)
df1.groupby(lambda x:x.weekday).mean()
0 | 1 | |
---|---|---|
0 | 99 | 100 |
1 | 101 | 102 |
2 | 103 | 104 |
3 | 98 | 99 |
4 | 100 | 101 |
5 | 95 | 96 |
6 | 97 | 98 |
对于具有时间序列索引的pandas数据结构,当groupby传入一个函数时,可以对时间索引对应列进行聚合
升采样
升采样没有聚合,但是需要填充
df2 = pd.DataFrame(np.arange(200).reshape(100,2),index = ts1_index,columns=['add1','add2'])
df2.head()
add1 | add2 | |
---|---|---|
2017-06-01 | 0 | 1 |
2017-06-02 | 2 | 3 |
2017-06-03 | 4 | 5 |
2017-06-04 | 6 | 7 |
2017-06-05 | 8 | 9 |
df2.resample('W-THU',fill_method = 'ffill')
C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: fill_method is deprecated to .resample()the new syntax is .resample(...).ffill()if __name__ == '__main__':
add1 | add2 | |
---|---|---|
2017-06-01 | 0 | 1 |
2017-06-08 | 14 | 15 |
2017-06-15 | 28 | 29 |
2017-06-22 | 42 | 43 |
2017-06-29 | 56 | 57 |
2017-07-06 | 70 | 71 |
2017-07-13 | 84 | 85 |
2017-07-20 | 98 | 99 |
2017-07-27 | 112 | 113 |
2017-08-03 | 126 | 127 |
2017-08-10 | 140 | 141 |
2017-08-17 | 154 | 155 |
2017-08-24 | 168 | 169 |
2017-08-31 | 182 | 183 |
2017-09-07 | 196 | 197 |
2017-09-14 | 198 | 199 |
总结
本篇博客主要内容:
1)生成指定时间段,指定频率的日期
2)对含有时间索引的pandas数据进行重采样,包括降采样和升采样等。
python科学计算笔记(十二)pandas的resample采样相关推荐
- python科学计算笔记(二)pandas获取网络文件
import urllib.requestimport requests from io import StringIOimport numpy as npimport pandas as pd '' ...
- python科学计算笔记(十)pandas中时间、日期以及时间序列处理
Python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫秒形式存储日期和时间,datetime. ...
- python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...
- 【python数据挖掘课程】十二.Pandas、Matplotlib结合SQL语句对比图分析
这篇文章主要讲述Python常用数据分析包Numpy.Pandas.Matplotlib结合MySQL分析数据,前一篇文章 "[python数据挖掘课程]十一.Pandas.Matplotl ...
- python科学计算笔记(十四)pandas数据过滤、清理、转换
本篇博客主要内容 1)移除重复数据(duplicated) 2)利用函数或映射进行数据转换(map) 3)替换值(replace) 4)重命名轴索引 5)检测和过滤异常值(逻辑索引) 6)随机采样或选 ...
- python科学计算笔记(九)pandas中DataFrame数据操作函数
Python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...
- python科学计算笔记(八)pandas大数据HDF5硬盘操作方式
大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + py3.5 本人电脑配置:4 ...
- python科学计算笔记(四)pandas 数据索引与选取
我们对 DataFrame 进行选择,大抵从这三个层次考虑:行列.区域.单元格. 其对应使用的方法如下: 一. 行,列 --> df[] 二. 区域 --> df.loc[], df. ...
- python科学计算笔记(三)pandas中Series和DataFrame练习
from pandas import Series, DataFrame# Series接收list或dict作为一维数据 #两个属性:values, index #① s1 = Series([4, ...
最新文章
- 【致青春】谨献给我已逝去的高三
- IIS7.5部署ASP.NET失败
- mac系统做云服务器,mac系统的云服务器
- 升级安装linux ssh 升级安装
- 计算机一级excel如何选择2个,2017年计算机一级excel操作题(2)
- linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署
- MySQL入门第三天(下)——存储过程与存储引擎
- 使用github参与到开源项目的维护
- 交织技术及其在GSM系统中的应用
- Matlab绘图线条颜色,线型,标记点选项参数
- 再见2021:是校园和职场的交接也是25本书
- twincat3授权
- eclipse php jquery,Eclipse 支持jQuery 自动提示
- 一款好用、易扩展的文件解析引擎,是怎么演变而来的
- Period、Duration计算时间间隔
- *TEST 11 for NOIP 再次爆炸 (100-300)-----(( ! ))
- OpenCV学习Rosenfeld细化算法
- I DID IT 推广二番 | ArcBlock 发布汇款转账应用 Demo
- 初级中学理化生实验室建设与配备标准
- 让图片固定不动的两种方法
热门文章
- Fibonacci Tree HDU - 4786——解题报告
- (解题报告)L1-032 Left-pad (20分)——15行代码AC
- 一段简单的python代码_Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
- java连接数据库hei_如何黑MySQL5数据库?(来自:http://superhei.blogbus.com)
- python日历下拉框_python日历来计算月份倒退
- python web框架对比_Python六大开源框架对比
- whois php,用PHP实现标准的IP Whois查询
- python异常处理操作语句_异常处理语句(2)
- c#如何wmf图片转换成png图片_每日一学:如何将png图片转换为jpg图片
- 嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt