从头学习将Python用于数据科学的一个完整教程(一)

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

引言

  几年后发生了。在使用SAS工作超过5年后,我决定走出自己的舒适区。作为一个数据科学家,我寻找其他有用的工具的旅程开始了!幸运的是,没过多久我就决定,Python作为我的开胃菜。

  我总是有一个编写代码的倾向。这次我做的是我真正喜欢的。代码。原来,写代码是如此容易!

  我一周内学会了Python基础。并且,从那时起,我不仅深度探索了这门语言,而且也帮助了许多人学习这门语言。Python是一种通用语言。但是,多年来,具有强大的社区支持,这一语言已经有了专门的数据分析和预测模型库。

  由于Python缺乏数据科学的资源,我决定写这篇教程来帮助别人更快地学习Python。在本教程中,我们将讲授一点关于如何使用Python进行数据分析的信息,咀嚼它,直到我们觉得舒适并可以自己去实践。

learn python for data science from scratch

目录

1. 数据分析的Python基础

  • 为什么学Python用来数据分析

  • Python 2.7 v/s 3.4

  • 怎样安装Python

  • 在Python上运行一些简单程序

2. Python的库和数据结构

  • Python的数据结构

  • Python的迭代和条件结构

  • Python库

3. 在Python中使用Pandas进行探索性分析

  • 序列和数据框的简介

  • 分析Vidhya数据集——贷款的预测问题 

4. 在Python中使用Pandas进行数据再加工

5. 使用Python中建立预测模型

  • 逻辑回归

  • 决策树

  • 随机森林

让我们开始吧

amazing-aug-1

1.数据分析的Python基础


为什么学Python用来数据分析

  很多人都有兴趣选择Python作为数据分析语言。这一段时间以来,我有比较过SAS和R。这里有一些原因来支持学习Python:

  • 开源——免费安装

  • 极好的在线社区

  • 很容易学习

  • 可以成为一种通用的语言,用于基于Web的分析产品数据科学和生产中。

  不用说,它仍然有几个缺点:

  • 它是一种解释性的语言,而不是编译的语言,因此可能占用更多的CPU时间。然而,由于它节省了程序员的时间(由于学习的方便),它可能仍然是一个很好的选择。

Python 2.7 v/s 3.4

  这是关于Python的一个最具争议的话题。你可能总是不能避免遇到,尤其是如果你是一个初学者。这里没有正确/错误的选择。它完全取决于具体情况和你的需要。我会尝试给你一些建议,以帮助你做出明智的选择。

为什么选择Python 2.7

  1. 极好的社区支持!这是你在初期需要的东西。Python 2发行于2000年末,已经被使用超过15年。

  2. 很多第三方库!虽然许多库已经提供了3.X的支持,但仍然有大量的模块只工作在2.X。如果你计划将Python用于具体的应       用,如Web开发这种高度依赖外部模块的,你选择2.7可能会更好。

  3. 3.X版本的一些特性有向后兼容性,可以使用2.7版本。

为什么选择Python 3.4

  1. 更整齐和更快!Python开发者修正了一些固有的问题和小缺点,以此为未来建立一个强大的基础。这些可能不是很相关,但最终会很重要。

  2. 这是未来!2.7是2 .X族发布的最后一个版本,并且最终每个人都要转移到3.X版本。Python 3在过去5年已经发布的稳定版本,并将继续。

  没有明确的赢家,但我想,底线是,你应该专注于学习Python语言。版本之间的转换应该只是一个时间问题。敬请期待,不久的将来一个专门对比Python 2.X和3 X的文章!

怎样安装Python

有两种方法安装Python

  • 你可以直接从项目网站下载Python,然后单独安装你想要的组件和库

  • 或者,你可以下载并安装一个包,它附带了预装的库。我建议您下载Anaconda。另一种选择是 Enthought Canopy Express。


第二种方法提供了一个避免麻烦的安装,因此我会推荐给初学者。这种方法是你必须等待整个包进行升级,   即使你只是对一个单一的库的最新版本感兴趣。它应该不重要,直到和除非,直到和除非,你正在做的尖端统计研究。

选择开发环境

  一旦你已经安装了Python,选择环境可以有很多种选择。这里是3个最常见的选择:

  • 终端/基于Shell

  • IDLE(默认环境)

  • iPython notebook ——类似于R的markdown

IDLE editor for Python


  而环境权取决于你的需要,我个人更喜欢iPython notebook一点 。它提供了许多良好的功能,编写代码的同时还可以用于记录,你可以选择在上面运行代码块(而不是一行一行的执行)。

我们在整个教程中将使用Ipython 环境

热身:跑第一个Python程序

  你可以使用Python作为一个简单的计算器来开始:


jupyter1

