将Timestamp转换为Period

通过使用to_period方法,可以将由时间戳索引的Series和DataFrame对象转换为以时期索引

rng=pd.date_range('1/1/2000',periods=3,freq='M')

ts=Series(randn(3),index=rng)

print(ts)

pts2=ts.to_period(freq='M')

print(pts2)

结果如下:ts是每个月最后一天的日期,pts2则是体现的是以月为周期的日子

2000-01-31    0.990097

2000-02-29    0.439761

2000-03-31   -3.395317

Freq: M, dtype: float64

2000-01    0.990097

2000-02    0.439761

2000-03   -3.395317

Freq: M, dtype: float64

如果要转换回时间戳,则可以使用pts2.to_timestamp(how='end')的方法

2000-01-31   -0.489228

2000-02-29   -1.583283

2000-03-31   -2.414735

Freq: M, dtype: float64

重采样及频率转换

将高频率数据转换为低频率称为降采样,而将低频率数据转换为高频率称为升采样。pandas中的resample方法就可以进行这种频率转换

rng=pd.date_range('1/1/2000',periods=50,freq='D')

ts=Series(randn(50),index=rng)

print(ts.resample('M').mean())

运行结果如下,在这里ts是以天级的数据,但是通过resample(‘M’)转换为月度的数据,且对属于同一个月的数据进行求平均的计算。得到的就是每个月的平均值

2000-01-31   -0.276265

2000-02-29   -0.052926

Freq: M, dtype: float64

降采样:

在降采样的时候,需要考虑两样东西:

1 各区间哪边是闭合的

2 如何标记各个聚合面元,用区间的开头还是末尾

来看如下代码:

rng=pd.date_range('1/1/2000',periods=12,freq='T')

ts=Series(np.arange(12),index=rng)

print(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

print(ts.resample('5min', closed='left').sum())

左闭合的时候统计是以00:00:00为开始的5分钟周期

2000-01-01 00:00:00    10

2000-01-01 00:05:00    35

2000-01-01 00:10:00    21

print(ts.resample('5min',closed='right').sum())

右闭合的时候统计是以00:00:00为结束的5分钟周期,因为时间提前到了1999-12-31 23:55:00这个时候。

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

因此左闭合还是右闭合取决与时间的开始和结束

在金融领域中有一种无所不在的时间序列聚合方式,即计算各面元的4个值,第一个值open:开盘,最后一个值close:收盘,最大值high:最高,最小值low:最低

ts.resample('5min', closed='left').ohlc()

open  high  low  close

2000-01-01 00:00:00     0     4    0      4

2000-01-01 00:05:00     5     9    5      9

2000-01-01 00:10:00    10    11   10     11

python数据分析之:时间序列二的更多相关文章

  1. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  2. python数据分析Numpy(二)

    Numpy (Numerical Python) 高性能科学计算和数据分析的基础包: ndarray,多维数组(矩阵),具有矢量运算能力,快速.节省空间: 矩阵运算,无需循环,可以完成类似Matlab ...

  3. Python数据分析教程(二):Pandas

    Pandas导入 Pandas是Python第三方库,提供高性能易用数据类型和分析工具 Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用 两个数据类型:Series, Da ...

  4. Python数据分析 之时间序列基础

    1. 时间序列基础 import numpy as np import pandas as pd np.random.seed(12345) import matplotlib.pyplot as p ...

  5. [读书笔记] Python 数据分析 (十二)高级NumPy

    da array: 一个快速而灵活的同构多维大数据集容器,可以利用这种数组对整块的数据进行一些数学运算 数据指针,系统内存的一部分 数据类型 data type/dtype 指示数据大小的元组 str ...

  6. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  7. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  8. 小白学 Python 数据分析(13):Pandas (十二)数据表拼接

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. 小白学 Python 数据分析(17):Matplotlib(二)基础操作

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  10. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

随机推荐

  1. JAVA反射机制--怎么不受泛型束缚给数组赋值

    在Java中,声明数组的时候我们经常会写泛型限制用户输入或者获取的数据.如:ArrayList<String> list = new ArrayList<>(); String ...

  2. Win7如何安装IIS来浏览ASP网站

    1 进入控制面板-->程序与功能-->点击左侧的"打开或关闭Windows功能"-->把"Internet信息服务"给勾上,点击"确 ...

  3. 使用LBS(地理位置)

    一.使用之前的简单封装的OkHttpUtil http://www.cnblogs.com/itfenqing/p/6758909.html 二.关键代码: public class MainActi ...

  4. 24.JAVA编程思想——违例差错控制

    24.JAVA编程思想--违例差错控制 Java 的基本原理就是"形式错误的代码不会执行". 与C++类似,捕获错误最理想的是在编译期间,最好在试图执行程序曾经.然而.并不是全部错 ...

  5. 【Excle】科学计数法快速还原

    在Excle的单元格中,如果输入大于11位的数字,结果就会以E+形式显示 如果是单个输入的话,只需要把Excle中的单元格格式设置为文本即可,然后输入就不会出现科学计数法,但是有时候是从外部导入的序号 ...

  6. SDUT 2766-小明传奇2(母函数)

    小明传奇2 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit1000ms Memory Limit 65536K ...

  7. nginx根据目录反向代理到后端服务器

    nginx根据目录反向代理到后端不同的服务器 server {         listen 80;         server_name demo.domain.com;         #通过访 ...

  8. windows下简单配置squid反向代理服务器

    下载windwosNT版本的squid下载地址: http://squid.acmeconsulting.it/download/squid-2.6.STABLE13-bin.zip 1.把squid ...

  9. memcache原理和实际应用

    Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的.眼下全世界不少人使用这个缓存项目来构建自己大负载的站点,来分担数据库的压力. 它能够应 ...

  10. Swift中文教程(七)--协议,扩展和泛型

    Protocols and Extensions 协议(接口)和扩展 Swift使用关键字protocol声明一个协议(接口): 类(classes),枚举(enumerations)和结构(stru ...