这一小节要介绍两个内容, 一个是 DatetimeIndex 日期索引, 另一个是 Resample, 这是一个函数, 可以通过参数的设置, 来调整数据的查询条件, 从而得到不同的结果.

首先看下关于 DatetimeIndex 的内容, 照例先引入一个csv 文件作为数据基础:

  1. import pandas as pd
  2. df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/14_ts_datetimeindex/aapl.csv')
  3. df.head()

输出:

查看一下 Date 列的数据类型:

  1. type(df.Date[0])

输出:

  1. str

从数据结果来看, 目前的 Date 列存储的是字符串, 这显然是不适合用来做数据分析的, 需要转换成时间类型才可以:

  1. import pandas as pd
  2. df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/14_ts_datetimeindex/aapl.csv', parse_dates=['Date'], index_col='Date')
  3. df.head()

输出:

这里在引入数据的同时, 用 parse_dates 参数将 Date 列转成了 时间类型, 并把 Date 列设置为索引列, 因为我们后面的数据分析都会基于日期.

查看一下索引:

  1. df.index

输出:

  1. DatetimeIndex(['2017-07-07', '2017-07-06', '2017-07-05', '2017-07-03',
  2. '2017-06-30', '2017-06-29', '2017-06-28', '2017-06-27',
  3. '2017-06-26', '2017-06-23',
  4. ...
  5. '2016-07-22', '2016-07-21', '2016-07-20', '2016-07-19',
  6. '2016-07-18', '2016-07-15', '2016-07-14', '2016-07-13',
  7. '2016-07-12', '2016-07-11'],
  8. dtype='datetime64[ns]', name='Date', length=251, freq=None)

上面输出的最后一行有: dtype='datetime64[ns]', 证明 Date 列的数据类型已经从字符串变成了时间. 那么, 下面就尝试着根据索引来查看一些数据:

查看 2017年1月的所有数据:

  1. df['Jan, 2017']

输出:

查看 2017年1月闭市数据的平均值:

  1. df['Jan, 2017'].Close.mean()

输出:

  1. 119.57000000000001

查看具体某一天的数据:

  1. df['2017-01-03']

输出:

查看某几天的数据:

  1. df['2017-01-07':'2017-01-01']

输出:

以上, 就是关于 DatetimeIndex 要跟大家分享的内容了, 总结一下, 可以看到我们只要把日期列设置为索引列, 并且保证其数据类型是时间, 就可以利用这个索引灵活地操作数据了.

下面我们来看下关于 resample() 函数的使用:

  1. df.Close.resample('M').mean()

输出:

  1. Date
  2. 2016-07-31 99.473333
  3. 2016-08-31 107.665217
  4. 2016-09-30 110.857143
  5. 2016-10-31 115.707143
  6. 2016-11-30 110.154286
  7. 2016-12-31 114.335714
  8. 2017-01-31 119.570000
  9. 2017-02-28 133.713684
  10. 2017-03-31 140.617826
  11. 2017-04-30 142.886842
  12. 2017-05-31 152.227727
  13. 2017-06-30 147.831364
  14. 2017-07-31 143.625000
  15. Freq: M, Name: Close, dtype: float64

这里我们可以一步一步来看, 首先我们要获取所有的闭市数据, 在这个数据基础上又通过 resample() 函数加以加工, 函数里传的参数是 M, 就是 month 的缩写, 也就是我们要以月为单位, 也就是说要每个整月的数据, 那要每个月的什么值, 这个是必须要指定的, 否则计算机不知道是返回每个月的合计,还是最小值, 还是平均值等等, 所以后面用了 mean(), 也就是说要去平均值.

还可以将数据以图表的形式输出:

  1. df.Close.resample('W').mean().plot()

输出:

以季度为单位输出柱形图:

  1. df.Close.resample('Q').mean().plot(kind='bar')

输出:

关于 resample 的具体用法, 大家还是可以按照上节课介绍的, 通过快捷键 shift+tab 查看, 它的参数有很多种, 除了我们上面介绍的 M, W, Q, 还有 D, B 等等.

以上, 有问题就给我留言吧, 希望共同进步, enjoy~~

Pandas 基础(14) - DatetimeIndex and Resample的更多相关文章

  1. numpy&pandas基础

    numpy基础 import numpy as np 定义array In [156]: np.ones(3) Out[156]: array([1., 1., 1.]) In [157]: np.o ...

  2. 数据分析02 /pandas基础

    数据分析02 /pandas基础 目录 数据分析02 /pandas基础 1. pandas简介 2. Series 3. DataFrame 4. 总结: 1. pandas简介 numpy能够帮助 ...

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

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

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

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

  5. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  6. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  7. [.net 面向对象编程基础] (14) 重构

    [.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然 ...

  8. Pandas基础学习与Spark Python初探

    摘要:pandas是一个强大的Python数据分析工具包,pandas的两个主要数据结构Series(一维)和DataFrame(二维)处理了金融,统计,社会中的绝大多数典型用例科学,以及许多工程领域 ...

  9. Pandas 基础(1) - 初识及安装 yupyter

    Hello, 大家好, 昨天说了我会再更新一个关于 Pandas 基础知识的教程, 这里就是啦......Pandas 被广泛应用于数据分析领域, 是一个很好的分析工具, 也是我们后面学习 machi ...

随机推荐

  1. http类中的download方法 下载汉字文件名 汉字消失的问题

    将文件名用urlencode转码即可 $http = new \Org\Net\Http; $http->download($fileName, urlencode($showName));

  2. Maven -- 在进行war打包时排除不需要的文件

    https://blog.csdn.net/zsg88/article/details/78128603 <excludes> <!-- 排除文件,不包含子目录,对WEB-INF目录 ...

  3. ORA-27104: system-defined limits for shared memory was misconfigured与Linux内核参数配置有关的案例

    ```[oracle@WWJD01 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Fri Sep 21 15:1 ...

  4. echarts 中国地图 数据自动提示

    mounted() { // 首先每种图是根据series -->type决定的 eg:bar--柱状图 line 折线图 pie饼图 map地图等等三部曲 跟着走 // @第一步都是初始化 v ...

  5. Linux----------开始使用Screen

    1.直接在命令行键入screen命令 screen   然后回车就可以创建一个全新的回话窗口 2.screen -ls 查看开启的会话窗口 3.重新连接会话  screen -r  1231    数 ...

  6. c# webapi上传、读取、删除图片

    public class FileAPIController : BaseController    {        private readonly string prefix = "t ...

  7. 删除打开方式里的wine

    title: "删除打开方式里的wine" date: 2018-05-27T13:54:28+08:00 tags: ["wine"] categories: ...

  8. Python数据分析Pandas库之熊猫(10分钟一)

    pandas熊猫10分钟教程 排序 df.sort_index(axis=0/1,ascending=False/True) df.sort_values(by='列名') import numpy ...

  9. unix socket服务器

    只能处理单个消息,一发一收. int loop(void) {   struct sockaddr_un client_addr;  int server_socket, client_socket; ...

  10. linux 启动流程

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...