有一些事情需要注意:

  • 你可以在你的终端/ CMD键入“IPython notebook”来启动IPython notebook,这取决于你的工作在操作系统

  • 你可以通过简单地点击上面截图中的名字来对IPython notebook命名

  • 界面显示In[*]代表输入和Out[*]代表输出。

  • 你可以通过按“Shift + Enter”或“ALT + Enter”来执行代码,如果你后面还想插入一行。

  在我们深入挖掘如何解决问题之前,让我们退后一步,了解Python的基本知识。当我们知道数据结构和迭代和条件结构是形成任何语言的关键。在Python中,这些包括列表、字符串、元组、字典、for循环,while循环,if-else等等,让我们来看看下面的因素。

2 .在Python上运行一些简单程序


Python的数据结构

  以下是Python中使用的一些数据结构。你应该熟悉他们,以便恰当的使用它们。

  • 列表——列表是在Python中最通用的数据结构。列表可以这样简单的定义:就是在方括号中一系列用逗号来分隔的值。列表可能包含不同类型的项,但它们通常都有相同类型的。Python列表是可变的,列表中的单个元素是可以改变的。

  这里是一个快速的例子,定义了一个列表,然后访问它:


python_lists

  • 字符串——字符串可以简单的使用单引号(')、双引号(”)或三引号(’’’)来定义。字符串封闭三引号(’’’)中可以跨越多行的代码,在文档字符串中是很常用的(记录功能的Python方式)。\作为一个转义字符。请注意,Python中的字符串是不可变的,所以你不能改变字符串的部分。


python_strings


  • 元组——元组由一系列由逗号分隔的值表示。元组是不可变的,输出的用括号包围,目的是嵌套结构可以被正确处理。此外,尽管元组是不可变的,但它们可以在必要是含有可变数据。

  因为元组是不可变的,不可改变的,他们相对列表来说可以处理的更快。因此,如果你的清单是不可能改变的,你应该使用元组,而不是列表。

Python_tuples

  • 字典——字典是键:值对一个无序集合,要求键是唯一的(在一个字典里)。一对大括号创建一个空的字典:{ }。

Python_dictionary

Python的迭代和条件结构

  和大多数语言一样,Python也有一个FOR循环,这是最广泛使用的迭代方法。它有一个简单的语法:

blob.png

  这里的“Python的迭代可以是列表、元组或其他先进的数据结构,我们将在后面的章节中探讨。让我们来看看一个简单的例子,确定一个数字的因子。

blob.png

  来看看条件语句,它们是用来基于条件执行代码片段。最常用的结构是if-else,有以下语法:

blob.png

  例如,如果我们想打印出某个数字n是偶数还是奇数:

blob.png

  既然你熟悉了Python的基础,我们来更近一步。如果你像完成以下任务:

  1. 乘2矩阵

  2. 求二次方程的根

  3. 绘制条形图和直方图

  4. 建立统计模型

  5. 访问网页

  如果你想从零开始写代码,它将是一场噩梦,你使用Python不会超过2天!但不要担心这些。值得庆幸的是,有许多预定义的库,我们可以直接导入到我们的代码,使我们的生活很容易。

例如,考虑我们刚才看到的因子的例子。我们可以一步就完成:

blob.png

  当然,为了这样我们需要导入的math库。让我们探索下一个不同的库。

Python库

  在开始我们的学习Python之旅之前,让我们先一步,了解一些有用的python库。第一步显然是要学会将它们导入到我们的环境中。在Python中有以下几种方法:

blob.png

  在第一种方式中,我们已经为math库定义了一个别名m。现在我们可以使用数学库的各种功能(例如阶乘, 通过引用别名m.factorial()) 。

  第二方式,你需要导入math的整个命名空间,你可以直接使用factorial(),而不用提到math。

提示:谷歌推荐您使用第一种方式导入库,因为您将知道函数来自何处。

  下面是一个库列表,你将在任何科学计算和数据分析中用到:

  • NumPy代表数值Python。NumPy最强大的功能是n维数组。该库还包含基本的线性代数函数,傅里叶变换,高级的随机数功能,以及集成其他低级语言如Fortran,C和C++的工具。

  • SciPy代表科学的Python。SciPy是基于NumPy的。它是最有用的库之一,具有各种高层次的科学和工程模块,如离散傅立叶变换,线性代数,优化和稀疏矩阵。

  • Matplotlib用于绘制各种各样的图表,从直方图到线图,再到热图。你可以在IPython notebook中使用PyLab(IPython notebook–PyLab = inline)以此使用这些绘图功能的inline。如果你忽略inline选项, PyLab 会将IPython notebook环境转换成类似于Matlab的环境。你也可以使用 Latex命令将math库添加到您的绘图中。

  • Pandas对于结构化数据操作和控制。它广泛用于数据再加工和数据准备。Pandas说最近一直在推动对Python Python的使用数据科学家共同体的工具。

  • Scikit Learn机器学习库。建立在NumPy、SciPy和matplotlib的基础上,这个库包含了机器学习和统计模型包括分类、回归、聚类和降维等很多有效的工具。

  • Statsmodels用于统计建模。statsmodels是一个Python模块,允许用户探索数据,估计统计模型,并进行统计检验。一个广泛的描述性统计,统计检验的列表。绘图功能,和结果统计可用于不同类型的数据和每个估计。

  • Seaborn用于统计数据的可视化。Seaborn是Python中用来绘制让人喜欢的并能提供大量信息的统计图形库。它是基于matplotlib。Seaborn旨在使可视化成为探索和理解数据的核心部分。

  • Bokeh创建交互式图、仪表盘和现代Web浏览器上的数据应用。它允许用户生成的优雅和简洁的d3.js风格的图形。此外,在非常大的或流媒体数据集上,它具有高性能的交互性的能力。

  • Blaze扩展NumPy和Pandas的分布式和流媒体数据集。它可以用来访问来自多种来源的数据,包括bcolz,MongoDB,SQLAlchemy,Apache Spark, PyTables等等,结合Bokeh,Blaze可以作为一个非常强大的工具,用于对大规模数据创建高效的的可视化和仪表板。

  • Scrapy用于网络爬虫。它是用于获取特定数据模式的一个非常有用的框架,。它可以通过开始的一个网站主页的网址,然后通过挖掘网页内的网站收集信息。

  • SymPy用于符号计算。它具有广泛的功能,从基本的符号运算到微积分,代数,离散数学和量子物理学。另一个有用的功能是将计算的结果格式化为LaTeX码的能力。

  • Requests用于访问网络。它的工作原理类似于Python标准库urllib2,但是更容易编码。但对于初学者,你会发现和urllib2细微的差别,Requests可能更方便。

  其它的库,你可能需要:

  • os 用于操作系统和文件操作

  • networkxigraph基于数据操作绘制图形

  • regular expressions 用于在文本数据中查找模式

  • BeautifulSoup将探索Web。它不如Scrapy,它一次运行将从一个单一的网页中提取信息。

  现在我们已经熟悉Python的基础和更多的库,让我们深入到通过Python解决问题。是的,我的意思是做一个预测模型!在这个过程中,我们使用了一些强大的库,也遇到了下一级的数据结构。我们将带你通过这3个关键阶段:

  1. 数据探索—从我们所拥有的数据中发现更多

  2. 数据修改—清理数据和并修改它使它更适合用来统计建模

  3. 预测建模—运行的实际算法,自得其乐

3.在Python中使用Pandas进行探索性分析

  为了进一步探索我们的数据,让我把你介绍给另一种动物(好像Python是不够的!)–– Pandas

pandas

  Pandas是Python最有用的一种数据分析库的我知道这些名字听起来很奇怪,但坚持下去!)它们对于增加一直在增加Python在数据科学界的使用量起了很大的作用。我们现在将使用Pandas从Analytics Vidhya的竞赛中读数据集,进行探索性分析,建立我们的第一个基本分类算法来解决这一问题。

  在加载数据之前,让我们了解Pandas 中的2个关键的数据结构——序列和数据框

