第二热门语言:从入门到精通,Python数据科学简洁教程

Python是一门通用的编程语言,在过去十年中被数据科学领域广泛使用。事实上,Python在数据科学领域是仅次于R的第二热门的编程语言

本篇文章的主要目的在于向大家展示使用Python学习数据科学有多么的容易。你可能以为自己要先成为一名高级Python程序员,然后才能进行通常与数据科学相关的复杂任务,然而事实并非如此。Python附带了很多有用的工具库,它们可以在后台为你提供强大的支持。你甚至不需要知道程序在运行什么,你不必关心这些。唯一你真正需要知道的是,你需要执行一些特定的任务,而Python使这些任务变得相当简单。

那么,让我们现在就开始吧。

配置数据科学所需的Python环境

无论你使用的电脑是Mac还是Windows,我都建议你下载一个免费的能够让你轻松访问尽可能多的有用模块的Python发行版本。

我试用了一些Python的发行版本,在这里,我推荐大家使用Continuum Analytics提供的Anaconda。这个Python发行版本包含200多个工具库。要理解Python中包、模块和库的差异,请查阅这篇文章

在你下载Anaconda的时候,你需要选择下载Python 2版本还是Python 3版本。我强烈建议你使用Python 2.17.12版本。截止到2016年底,绝大多数的非计算机科学的Python用户都使用了这个Python版本。它能够出色地完成数据科学任务,比Python 3更容易学习,而且像GitHub这样的网站中有数百万的Python脚本和代码片段,可供大家参考,生活会变得更加容易。

Anaconda也附带了Ipython编程环境,建议大家使用。安装Anaconda后,只需要导航到Jupyter笔记本并开启程序,就可以在Web浏览器中打开IPython。Jupyter笔记本的程序会自动启动Web浏览器中的应用程序。

你可以参考这篇文章了解如何在Ipython笔记本中更改路径。

基础知识学习

在你深入了解Python的数据科学库之前,你首先需要学习一些Python的基础知识。Python是一门面向对象的编程语言。在Python中,对象既可以赋值给一个变量,也可以作为参数传递给一个函数。以下都是Python中的对象:数字、字符串、列表、元组、集合、字典、函数以及类。

Python中的函数与普通数学中的函数基本上是一致的——它接收输入数据,对数据进行处理并输出结果。输出的结果完全取决于函数是如何被设计的。另一方面,Python中的类是被设计为输出其他对象的对象的原型。

如果你的目标是编写快速、可复用、易于修改的Python代码,那么你必须使用函数和类。使用函数和类有助于保证代码的高效与整洁。

现在,让我们看看Python中有哪些可用的数据科学工具库。

科学计算:Numpy与Scipy

Numpy是一个主要用于处理n维数组对象的Python工具包,而Scipy则提供了许多数学算法与复杂函数的实现,可用来扩展Numpy库的功能。Scipy库为Python添加了一些专门的科学函数,以应对数据科学中的一些特定任务。

为了在Python中使用Numpy(或其他任何Python库),你必须首先导入对应的工具库。

np.array(scores) 将一个列表转换成一个数组。

当你使用普通的Python程序时——未使用任何外部扩展(例如工具库)的Python程序——你只能受限地使用一维列表来存储数据。但是,如果你使用Numpy库来扩展Python,你可以直接使用n维数组。(如果你想知道的话,n维数组是包含一个或多个维度的数组。)

最开始就学习Numpy,是因为在使用Python进行科学计算时Numpy必不可少。对Numpy的深入了解将有助于你高效地使用Pandas和Scipy这样的工具库。

数据再加工:Pandas

Pandas是数据再加工过程中使用的最为广泛的工具。它包含为使数据分析更加快速便捷而设计的高级数据结构与数据操作工具。对于使用R语言进行统计计算的用户,一定不会对DataFrame的变量名感到陌生。

Pandas是Python成长为一个强大而高效的数据分析平台的关键因素之一。

接下来,我将向你展示如何使用Pandas处理一个小型数据集。

DataFrame是一个电子表格结构,包含一个有序的列集合。每个列都可以有不同的变量类型。DataFrame既包含行索引,也包含列索引。

可视化:Matplotlib + Seaborn + Bokeh

Matlplotlib是Python中一个用于数据可视化的模块。Matplotlib可使你轻松地绘制线形图、饼状图、直方图以及其他专业图表。

你可以使用Matplotlib自定义图表中的每个细节。当你在IPython中使用Matplotlib时,Matplotlib具备缩放、平移等交互特性。Matplotlib在所有操作系统上均支持不同的GUI后端,同时,它也可以将图表导出为若干种常见的图像格式,如PDF、SVG、JPG、PNG、BMP、GIF等。

Seaborn是一个基于Matplotlib的数据可视化工具库,用来在Python中创建富有吸引力且内容翔实的统计图表。Seaborn的主要特点在于,其仅使用相对简单的命令就可以从Pandas数据中创建出复杂的图表类型。我使用Seaborn绘制了下面这幅图:

