关于Python数据分析的入门指南
有一个朋友最近问到这个问题,我觉得把它公开出来对其他人也会有帮助。这是给完全不了解Python而想找到从零到一的最简单的路径的人的建议:
1. 在这里(https://www.continuum.io/downloads)下载适用于你的操作系统的Python 3.X的Anaconda发行版本。这个预先捆绑的发行版会帮助你避开很多跟安装相关的头疼问题。有很多重要的数据分析包都会被预先安装好。
2. 等你安装好之后,测试一下,确认默认的Python解释器是你刚刚安装的版本。这非常重要,因为可能在你的系统里已经安装了一个版本的Python,但是它并不会包含Anaconda发行版中的所有东西,所以你得确保新的版本才是默认版本。在Mac/Linux系统上,你可以在终端输入which python,或者你也可以运行Python的解释器并且确保版本跟你下载的是相符的。如果这一切运行良好,在安装的时候就应该被设置成默认的版本。如果并非如此,你就得停下来并且解决它。
3. 在命令解释器(Shell)中输入jupyter notebook命令,这会打开一个浏览器窗口。如果没有的话,打开浏览器,在地址栏输入:http://localhost:8888。在你打开这个页面之后,创建一个新的Python笔记本(Python notebook)。
4. 点击http://www.kaggle.com/最上面菜单栏中的kernels,并在新打开的页面中的语言过滤器中选择Python(https://www.kaggle.com/kernels?language=Python)。这里大部分都是其他人利用Kaggle上免费公开的数据集做分析或者组建模型时使用的Jupyter笔记本(Jupyter Notebook)。在其中寻找标题里包含类似EDA(Exploratory Data Analysis,探索性数据分析)的笔记本,而不是那些创建预测模型的笔记本。找一个你觉得有趣的,并且在你的笔记本中再现它。
注意: 你会发现,当你再现某些分析的时候,你会遭遇导入错误(Import error)。这常常是因为分析者安装了并没有包含在Anaconda发行版中的包。你最终会需要学习如何跟conda包管理器(Conda package manager)交互,这将是你最终会走入的许多兔子洞之一。通常而言,事情都非常简单,你只需要用到conda install <package name>就可以了,但是你需要找出正确的包的名称,有时候,你还得确认一些其他的细节。还有的时候你可能得用到pip install <package name>,迟一点你都会学到的。
高级库总结
这里是对你会经常接触的重要的库的简要总结:
NumPy:拥有大量的科学计算的核心功能。由于它的内部运算是通过C语言实现的,所以比用Python写成的同样的函数,它的速度会快许多。但它并不是最用户友好的包。
SciPy:跟NumPy非常相似,但是有更多的方式来从分布中取样,计算检验统计量,等等。
MatPlotLib:主要的画图框架。不太讨喜,但却是必备的包。
Seaborn:在导入MatPlotLib包之后导入Seaborn包,默认地,它会使你的绘图变得漂亮许多。它也有一些独特的功能,但是我发现它最酷炫的功能运行起来实在太慢了。
Pandas:基本上是对NumPy/SciPy进行轻量的包装,使它们更用户友好一些。对于和表格数据交互非常理想,Pandas中把表格数据称为数据框(DataFrame)。对画图功能也有一些包装,使得无需使用MPL(Meta-Programming Library,元编程库)就可以快速实现画图。我使用Pandas而非其他的工具来操作数据。
Scikit-learn:包含大量的监督和非监督机器学习算法,以及许多做模型选择的度量工具,是一个优秀的预处理库。这个预处理库可以做主成分分析(Principal Component Analysis),对分类变量进行编码,等等。
小技巧
1. 在Jupyter笔记本中,在运行代码块(Cell)前,于任何一个对象前放置一个问号,它会为你打开这个对象的文档。在你遗忘了你所使用的函数的细节的时候,这是非常方便的。比如说,my_dataframe.apply会解释pandas.DataFrame对象中的apply方法,而这个my_dataframe是pandas.DataFrame的一个实例。
2. 无论你在使用什么库,你通常都需要一直查阅文档,那么就干脆一直在浏览器中打开它。可选变量以及细微的差别实在是太多了。
3. 当你遇到无可避免的故障检修的时候,stackoverflow上也许已经有了问题的答案。