程序员之数据分析Python技术栈

引言: Python是一种非常流行的脚本语言,其还提供了一个科学技术栈,可以进行快捷方便的数据分析,本系列文章将聚焦在如何使用基于Python的技术栈来构建数据分析的工具集合。工欲善其事,必先利其器,让我们来看看这些工具吧。

0. 数据分析 以及机器学习

信息时代唯一不变的就是变化。 随着信息化技术的推广和应用,大数据技术的大规模应用,于是乎数据分析、数据挖掘、机器学习甚至于从前高大上的人工智能(AI)已经开始频繁出现在各个场合,这一切昭示着数据时代的来临。

对于程序猿们来说,除了写代码,实现特定的功能之外,在这个纷繁变化的时代,也需要去了解和掌握一些数据分析的技能与工具,正如之前掌握一些Linux/数据库方面的技能一样;有了这些技能,可以给你大大加分,或许可以帮助你进入了一个崭新的广阔领域。

1. Python是什么?

Python是大名鼎鼎的通用脚本语言,可以满足全功能的程序设计需求;目前主流的是2.7.x和3.x版本,在2020年之时,2.x版本将不再被继续支持。 Python最大的有点就是简单易学,所以在其他领域内,应用甚广。我们这里所讲的各类工具包,都是建立在Python之上的。

2. IPython是什么?

ipython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。对于诸多的程序猿们来说,这个就是一个极为强大的交互工具,基本上后续的诸多数据分析操作都是建立在ipython之上的。

ipython提供了多种实用模式,包括:terminal,界面以及web的交互界面等,非常的强大与易用。

安装指南: http://ipython.org/install.html

3. Numpy

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。

其速度很快,且功能强大,可以支持线性代数运算,傅立叶变换、随机数生成等等各类的数学元算。

官方网站: http://www.numpy.org/

4. Pandas

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

其中提供了DataFrame的强大二维结构来做为数据分析的基本结构主体,Series做为高效的数据组结构来使用。 Pandas兼具Numpy高性能的数组计算功能以及电子表格、关系数据库(SQL)灵活得数据分析功能, 可以方便地完成重塑、切片、切块、聚合、排序以及选取数据子集等操作。

官方网站: http://pandas.pydata.org/

5. Matplotlib(图形展示包)

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中,它的文档相当完备,应用非常广泛,是Python进行数据分析的必备工具。且其已经与Pandas等工具包进行了深度集成,可以在pandas中直接调用各类绘图函数,直接生成对应图表。

官方站点: http://matplotlib.org/

6. Scipy

SciPy是一款方便、易于使用、专为科学和工程设计的Python工具包.它包括统计,优化,整合,线性代数模块,傅里叶变换,信号和图像处理,常微分方程求解器等等.

scipy有一个stats包,其中可以包含标准连续、离散概率分布、各类统计检验方法,以及更好的描述统计方法。

Numpy与Scipy的结合使用可以完全替代Matlab中的计算功能(包括其插件工具箱)

官方站点: http://www.scipy.org/

7. 常用的开发工具

以下为两个非常强大的集成开发环境,集成了各类所需的开发包,大家可以自行从官网上下载对应版本, 支持各类平台(window, mac, linux)以及32位/64位系统。

  • Canopy https://www.enthought.com/products/canopy/
  • Anaconda https://www.continuum.io/downloads

7. 总结

在Python的社区中有非常多的工具, 比如keras就是一个强大的机器学习的实现包,且已经可以直接使用Tensorflow实现卷积神经的计算,相当的骚包。 好了,希望大家通过本文对基于Python的数据分析技术栈有个直观的认识。稍后的文章中,我们还将逐步详细介绍如何来一步一步实现数据分析的工作。

---------- 罪恶的结束线,文章终于结束了 --------------------------------------------------------------

本文系CDSN的博主木小鱼的笔记个人原创,如要转载,请保留原始链接和原作者信息,支持原创,方便你我。

作者本文也维护了一个今日头条上的头条号:程序加油站,欢迎大家关注。
时间: 2024-12-18 06:40:01

程序员之数据分析Python技术栈的相关文章

阿里资深技术专家:在各阶段中,3年经验的程序员应该具备哪些技术能力(进阶必看)

3年工作经验的Java程序员应该具备哪些技术能力,这可能是Java程序员们比较关心的内容.我这里要说明一下,以下列举的内容不是都要会的东西,但是你掌握得越多,最终能得到的评价.拿到的薪水势必也越高. 1.基本语法 这包括static.final.transient等关键字的作用,foreach循环的原理等等.今天面试我问你static关键字有哪些作 用,如果你答出static修饰变量.修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满 意,

PHP入门培训教程PHP程序员要掌握哪些技术