机器学习: Scikit-learn

机器学习的目标在于通过向机器(软件)提供一些示例(如何执行任务或者执行什么无法完成任务)来教会机器执行任务。

Python中有很多机器学习的工具库,然而,Scikit-learn是最受欢迎的一个。Scikit-learn建立在Numpy、Scipy与Matplotlib库之上。基于Scikit-learn库,你几乎可以实现所有的机器学习算法,如回归、聚类、分类等等。因此,如果你打算使用Python学习机器学习,那么我建议你从学习Scikit-learn开始。

K近邻算法可用于分类或回归。下面这段代码展示了如何使用KNN模型对鸢尾花数据集进行预测。

其他的一些机器学习库还有:

统计学:Statsmodels与Scipy.stats

Statsmodels和Scipy.stats是Python中两个热门的统计学习模块。Scipy.stats主要用于概率分布的实现。另一方面,Statsmodels则为统计学模型提供了类似于R的公式框架。包括描述统计学、统计检验、绘图函数以及结果统计在内的扩展功能均适用于不同类型的数据以及每一种估计器。

下面的代码展示了如何使用Scipy.stats模块调用正态分布。

正态分布是一种连续的输入为实线上任何值的分布或函数。正态分布可通过以下两个参数进行参数化:分布的均值μ以及方差σ2

Web抓取:Requests、Scrapy与BeautifulSoup
Web抓取表示从网络中获取非结构化数据(通常为HTML格式),并将其转换为便于分析的结构化格式数据的过程。

深受欢迎的用于Web抓取的工具库有:

  • Scrapy
  • URl lib
  • Beautifulsoup
  • Requests

要从网站中爬取数据,你需要了解一些HTML的基本知识。

这里有一个使用BeautifulSoup库进行网络爬取的示例:

import urllib2
import bs4

代码beautiful = urllib2.urlopen(url).read();前往bigdataexaminer.com并获取了网站对应的整个HTML文本。随后,我将文本存储在变量beautiful中。

我使用了urllib2来获取url为http://www.bigdataexaminer.com/ 的网站页面,你也可以使用Requests做同样的事情。这里有篇文章可以帮助你了解urllib2和Requests间的差别。

Scrapy与BeautifulSoup类似。后端工程师Prasanna Venkadesh在Quora上解释了这两个工具库的差别:

"Scrapy是一个Web爬虫,或者说,是一个Web爬虫框架,你为Scrapy提供一个开始抓取操作的根URL,然后你可以指定一些约束,例如要抓取多少个URL等等,这是一个用于Web抓取或爬取的完整框架。
而BeautifulSoup则是一个解析库,它也可以出色地页面爬取任务,并允许你轻松地解析页面中的某些内容。但是,BeautifulSoup只会抓取你提供URL的页面的内容。它不会抓取其他页面,除非你以一定方式手动地将页面URL添加到循环中来。
简单来说,你可以用BeautifulSoup构建出与Scrapy类似的东西。但是BeautifulSoup是一个Python库,而Scrapy则是一个完整的框架。"

结论

现在,你知道了Python的一些基础知识以及这些工具库的用途。是时候使用你所学到的知识来解决具体的数据分析问题了。你可以先处理结构化的数据集,之后可以解决那些复杂的非结构化数据分析问题了。

以上为译文

文章原标题《Python for Data Science Made Simple: A Step-by-Step Guide》,作者:Manu Jeevan,译者:6816816151

文章为简译,更为详细的内容,请查看原文

时间: 2024-08-22 14:14:27

第二热门语言:从入门到精通,Python数据科学简洁教程的相关文章

一份语言选择指南带你玩数据科学,选出你心中支持的语言

更多深度文章,请关注:https://yq.aliyun.com/cloud 随着大数据时代的到来,网络每天会产生大量的数据,一些行业会对这些数据进行分析并协助企业不断地发展新业务.创建运营模式等,比如电子商务.推荐系统等.那么谁对这些大数据进行分析呢?对应的工作领域是数据科学(Data Science),该领域需要结合先进的统计知识.定量分析能力和编程能力.涉及到编程,大家都会面临一个问题,有太多的编程语言可供选择,那么哪些编程语言适合数据科学领域呢?虽然没有正确答案,但想成为一名成功的数据科

Python数据科学安装Numby,pandas,scipy,matpotlib等(IPython安装pandas)

Python数据科学安装Numby,pandas,scipy,matpotlib等(IPython安装pandas) 如果还没有本地安装Python.IPython.notebook等请移步 上篇Python,IPython,qtconsole,Notebook,Jupyter快速安装教程 本教程是安装二进制文件,以Windows10 64位操作系统为例,但是二进制文件对应其他Linux和mac os也同样试用. 在开始安装之前,请注意以下前提条件.否则,会出现各种问题. 默认机器上已经安装了P

