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

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

主要函数: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采样相关推荐

  1. python科学计算笔记(二)pandas获取网络文件

    import urllib.requestimport requests from io import StringIOimport numpy as npimport pandas as pd '' ...

  2. python科学计算笔记(十)pandas中时间、日期以及时间序列处理

    Python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫秒形式存储日期和时间,datetime. ...

  3. python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算

    标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...

  4. 【python数据挖掘课程】十二.Pandas、Matplotlib结合SQL语句对比图分析

    这篇文章主要讲述Python常用数据分析包Numpy.Pandas.Matplotlib结合MySQL分析数据,前一篇文章 "[python数据挖掘课程]十一.Pandas.Matplotl ...

  5. python科学计算笔记(十四)pandas数据过滤、清理、转换

    本篇博客主要内容 1)移除重复数据(duplicated) 2)利用函数或映射进行数据转换(map) 3)替换值(replace) 4)重命名轴索引 5)检测和过滤异常值(逻辑索引) 6)随机采样或选 ...

  6. python科学计算笔记(九)pandas中DataFrame数据操作函数

    Python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...

  7. python科学计算笔记(八)pandas大数据HDF5硬盘操作方式

    大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + py3.5 本人电脑配置:4 ...

  8. python科学计算笔记(四)pandas 数据索引与选取

    我们对 DataFrame 进行选择,大抵从这三个层次考虑:行列.区域.单元格. 其对应使用的方法如下: 一. 行,列 --> df[] 二. 区域   --> df.loc[], df. ...

  9. python科学计算笔记(三)pandas中Series和DataFrame练习

    from pandas import Series, DataFrame# Series接收list或dict作为一维数据 #两个属性:values, index #① s1 = Series([4, ...

最新文章

  1. 【致青春】谨献给我已逝去的高三
  2. IIS7.5部署ASP.NET失败
  3. mac系统做云服务器,mac系统的云服务器
  4. 升级安装linux ssh 升级安装
  5. 计算机一级excel如何选择2个,2017年计算机一级excel操作题(2)
  6. linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署
  7. MySQL入门第三天(下)——存储过程与存储引擎
  8. 使用github参与到开源项目的维护
  9. 交织技术及其在GSM系统中的应用
  10. Matlab绘图线条颜色,线型,标记点选项参数
  11. 再见2021:是校园和职场的交接也是25本书
  12. twincat3授权
  13. eclipse php jquery,Eclipse 支持jQuery 自动提示
  14. 一款好用、易扩展的文件解析引擎,是怎么演变而来的
  15. Period、Duration计算时间间隔
  16. *TEST 11 for NOIP 再次爆炸 (100-300)-----(( ! ))
  17. OpenCV学习Rosenfeld细化算法
  18. I DID IT 推广二番 | ArcBlock 发布汇款转账应用 Demo
  19. 初级中学理化生实验室建设与配备标准
  20. 让图片固定不动的两种方法

热门文章

  1. Fibonacci Tree HDU - 4786——解题报告
  2. (解题报告)L1-032 Left-pad (20分)——15行代码AC
  3. 一段简单的python代码_Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
  4. java连接数据库hei_如何黑MySQL5数据库?(来自:http://superhei.blogbus.com)
  5. python日历下拉框_python日历来计算月份倒退
  6. python web框架对比_Python六大开源框架对比
  7. whois php,用PHP实现标准的IP Whois查询
  8. python异常处理操作语句_异常处理语句(2)
  9. c#如何wmf图片转换成png图片_每日一学:如何将png图片转换为jpg图片
  10. 嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt