Excel+Python:飞速搞定数据分析与处理_【瑞士】费利克斯·朱姆斯坦_AZW3_MOBI_EPUB_PDF_电子书(无页码)_【瑞士】费利克斯·朱姆斯坦
内容节选
第6章 使用 pandas 进行时序分析 时序(time series)是时间轴上的一系列数据点,它们在很多场景中扮演着重要角色:交易员用历史股价计算风险;天气预报基于测量温度、湿度和气压的传感器生成的时序来预测天气;数字市场部依靠网页生成的时序(比如每小时访问量)来得出营销活动所需的结论。 时序分析方面的需求使得数据科学家和分析师开始寻找更优秀的技术来替代 Excel。他们的动机概括起来有以下几点。 大型数据集 时序的快速增长可能会使得数据量超过每张 Excel 数据表的容量上限——大约 1 000 000 行。如果要在报价数据层面上处理盘中股价,那么你通常需要处理成千上万条记录,因为每天、每只股票都会产生一条记录。 日期和时间 正如第 3 章所介绍的那样,Excel 在处理时序的基石,即日期和时间时有很多限制。举例来说,Excel 缺少对时区和毫秒时间格式的支持。而 pandas 支持时区,且使用了 NumPy 的 datetime64[ns] 数据类型,这种数据类型的时间精度可以精确到纳秒。 缺少功能 Excel 甚至缺少处理时序数据的基本工具,例如,将每日时序转换为每月时序本来是一项十分常见的工作,但是在 Excel 中并没有一种方便的方法来完成。 利用 DataFrame 可以处理多种基于时间的索引:DatetimeIndex 是最常见的一种,表示带有时间戳的索引。其他的索引类型,比如 PeriodIndex,是基于时间间隔(比如每小时、每月)的索引。本章只会研究 DatetimeIndex。 6.1 DatetimeIndex 本节会学习如何构造 DatetimeIndex,如何筛选属于特定时间范围的索引,以及如何处理时区。 6.1.1 创建 DatetimeIndex pandas 为构造 DatetimeIndex 提供了 date_range 函数。它会接受一个开始日期、一个频率参数,以及周期数或者结束日期: 现在回到第 5 章中微软股价的时序。如果仔细观察列的数据类型,你会注意到 Date 列是 object 类型,也就是说 pandas 会将时间戳作为字符串来解释: 有两种方法可以修复这个问题并将其转换为 datetime 数据类型。一种方法是在该列上执行 to_datetime 函数。如果你想直接对原本的 DataFrame 进行修改,那么一定要记得将修改后的列赋值给原本的 DataFrame: 另一种方法是通过 parse_dates 参数告诉 read_csv 这一列包含时间戳。parse_dates 会接受一个列名列表或者索引作为参数。另外,你可能总是需要将时间戳转换为 DataFrame 的索引,因为我们马上会看到,以时间戳为索引可以让筛选数据更加简单。在 index_col 参数中提供想要用作索引的列名或索引可以省去一次 set_index 调用: 注意,第二次调用 info 输出的内容发生了变化,第二行的内容从 RangeIndex: 8622 entries, 0 to 8621 变为 DatetimeIndex: 8622 entries, 1986-03-13 to 2020-05-27。这就表明你现在正在处理一个包含 DatetimeIndex 的 DataFrame。如果想转换其他的数据类型(比如想将 Volume 从 int 转换为 float),你也有两种选择:要么为 read_csv 函数提供参数 dtype={"Volume": float};要么像下面这样使用 astype 方法。 In [11]: msft.loc[:, "Volume"] = msft["Volume"].astype("float") msft["Volume"].dtype Out[11]: dtype('float64') 处理时序时,在开始分析之前最好确保索引井然有序: In [12]: msft = msft.sort_index() 如果只需要访问 DatetimeIndex 的一部分,比如只需要访问日期部分而不需要访问时间,那么可以像下面这样访问它的 date 属性: In [13]: msft.index.date Out[13]: array([datetime.date(1986, 3, 13), datetime.date(1986, 3, 14), datetime.date(1986, 3, 17), ..., datetime.date(2020, 5, 22), datetime.date(2020, 5, 26), datetime.date(2020, 5, 27)], dtype=object) 除了 date,也可以访问 year、month、day 等属性。要在......
- 信息
- 声明
- O'Reilly Media, Inc. 介绍
- 业界评论
- 本书赞誉
- 前言
- 第一部分 Python 入门
- 第1章 为什么要用 Python 为 Excel 编程
- 第2章 开发环境
- 第3章 Python 入门
- 第二部分 pandas 入门
- 第4章 NumPy 基础
- 第5章 使用 pandas 进行数据分析
- 第6章 使用 pandas 进行时序分析
- 第三部分 在 Excel 之外读写 Excel 文件
- 第7章 使用 pandas 操作 Excel 文件
- 第8章 使用读写包操作 Excel 文件
- 第四部分 使用 xlwings 对 Excel 应用程序进行编程
- 第9章 Excel 自动化
- 第10章 Python 驱动的 Excel 工具
- 第11章 Python 包追踪器
- 第12章 用户定义函数
- 附录 A Conda 环境
- 附录 B 高级 VS Code 功能
- 附录 C 高级 Python 概念
- 关于作者
- 关于封面