《Python数据科学实践指南》——导读

前 言 为什么要写这本书 我接触大数据技术的时间算是比较早的,四五年前当大数据这个词火遍互联网的时候,我就已经在实验室里学习编程及算法的知识.那个时候我一心想要做学术,每天阅读大量的英文文献,主要兴趣更多的是在机器人和人工智能上.研究生毕业时我本来想实现早先的愿望,继续攻读博士学位,不过思来想去觉得不应该错过大数据这个机会,所以毅然决定投入大数据行业中. 在工作之初,市面上已经存在一些介绍大数据相关技术的权威著作,其中很多还是很底层的或特定领域的专著.但即使是我这种自诩为"学院派"的人

《Python数据科学实践指南》一导读

前言 为什么要写这本书 我接触大数据技术的时间算是比较早的,四五年前当大数据这个词火遍互联网的时候,我就已经在实验室里学习编程及算法的知识.那个时候我一心想要做学术,每天阅读大量的英文文献,主要兴趣更多的是在机器人和人工智能上.研究生毕业时我本来想实现早先的愿望,继续攻读博士学位,不过思来想去觉得不应该错过大数据这个机会,所以毅然决定投入大数据行业中. 在工作之初,市面上已经存在一些介绍大数据相关技术的权威著作,其中很多还是很底层的或特定领域的专著.但即使是我这种自诩为"学院派"的人看

《Python数据科学实践指南》一 第2章 Python基础知识

第2章 Python基础知识 为了开启我们的数据科学之旅,本章会进行一些基础的编程训练.第1章中已经搭建好了Python的运行环境,读者应该已经能够在Python shell中执行简单的打印和四则运算了.接下来我们要完整地学习一遍构成一个Python程序的基本要素. 2.1 应当掌握的基础知识 本节会介绍一些学习Python前应当掌握的基础知识,这一部分内容在所有的编程语言学习中基本上都是类似的,Python当然也遵守这些通用的规则,熟悉这些内容的读者可以跳过这一节. 2.1.1 基础数据类型

《Python数据科学实践指南》——第2章 Python基础知识 2.1 应当掌握的基础知识

第2章 Python基础知识 为了开启我们的数据科学之旅,本章会进行一些基础的编程训练.第1章中已经搭建好了Python的运行环境,读者应该已经能够在Python shell中执行简单的打印和四则运算了.接下来我们要完整地学习一遍构成一个Python程序的基本要素. 2.1 应当掌握的基础知识 本节会介绍一些学习Python前应当掌握的基础知识,这一部分内容在所有的编程语言学习中基本上都是类似的,Python当然也遵守这些通用的规则,熟悉这些内容的读者可以跳过这一节. 2.1.1 基础数据类型

《Python数据科学指南》——导读

前 言 如今,我们生活在一个万物互联的世界,每天都在产生海量数据,不可能依靠人力去分析产生的所有数据并做出决策.人类的决策越来越多地被计算机辅助决策所取代,这也得益于数据科学的发展.数据科学已经深入到我们互联世界中的每个角落,市场对那些十分了解数据科学算法并且有能力用这些算法进行编程的人才需求是不断增长的.数据科学是多领域交叉的,简单列举几个:数据挖掘.机器学习.统计学等.这对那些渴望成为数据科学家以及已经从事这一领域的人们在各方面都倍感压力.把算法当成黑盒子应用到决策系统里,可能会适得其反.面

《Python数据科学指南》——第1章 Python在数据科学中的应用 1.1 简介

第1章 Python在数据科学中的应用 在这一章里,我们将探讨以下主题. 使用字典对象 使用字典的字典 使用元组 使用集合 写一个列表 从另一个列表创建列表--列表推导 使用迭代器 生成一个迭代器和生成器 使用可迭代对象 将函数作为变量传递 在函数中嵌入函数 将函数作为参数传递 返回一个函数 使用装饰器改变函数行为 使用lambda创造匿名函数 使用映射函数 使用过滤器 使用zip和izip函数 从表格数据使用数组 对列进行预处理 列表排序 采用键排序 使用itertools 1.1 简介 Py

《Python数据科学指南》——1.10 使用可迭代对象

1.10 使用可迭代对象 可迭代对象和生成器十分相似,但是有一个重要的区别:我们可以重复地访问一个可迭代对象,即使我们已经访问完了序列中的所有元素,我们还可以从头重新访问它,这和生成器是完全不同的. 如果不保持任何状态,它们就是基于对象的生成器.所有带有iter方法的类,在用来产生数据时,都可以被作为无状态对象生成器来使用. 1.10.1 准备工作 我们通过一个简单的示例来理解可迭代对象.如果理解了之前介绍的生成器和迭代器,你也能很容易地理解这个概念. 1.10.2 操作方法 我们来创建一个简单