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

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

原文地址:https://www.cnblogs.com/djw12333/p/11671131.html

时间: 2024-11-13 11:15:34

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

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

随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛的编程语言之一,尤其是近几年来随着大数据和人工智能(机器学习.自然语言处理.计算机视觉等)的发展,Python也得到了越来越广泛的应用,另外Python在Web开发.后端开发和嵌入式开发领域也有广泛的应用. 小编推荐一个学Python的学习裙,九三七六六七 五零九,无论你是大牛还是小白,是想转行还是

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

pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二维矩阵:DataFrame 三维面板数据:Panel 背景:为金融产品数据分析创建的,对时间序列支持非常好! 数据结构 导入pandas模块 import pandas as pd 读取csv文件,数据类型就是二维矩阵 DataFrame df = pd.read_csv('路径')type(df)

python数据分析-07时间序列处理

import pandas as pdimport numpy as npfrom pandas import Series,DataFrame #时间序列的操作基础from datetime import datetime"""t = datetime(2016,9,10)print(t)#2016-09-10 00:00:00 data_list = [ datetime(2016,9,1), datetime(2016,9,10), datetime(2017,9,1)

《利用Python进行数据分析》之pandas的时间序列基础

本章以<利用python进行数据分析>的第10章:时间序列 为基础,整理了pandas 库中时间序列相关用法. 时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(timestamp) 固定时期(period) 时间间隔(interval) 实验或过程时间 pandas提供了一组标准的时间序列处理工具和算法,可以轻松的对时间序列进行切片.聚合,对定期/不定期的时间序列进行重采样等. 这些工具大部分对金融和经济数据尤为有用,同时也可以用来分析服务器和日志数据. 1.日期和时间数据类

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

Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4节 透视表和交叉表 第5节 时间序列 第6节 日期的规范.频率以及移动 第7节 时区处理 第8节 时期及算术运算 第9节 重采样及频率转换 第10节 时间序列绘图 groupby 技术 一.实验简介 Python 数据分析(二)需要同学们先行学完 Python 数据分析(一)的课程. 对数据集进行分

Python数据分析基础与实践 Python数据分析实践课程 Python视频教程

课程简介: Python数据分析基础与实践 Python数据分析实践课程 Python视频教程----------------------课程目录------------------------------├<章节1Python概况>├<章节2Python安装>├<章节3数据准备>├<章节4数据处理>├<章节5数据可视化>├<章节6网页数据抓取>├<章节7连接MySQL>├<章节8数据分析> 下载地址:百度网盘

分享《Python数据分析基础教程:NumPy学习指南(第2版)》高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多资料分享:http://blog.51cto.com/3215120 <Python数据分析基础教程:NumPy学习指南(第2版)>高清中文PDF+高清英文PDF+源代码 高清中文版PDF,249页,带目录和书签,文字能够复制粘贴:高清英文版PDF,310页,带目录和书签,文字能够复制粘贴:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:其中高清中文版如图: 原文地址:http://

Numpy学习:《Python数据分析基础教程NumPy学习指南第2版》中文PDF+英文PDF+代码

NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多功能,而且业已成为Python科学计算生态系统的重要组成部分.但与这些商业产品不同,它是免费的开源软件. 推荐学习<Python数据分析基础教程NumPy学习指南第2版>,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),让工作更有成效,让代码更加简洁而高效. 学习参考: &l

Python数据分析——基础02

Python数据分析--基础02 元组(tuple) 元组是一个固定长度,不可改变的序列对象. 创建元组 用逗号分隔一列值 tup = 1,2,3 # (1, 2, 3) 用圆括号 tup = (1,2,3), (4,5,6,7) # ((1, 2, 3), (4, 5, 6, 7)) 使用tuple()可以将任意序列或迭代器转换成元组 tuple([1,2,3,4]) # (1, 2, 3, 4) tuple('string') # ('s', 't', 'r', 'i', 'n', 'g')