总有那么一群人,学个半吊子就急着找工作,面试题做不出来,吹牛都吹不来所以你只能低工资.PHP程序员要掌握哪些技术?那么兄弟连PHP培训 就来小结一下. 面试前请参考:(前三阶段完成80%在北京月薪5k+) 第一阶段: (PHP+MySQL核心编程) 面向对象编程 MySQL数据库, MySQL的优化细节. HTTP协议,http也是我们web开发的基石.对我们了解PHP底层机制有很大帮助,做到知其然,还知其所以然. 数据库编程(mysql mysqli pdo), MySQL扩展库.MySQLI

Warning!程序员们小心被技术绑架

通常我们说程序员需要在某个技术方向上积累到一定的厚度,要能够运用技术有效地解决实际问题.可是当程序员在某一项技术上浸淫时间长了之后,却经常会出现另外的问题,那就是:看待问题时受限于自身的技术积累. 我打算从几个方面来谈这个话题. 一定有某一项技术最适合解决某个问题 有的人对 C++ 比较熟悉,在开始一个新产品或新项目,比如做一个 Android App ,就会考虑怎么用 C++ 来实现目标,于是就会去找可以用在移动端的 C++ 框架,比如 Qt ,比如 NDK + Native Activity

基于Python技术栈的算法落地踩坑

背景介绍 在一些业务场景,我们需要把离线训练好的模型以微服务部署线上,如果是简单的使用sklearn pipeline,可以保存为XML格式的pmml供Java调用,在配置为4 core,8G内存的docker环境可以提供8K左右的高并发,并且这种docker可以快速大规模部署到PaaS云平台,优势相当明显,实际情况是算法人员会基于Python自定义lambda处理数据,而自定义的lambda是很难保存到pmml中的,并且很多公司的算法团队也是要求基于Python技术栈是 落地的. 踩坑过程 算

中高级PHP程序员应该掌握哪些技术?

本文出处:http://www.jb51.net/article/93317.htm 本文把php程序员划分为中.高级程序员两大类程序员,并针对这两大程序员应具备的技能进行分类探索. 中级PHP程序员  1.Linux 能够流畅的使用Shell脚本来完成很多自动化的工作:awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作:基本能够安装大 部分非特殊的Linux程序(包括各种库.包.第三方依赖等等,比如MongoDB/Redis/Sphinx/Luncene/SVN之类的

作为合格PHP程序员应该掌握哪些技术?

中级PHP程序员 1.Linux 能够流畅的使用Shell脚本来完成很多自动化的工作:awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作:基本能够安装大 部分非特殊的Linux程序(包括各种库.包.第三方依赖等等,比如MongoDB/Redis/Sphinx/Luncene/SVN之类的):了解基 本的Linux服务,知道如何查看Linux的性能指标数据,知道基本的Linux下面的问题跟踪等 Nginx: 在第一阶段的基础上面,了解复杂一些的Nginx配置:包括多核配置

程序员不能错过的技术知识图谱,进阶路上必备神器。

本文转载自李亚鹏 本文是鹏哥多年来积累和收集的技术知识技能图谱,有的是鹏哥原创总结的最佳实践,有的是小伙伴们的分享. 其实,每个秘籍图谱里面的内容都是互联网高并发架构师应该了解和掌握的知识.鹏哥索性就把这些图谱都收集在一起,并且进行了归类,便于大家查找和学习. 暂把标题定为:"史上最全的技术知识图谱秘籍",暗含着鹏哥的一个小目标:想把更多的技术图谱和思维导图汇集在一起,成为互联网上"最全的技术图谱". 这份技术知识图谱秘籍真的很棒,场主极力推荐分享给身边的技术人儿.

每个优秀程序员必须具备的技术技能

我特别支持软件开发者在他们掌握技术技能的同时去学习“软技能”——事实上,我写了一本关于这方面的书——但是不可否认的是:技术技能很重要. 我的意思是,如果你不能编写代码和开发软件,那么你学习众多软技能有个卵用.也许你可以成为一名优秀的管理人员或指导人员,但不会是软件开发人员. 如果你正在阅读这篇文章,那么我假设你有兴趣成为一个软件开发人员——或者是更优秀的软件开发人员——下面就让我们来聊一聊你需要知道哪些技术技能. 用技能赚钱 现在,有这样一种主流观念,压垮了很多新手软件开发者,那就是你需要学习很

每个优秀java程序员必须具备的技术技能

现在,有这样一种主流观念,压垮了很多新手软件开发者,那就是你需要学习很多东西才能成为软件开发人员,并且很多人不知道从哪里开始起步. 这里我会尝试着具体说明那些在你追求成为软件开发人员的路上将让你受益的必要技术技能. 一篇文章当然不能详尽说明作为软件开发者,你可能需要掌握的所有技术技能,但是我会列出最关键的一些技术技能. 编程语言我认为从这一条开始说起是最合适的. 不懂编程语言,怎么能成为一个真正的程序员? 不过,关于选择哪种编程语言去学习可能并没有我们想得那么重要这一点,请允许我一笔带过. 相反