1. 时间序列基础

  import numpy as np

  import pandas as pd

  np.random.seed(12345)

  import matplotlib.pyplot as plt

  plt.rc('figure', figsize=(10, 6))

  PREVIOUS_MAX_ROWS = pd.options.display.max_rows

  pd.options.display.max_rows = 20

  np.set_printoptions(precision=4, suppress=True)

  pandas最基本的时间序列类型就是以时间戳(通常以Python字符串或datatime对象表示)为索引的Series:

  from datetime import datetime

  dates = [datetime(2011, 1, 2), datetime(2011, 1, 5),

  datetime(2011, 1, 7), datetime(2011, 1, 8),

  datetime(2011, 1, 10), datetime(2011, 1, 12)]

  ts = pd.Series(np.random.randn(6), index=dates)

  ts

  这些datetime对象实际上是被放在一个DatetimeIndex中的:

  ts.index

  

  跟其他Series一样,不同索引的时间序列之间的算术运算会自动按日期对 齐:

  print(ts[::2]) #每隔一个取一个

  ts + ts[::2]

  pandas用NumPy的datetime64数据类型以纳秒形式存储时间戳:

  ts.index.dtype

  

  DatetimeIndex中的各个标量值是pandas的Timestamp对象:

  stamp = ts.index[0]

  stamp

  

  只要有需要,TimeStamp可以随时自动转换为datetime对象。此外,它还可以存储频率信息(如果有的话),且知道如何执行时区转换以及其他操作。 之后将对此进行详细讲解。

  2. 索引、选取、子集构造

  当你根据标签索引选取数据时,时间序列和其它的pandas.Series很像:

  print(ts)

  stamp = ts.index[2]

  print(ts[stamp]) #标签索引

  print(ts[2]) #整数索引

  还有一种更为方便的用法:传入一个可以被解释为日期的字符串:

  print(ts['1/10/2011'])

  print(ts['20110110'])

  ts['2011-01-10']

  

  对于较长的时间序列,只需传入“年”或“年月”即可轻松选取数据的切片:

  longer_ts = pd.Series(np.random.randn(1000),

  index=pd.date_range('1/1/2000', periods=1000))#天为单位

  longer_ts

  longer_ts['2001']

  这里,字符串“2001”被解释成年,并根据它选取时间区间。指定月也同样奏效:

  longer_ts['2001-05']

  datetime对象也可以进行切片:

  print(ts)

  ts[datetime(2011, 1, 7):]

  由于大部分时间序列数据都是按照时间先后排序的,因此你也可以用不存在于该时间序列中的时间戳对其进行切片(即范围查询):

  ts['1/6/2011':'1/11/2011']

  

  跟之前一样,你可以传入字符串日期、datetime或Timestamp进行索引。注意,这样 切片所产生的是原时间序列的视图(共享内存),跟NumPy数组的切片运算是一样的。

  这意味着,没有数据被复制,对切片进行修改会反映到原始数据上。

  此外,还有一个等价的实例方法也可以截取两个日期之间TimeSeries:

  ts.truncate(after='1/9/2011')无锡妇科医院哪家好 http://www.xasgyy.net/

  

  这些操作对DataFrame也有效。例如,对DataFrame的行进行索引:

  dates = pd.date_range('1/1/2000', periods=100, freq='W-WED') #间隔单位为周

  long_df = pd.DataFrame(np.random.randn(100, 4),

  index=dates,

  columns=['Colorado', 'Texas',

  'New York', 'Ohio'])

  long_df.loc['5-2001']

  3. 带有重复索引值的时间序列

  在某些应用场景中,可能会存在多个观测数据落在同一个时间点上的情况。下面就是一个例子:

  dates = pd.DatetimeIndex(['1/1/2000', '1/2/2000', '1/2/2000',

  '1/2/2000', '1/3/2000'])

  dup_ts = pd.Series(np.arange(5), index=dates)

  dup_ts

  

  通过检查索引的is_unique属性,我们就可以知道它是不是唯一的:

  dup_ts.index.is_unique

  

  对这个时间序列进行索引,要么产生标量值,要么产生切片,具体要看所选的时间点是否重复:

  print(dup_ts['1/3/2000'])# not duplicated

  dup_ts['1/2/2000'] # duplicated

  

  假设你想要对具有非唯一时间戳的数据进行聚合。一个办法是使用 groupby,并传入level=0:

  grouped = dup_ts.groupby(level=0)

  print(grouped.mean())

  grouped.count()

