http://www.jianshu.com/p/d89bc0898264
每一个数据分析师或是数据科学家都使用各自不同的技术栈。即使同样使用Python做为主力数据分析语言,每个人会用到的工具组合也不尽相同。
但不管怎么说,对于希望使用python来进行数据分析工作的人来说,学习iPython,NumPy,pandas,matpotlib这个组合是一个目前看来怎么都不会太错的方向。
本书恰好精确地涵盖了这几个方向。
本书的作者Wes McKinney正是pandas的主要作者。作者有多年的Python数据分析工作经验。除了pandas之外,作者对本书覆盖的这iPython,NumPy,pandas,matpotlib等也都有着很深的理解。
本书的结构比较特别。前两章是背景介绍。第三、四、五章分别介绍了一下iPython,NumPy,pandas。第六到十一章是一些比较具体的功能的介绍以及实例,以pandas的使用为主,中间却又插进了一个讲matplotlib的第八章。第十二章又回到NumPy。全书最后还附了一个大约三十页篇幅的Python快速入门。
这个结构给人的感觉是作者在写这本书的时候有着很大的抱负:希望能把一个完全的新手带入Python数据分析的大门,即使这个新手在此之前对数据分析和Python都完全没有概念。
这种抱负对于一本不到五百页的教材不免有些过于宏大。一个明显的负面结果是第一、二章和后面的章节之间存在着较大的脱节。第一、二章的内容其实是适合于一个完全没有数据分析经验的新手的。但后面的章节对于新手来说则比较困难的:主要的困难不在于理解书中的技术,而在于真正领会到这些技术在实际中究竟有什么用。
作者并非没有意识到这个困难。事实上,他试图用贯穿全书的大量实例来化解这个困难。但是,事于愿违的是,这些实例反而造成了阅读上障碍:这些实例很可能是书中最为乏味无趣的部分。很难想象会有多少读者真正有耐心把所有实例从头到尾认真读完,更不用说,像作者所希望的那样,把这些实例一一重复一遍。
由于这个特点,对于初学者,这本书可能更适合作为配合课程使用的教材,而不是自学用的教材。比起重复书中的实例,与课程进度相配合的作业可能更能提高初学者的兴趣。
对于已经有一些Python数据分析经验的读者,这本书可能会显得较初级。但是,跳这些比较初级的部分,本书还有很多对于有经验的读者来说很有价值的内容。在我看来,这些特别有价值的内容集中在第四、五、八、十二章对NumPy,pandas,matpotlib等工具库的介绍中。由于作者对这些工具有着很深的理解,这些章节很好地阐述了这几个工具库的基本设计思路,而非简单地堆砌知识点。
在读这本书前,我对于这几个工具库各有一到两年的使用经验,但除了最初看过了一些入门tutorial之外,我并没有系统地学习过相关的内容,通常都是要使用某个功能时看文档或是实例。这本书中涉及到的大部分知识,我的工作中都略有涉及过,但我确实感觉到,本书对于我真正理解这些库有很大的帮助。
最后,我手上这本书出版的时间是2012年(豆瓣上有2013版的信息,但我在amazon上似乎并没有看到),所以有些内容已经比较陈旧。以iPython为例,虽然第三章中用一小节简单介绍了iPython notebook,但绝大部分内容还是基于传统的命令行iPython,包括了大量在iPython notebook环境下并不适用的操作。但从我的身边的情况来看,现下的绝大部分iPython使用者都以Jupyter notebook(即iPython notebook)为主要工作环境,直接使用命令行iPython的用户已经很少了。
以下是分章节的评论。
1. Preliminaries
非常基础的知识,只要是稍有经验的读者都可以直接跳过。
2. Introductory Examples
通过一些实例来解释Python数据分析是做什么的、基本流程如何,主要的目的在于“引起读者的兴趣”。我觉得比起后面章节中的实例,这一章中的实例还比较有趣。
3. IPython: An Interactive Computing and Development Environment
介绍iPython。对于希望使用Jupyter notebook(即ipython notebook)的读者来说,可能不太够。
4. NumPy Basics: Arrays and Vectorized Computation
很不错的一章。特别难得的是,作者试图帮助读者真正理解NumPy的设计思路和构成逻辑,而不是简单地教会读者使用方法。行文很有条理。
5. Getting Started with pandas
很不错的一章,和上一章的感觉类似。考虑的本书作者的身份,这一章写得好是理所应当。
6. Data Loading, Storage, and File Formats
介绍如何读/写各种格式的文件。感觉和直接读文档其实差别不是很大。
7. Data Wrangling: Clean, Transform, Merge, Reshape
挺好的一章。内容稍多,但还是挺有用的。
8. Plotting and Visualization
主要介绍matplotlib。挺不错的一章,和第四、五章感觉类似。
9. Data Aggregation and Group Operations
比较有意思的一章,但有些过于复杂的使用方法,觉得用到的机会并不多。
10. Time Series
前一半不错,对初学者来说很有帮助。后一半比较细节和偏。
11. Financial and Economic Data Applications
感觉这章单独把financial和economic data的应用提出来其实意义不大,毕竟这只是data analysis的众多方向之一。而且,本章的知识点和前面几章的重复很多,基本上可以看做是前几章内容的实例练习。这章存在主要原因其实是作者的financial背景。
12. Advanced NumPy
很好的一章。对于想要真正掌握NumPy的读者,本章中的知识是很有价值的。不过由于本书总体偏入门级,本章虽然题为“Advanced NumPy”,实质上内容并不太“advanced”。