Python是一种面向对象、直译式计算机程序设计语言,由于他简单、易学、免费开源、可移植性、可扩展性等特点,Python又被称之为胶水语言。下图为主要程序语言近年来的流行趋势,Python受欢迎程度扶摇直上。


由于Python拥有非常丰富的库,使其在数据分析领域也有广泛的应用。

一、为什么要用Python做数据分析?在我看来,大概有3大理由。

广度:各行各业都有自己的商业场景,每一个行业都需要使用数据来辅助决策。面对现在人人谈大数据的情境,数据分析是一个你不得不会的技能。

精度 :Python是一门编程语言。也许从前的你完全依靠excel的默认设置生成图表,从不思考为什么做一张数据图,而使用编程工具的你必须从图表长宽开始思考每一步成形的理由,从而更精地理解数据。

高效 :传统的数据工作涵盖大量的重复不动脑操作,比如把日表合成周表,比如批量删除某个字段,比如批量删除空值。这些工作通过鼠标点击软件没有办法编成工作流,但却可以通过python程序编写自动化,省去大量时间。


基础库总结

这里是对你会经常接触的重要的库的简要总结:

NumPy:拥有大量的科学计算的核心功能。由于它的内部运算是通过C语言实现的,所以比用Python写成的同样的函数,它的速度会快许多。但它并不是最用户友好的包。

SciPy:跟NumPy非常相似,但是有更多的方式来从分布中取样,计算检验统计量,等等。

MatPlotLib:主要的画图框架。不太讨喜,但却是必备的包。

Pandas:基本上是对NumPy/SciPy进行轻量的包装,使它们更用户友好一些。对于和表格数据交互非常理想,Pandas中把表格数据称为数据框(DataFrame)。对画图功能也有一些包装,使得无需使用MPL(Meta-Programming Library,元编程库)就可以快速实现画图。我使用Pandas而非其他的工具来操作数据。

机器学习和计算机视觉

Crab:灵活、快速的推荐引擎

gensim:人性化的话题建模库

hebel:GPU 加速的深度学习库

NuPIC:智能计算 Numenta 平台

pattern:Python 网络挖掘模块

PyBrain:另一个 Python 机器学习库

Pylearn2:一个基于 Theano 的机器学习库

python-recsys:一个用来实现推荐系统的 Python 库

scikit-learn:基于 SciPy 构建的机器学习 Python 模块

pydeep:Python 深度学习库

vowpalporpoise:轻量级 Vowpal Wabbit 的 Python 封装

skflow:一个 TensorFlow 的简化接口(模仿 scikit-learn)

Caffe: 一个 Caffe 的python接口

OpenCV:开源计算机视觉库

pyocr:Tesseract 和 Cuneiform 的包装库

pytesseract:Google Tesseract OCR 的另一包装库

SimpleCV:一个用来创建计算机视觉应用的开源框架

上面列举的只是其中一部分,还有很多很多。当然,他们很多并非是用Python来实现,但都共同的提供了Python接口,甚至好几个都把Python当成了头等公民(First-Class)。

在此并非想说Python这门语言很强大或者复杂,而恰恰相反,得益于Python的简洁和包容。才让它在数据挖掘领域有如此的地位。

二、Python数据分析流程

1、数据获取:公开数据、Python爬虫

外部数据的获取方式主要有以下两种。

第一种是获取外部的公开数据集,一些科研机构、企业、政府会开放一些数据,你需要到特定的网站去下载这些数据。这些数据集通常比较完善、质量相对较高。

另一种获取外部数据的方式就是爬虫。

比如你可以通过爬虫获取招聘网站某一职位的招聘信息,爬取租房网站上某城市的租房信息,爬取豆瓣评分评分最高的电影列表,获取知乎点赞排行、网易云音乐评论排行列表。基于互联网爬取的数据,你可以对某个行业、某种人群进行分析。

常用的的电商网站、问答网站、二手交易网站、婚恋网站、招聘网站等,都可以爬到非常有价值的数据。

Python具有灵活易用,方便读写的特点,其可以非常方便地调用数据库和本地的数据,同时,Python也是当下网络爬虫的首选工具。

Scrapy

Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

2、数据整理

NumPy(Numeric Python)

提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

Pandas(Python Data Analysis Library)

Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

3、建模分析

每种计算机编程语言,似乎都有自己成名或适用的领域。

在这个大家都在谈云计算、大数据、深度学习的时代,让我们来看看,这些领域里面的代表吧。


说句不负责任的话,Python已经成为数据分析领域里事实上的标准语言。

Scikit-learn

从事数据分析建模必学的包,提供及汇总了当前数据分析领域常见的算法及解决问题,如分类问题、回归问题、聚类问题、降维、模型选择、特征工程。

4、数据可视化

matplotlib:一个 Python 2D 绘图库

bokeh:用 Python 进行交互式 web 绘图

ggplot:ggplot2 给 R 提供的 API 的 Python 版本

plotly:协同 Python 和 matplotlib 工作的 web 绘图库

pyecharts:基于百度 Echarts 的数据可视化库

pygal:一个 Python SVG 图表创建工具

pygraphviz:Graphviz 的 Python 接口

PyQtGraph:交互式实时 2D/3D/ 图像绘制及科学/工程学组件

SnakeViz:一个基于浏览器的 Python's cProfile 模块输出结果查看工具

vincent:把 Python 转换为 Vega 语法的转换工具

VisPy:基于 OpenGL 的高性能科学可视化工具

如果在Python中看可视化,你可能会想到Matplotlib。除此之外,Seaborn是一个类似的包,这是用于统计可视化的包。你可以做很复杂的图和一些代码。还有Bokeh,它有很多互动功能,可以做很多不同类型的图。类似Bokeh的还有Plotly。它在浏览器中呈现图,能够进行互动的可视化。虽然Python的绘图功能没有R那么强大,但是我看好它的发展前景。

三、总结

开始的时候,你可能考虑的问题不是很周全,总会遇到各种各样的问题,举例如下:

1.环境配置,工具安装、环境变量,对小白太不友好;

2.缺少合理的学习路径,上来 Python、HTML 各种学,极其容易放弃;

3.Python有很多包、框架可以选择,不知道哪个更友好;

4.遇到问题找不到解决办法,学习停滞不前;

5.网上的资料非常零散,而且对小白不友好,很多看起来云里雾里;

6.懂得技巧,但面对具体问题无法系统思考和分析;

但随着你经验的积累,慢慢就会找到分析的方向,有哪些一般分析的维度,比如Top榜单、平均水平、区域分布、同比环比、相关性分析、未来趋势预测等等。随着经验的增加,你会有一些自己对于数据的感觉,这就是我们通常说的数据思维了。

真若有心于数据领域,甚或欲从事数据科学之职业。请对Python有信心,值得你付出时间。想走机器学习之路,Scikit-learn是你最好的选择,一边操作实例,一边阅读文档,再辅助以相关的理论基础,持之数日,则大业可成也。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660