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是你最好的选择,一边操作实例,一边阅读文档,再辅助以相关的理论基础,持之数日,则大业可成也。
上面是我收集的一些视频和面试题资料。
对于软件测试的的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你
关注我的微信公众号【程序员二黑】免费获取