内容简介
还在苦苦寻觅用Python控制、处理、整理、分析结构化数据的完整课程?本书含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy、pandas、matplotlib以及IPython等)高效地解决各式各样的数据分析问题。
由于作者WesMcKinney是pandas库的主要作者,所以本书也可以作为利用Python实现数据密集型应用的科学计算实践指南。本书适合刚刚接触Python的分析人员以及刚刚接触科学计算的Python程序员。
•将IPython这个交互式Shell作为你的首要开发环境。
•学习NumPy(NumericalPython)的基础和高级知识。
•从pandas库的数据分析工具开始。
•利用高性能工具对数据进行加载、清理、转换、合并以及重塑。
•利用matplotlib创建散点图以及静态或交互式的可视化结果。
•利用pandas的groupby功能对数据集进行切片、切块和汇总操作。
•处理各种各样的时间序列数据。
•通过详细的案例学习如何解决Web分析、社会科学、金融学以及经•济学等领域的问题。
目录
- 前言1
- 第1章准备工作5
- 本书主要内容5
- 为什么要使用Python进行数据分析6
- 重要的Python库7
- 安装和设置10
- 社区和研讨会16
- 使用本书16
- 致谢18
- 第2章引言20
- 来自bit.ly的1.usa.gov数据21
- MovieLens1M数据集29
- 1880—2010年间全美婴儿姓名35
- 小结及展望47
- 第3章IPython:一种交互式计算和开发环境48
- IPython基础49
- 内省51
- 使用命令历史60
- 与操作系统交互63
- 软件开发工具66
- IPythonHTMLNotebook75
- 利用IPython提高代码开发效率的几点提示77
- 高级IPython功能79
- 致谢81
- 第4章NumPy基础:数组和矢量计算82
- NumPy的ndarray:一种多维数组对象83
- 通用函数:快速的元素级数组函数98
- 利用数组进行数据处理100
- 用于数组的文件输入输出107
- 线性代数109
- 随机数生成111
- 范例:随机漫步112
- 第5章pandas入门115
- pandas的数据结构介绍116
- 基本功能126
- 汇总和计算描述统计142
- 处理缺失数据148
- 层次化索引153
- 其他有关pandas的话题158
- 第6章数据加载、存储与文件格式162
- 读写文本格式的数据162
- 二进制数据格式179
- 使用HTML和WebAPI181
- 使用数据库182
- 第7章数据规整化:清理、转换、合并、重塑186
- 合并数据集186
- 重塑和轴向旋转200
- 数据转换204
- 字符串操作217
- 示例:USDA食品数据库224
- 第8章绘图和可视化231
- matplotlibAPI入门231
- pandas中的绘图函数244
- 绘制地图:图形化显示海地地震危机数据254
- Python图形化工具生态系统260
- 第9章数据聚合与分组运算263
- GroupBy技术264
- 数据聚合271
- 分组级运算和转换276
- 透视表和交叉表288
- 示例:2012联邦选举委员会数据库291
- 第10章时间序列302
- 日期和时间数据类型及工具303
- 时间序列基础307
- 日期的范围、频率以及移动311
- 时区处理317
- 时期及其算术运算322
- 重采样及频率转换327
- 时间序列绘图334
- 移动窗口函数337
- 性能和内存使用方面的注意事项342
- 第11章金融和经济数据应用344
- 数据规整化方面的话题344
- 分组变换和分析355
- 更多示例应用361
- 第12章NumPy高级应用368
- ndarray对象的内部机理368
- 高级数组操作370
- 广播378
- ufunc高级应用383
- 结构化和记录式数组386
- 更多有关排序的话题388
- NumPy的matrix类393
- 高级数组输入输出395
- 性能建议397
- 附录APython语言精要401
每一个数据分析师或是数据科学家都使用各自不同的技术栈。即使同样使用Python做为主力数据分析语言,每个人会用到的工具组合也不尽相同。
但不管怎么说,对于希望使用python来进行数据分析工作的人来说,学习iPython,NumPy,pandas,matpotlib这个组合是一个目前看来怎么都不会太错的方向。
本书恰好精确地涵盖了这几个方向。本书的作者Wes McKinney正是pandas的主要作者。作者有多年的Python数据分析工作经验。除了pandas之外,作者对本书覆盖的这iPython,NumPy,pandas,matpotlib等也都有着很深的理解。
本书的结构比较特别。前两章是背景介绍。第三、四、五章分别介绍了一下iPython,NumPy,pandas。第六到十一章是一些比较具体的功能的介绍以及实例,以pandas的使用为主,中间却又插进了一个讲matplotlib的第八章。第十二章又回到NumPy。全书最后还附了一个大约三十页篇幅的Python快速入门。
这个结构给人的感觉是作者在写这本书的时候有着很大的抱负:希望能把一个完全的新手带入Python数据分析的大门,即使这个新手在此之前对数据分析和Python都完全没有概念。
这种抱负对于一本不到五百页的教材不免有些过于宏大。一个明显的负面结果是第一、二章和后面的章节之间存在着较大的脱节。第一、二章的内容其实是适合于一个完全没有数据分析经验的新手的。但后面的章节对于新手来说则比较困难的:主要的困难不在于理解书中的技术,而在于真正领会到这些技术在实际中究竟有什么用。
作者并非没有意识到这个困难。事实上,他试图用贯穿全书的大量实例来化解这个困难。但是,事于愿违的是,这些实例反而造成了阅读上障碍:这些实例很可能是书中最为乏味无趣的部分。很难想象会有多少读者真正有耐心把所有实例从头到尾认真读完,更不用说,像作者所希望的那样,把这些实例一一重复一遍。
学过C类(C++,JAVA)语言后,Python很快就可以学会。大多数运算和方法与matlab重合,但由于是开源且面向人更多,取代专业语言及封闭式社区指日可待。内容侧重数据的观测收集清理,而构建模型及分析预测是统计学习的专门学习。