Python数据分析 之时间序列基础的更多相关文章

  1. 第一章:Python数据分析前的基础铺垫

    本节概要 - 数据类型 - 数据结构 - 数据的常用操作方法 数据类型 基础铺垫 定义 我们搞数据时,首先要告诉Python我们的数据类型是什么 数值型:直接写一个数字即可 逻辑型:True,Fals ...

  2. python数据分析02语法基础

    在我来看,没有必要为了数据分析而去精通Python.我鼓励你使用IPython shell和Jupyter试验示例代码,并学习不同类型.函数和方法的文档.虽然我已尽力让本书内容循序渐进,但读者偶尔仍会 ...

  3. 零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!

    随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛 ...

  4. Python数据分析 Pandas模块 基础数据结构与简介(一)

    pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二 ...

  5. 【Python数据分析】IPython基础

    一.配置启动IPython 打开cmd窗口,在dos界面下输入ipython,结果报错了!!! 出现这个问题是由于环境变量未配置(前提:已经安装了ipython),那么接下来配置环境变量 我的电脑→右 ...

  6. Python数据分析 Pandas模块 基础数据结构与简介(二)

    重点方法 分组:groupby('列名') groupby(['列1'],['列2'........]) 分组步骤: (spiltting)拆分 按照一些规则将数据分为不同的组 (Applying)申 ...

  7. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  8. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  9. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

随机推荐

  1. Java Scanner语法

    1.导入: import java.util.Scanner; 2.创建对象 Scanner scan = new Scanner(System.in);//一般变量名为scan或者in 最后关闭,s ...

  2. POJ2239-Selecting Courses-(匈牙利算法)

    题意:n门课,每门各自有t个开课时间,在不冲突的情况下选最多课. 题解:把周p第q节课转化为数值sum,表示在一周7*12节课中排第几节,用二分图最大匹配. #include<stdio.h&g ...

  3. ES6学习笔记 -- 尾调用优化

    什么是尾调用? 尾调用(Tail Call)是函数式编程的一个重要概念,就是指某个函数的最后一步是调用另一个函数. function f(x) { return g(x) } 如上,函数 f 的最后一 ...

  4. 如何计算假设检验的功效(power)和效应量(effect size)?

    做完一个假设检验之后,如果结果具有统计显著性,那么还需要继续计算其效应量,如果结果不具有统计显著性,并且还需要继续进行决策的话,那么需要计算功效. 功效(power):正确拒绝原假设的概率,记作1-β ...

  5. 软件工程卷1 抽象与建模 (Dines Bjorner 著)

    I 开篇 1. 绪论 II 离散数学 2. 数 (已看) 3. 集合 4. 笛卡尔 5. 类型 6. 函数 7. λ演算 8. 代数 9. 数理逻辑 III 简单RSL 10. RSL中的原子类型和值 ...

  6. Adobe Illustrator 入门 新建 保存图片

    下载 AI 的破解版 我这里用的是 Adobe_Illustrator CC 2019 Lite 精简特别版 V23.0.2 简体中文版 64位 安装略 新建文档 通常是 A4 图形绘制 选择 矩形工 ...

  7. 安装-apache skywalking (java 应用性能监控)

    官网:http://skywalking.apache.org/ 服务器:10.30.31.28 centos 7 jdk 1.8.x ES 5.x 5.0.0-bet a2版本 . http://s ...

  8. 可能是全网最好的MySQL重要知识点 | 面试必备

    可能是全网最好的MySQL重要知识点 | 面试必备  mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后 ...

  9. 【Kubernetes学习之四】Kubernetes可视化管理

    环境 centos 7 k8s-master 192.168.118.106 k8s-node01 192.168.118.107 k8s-node01 192.168.118.108 之前使用ku8 ...

  10. Struts2利用iText导出word文档(包含表格)以提供下载

    J2EE ExcelStrutsXML  在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...