序列和数据框的简介

  序列可以被理解为一个1维标记/索引数组。你可以通过这些标签访问这个序列的各个元素。

  一个数据框类似于Excel工作簿–你可以使用列名来引用列,可以通过行号来访问行数据,本质的区别是,在数据帧中,列名和行号是列和行的索引。

  More: 10 Minutes to Pandas

实践数据集——贷款预测问题

  您可以从这里下载数据集。这里是变量的描述:

blob.png

让我们从数据探索开始

  开始,通过在你的你的终端/ Windows命令提示符键入下面的代码,来以Inline Pylab模式启动IPython界面:

blob.png

  这在PyLab环境下打开IPython notebook,其中有几个有用的库已经导入。此外,你将能够绘制您的数据内联,这对于互动的数据分析是一个非常好的环境。你可以通过键入以下命令,检查环境是否正确的加载了(并获得如下图所示的输出):

plot(arange(5))

ipython_pylab_check

  我目前在Linux上工作,并已将数据集存储在以下位置: 

/home/kunal/Downloads/Loan_Prediction/train.csv

导入库和数据集:

下面是我们将在本教程中使用的库:

  • numpy

  • matplotlib

  • pandas

  请注意,你不需要导入matplotlib和NumPy,因为是在PyLab环境下。但我仍然在代码中保留了它们,以防你在不同的环境中使用代码。

  导入库以后,你可以使用read_csv()函数读数据集。这是直到这个阶段的代码:

blob.png



英文原文:https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-learn-data-science-python-scratch-2/
译者:jiajia123456
 

2月15日11:00到13:00网站停机维护,13:00前恢复