43

如何进行Python数据分析?正确的“入门之路”三部曲!

 5 years ago
source link: http://blog.sina.com.cn/s/blog_679bde160102ydju.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

mYZbAbq.jpg!web 

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

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

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

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

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

ErYNviJ.jpg!web

基础库总结

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

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、建模分析

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

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

BraUf2N.png!web

说句不负责任的话,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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK