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

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

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

输出:

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

type(df.Date[0])

输出:

str

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

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

输出:

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

查看一下索引:

df.index

输出:

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

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

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

df['Jan, 2017']

输出:

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

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

输出:

119.57000000000001

查看具体某一天的数据:

df['2017-01-03']

输出:

查看某几天的数据:

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

输出:

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

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

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

输出:

Date
2016-07-31 99.473333
2016-08-31 107.665217
2016-09-30 110.857143
2016-10-31 115.707143
2016-11-30 110.154286
2016-12-31 114.335714
2017-01-31 119.570000
2017-02-28 133.713684
2017-03-31 140.617826
2017-04-30 142.886842
2017-05-31 152.227727
2017-06-30 147.831364
2017-07-31 143.625000
Freq: M, Name: Close, dtype: float64

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

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

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

输出:

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

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. php7.2连接Sqlserver2008 r2

    下载Sql Server PHP扩展 Microsoft Drivers for PHP for SQL Server https://github.com/Microsoft/msphpsql/re ...

  2. ios sdk 配置路径

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport command+shift + ...

  3. spring boot集成aop实现日志记录

    1.pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  4. DS18B20初上电显示85℃问题

    以前用的温度采集都是用的AD,这次改为了DS18B20,看了资料,没有很复杂的部分,重要的就是时序.板子出来后初步测试也能正常读取温度,然而有个问题比较奇怪,就是在板子初上电时读取温度总是显示为+85 ...

  5. PeopleSoft Excel To CI

    Excel to CI 链接信息要注意,HTTP还是HTTPS, 端口号从链接可以看到,没有的话可能是默认80端口. 像一下这个页面也可以用CI 导入数据(secondary page)

  6. Linux Centos 删除除某(多)个文件之外的所有文件

    好久没有写东西了.通常我们通过rm -rf  *可以直接强制删除当前文件夹里面的所有内容,但是有些时候我们需要保留一些文件,就比如,网站转移更新需要保留程序压缩包等就需要用到在linux centos ...

  7. ECMAScript6 入门教程记录 变量的解构赋值

    (1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...

  8. BOM定时器,onresize

    定时器 <body> <button onclick="stop()">吃药</button> <button onclick=" ...

  9. 2017-12-26--mysql(5.6.15),linux下安装使用

    本文档的目的是,指导使用者安装.配置.还原所需要用到的mysql数据库.仅提供linux版本服务器的安装说明,且linux版本为64位的Centos6.4.同时,会提供的mysql安装包(MySQL- ...

  10. Centos 7 安装 ELK 5.6.8 及基础的配置

    下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.rpm wget https://ar ...