Python常用数据分析模块原理解析


Posted in Python onJuly 20, 2020

前言

python是一门优秀的编程语言,而是python成为数据分析软件的是因为python强大的扩展模块。也就是这些python的扩展包让python可以做数据分析,主要包括numpy,scipy,pandas,matplotlib,scikit-learn等等诸多强大的模块,在结合上ipython交互工具 ,以及python强大的爬虫数据获取能力,字符串处理能力,让python成为完整的数据分析工具。

Python常用数据分析模块原理解析

numpy

官网:https://www.scipy.org/

NumPy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器。可以利用这种数组对整块数据执行一些数学运算,比python自带的数组以及元组效率更高,其语法跟变量元素之间的运算一样,无需进行循环操作。

在使用python进行数据分析的过程中,我们大部分时候是不会直接使用numpy包,而是其他包要用到numpy。可以说numpy是整个python数据分析工作的基石。

举个简单的案例,我们要计算100000个随机数的值,如果传统编程需要写循环,用了2.2s,而使用numpy数据结构,则可以进行向量化操作,无需循环,只需要28.2ms节约大量时间。

In [1]: import numpy
In [2]: my_arr = np.arange(1000000)
In [3]: my_list = list(range(1000000))
In [4]: %time for _ in range(10): my_arr2 = my_arr * 2
Wall time: 28.2 ms
In [5]: %time for _ in range(10): my_list2 = [x * 2 for x in my_list]
Wall time: 2.2 s

pandas

官网:https://pandas.pydata.org/

Python Data Analysis Library,可根据需要帮助组织各种参数的数据。pandas基于numpy底层数据结构。让python成为类似Excel,R等统计学软件,主要就是pandas的功劳。pandas在python中实现了各种数据的计算 ,分组计算,添加删除,排序,筛选,抽样等都能工作。使Pandas成为数据科学家中最受欢迎的库。

pandas主要包含两种数据结构:Series与DataFrame。Series是一种类似于以为数组的对象,它由一组数据以及与之相关的数据标签组成,仅有一组数据即可产生最简单的Series。Series类似于R中的向量,属于以为数据。Series可以构成二维的DataFrame。行为记录值,列为观测值。如果熟悉R中的数据框DataFrame,在使用pandas则会轻松上手,因为作者自己说pandas的DataFrame就是模仿R的数据框。

scipy

官网:https://www.scipy.org/

scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
Scipy是由针对特定任务的子模块组成:

Python常用数据分析模块原理解析

matplotlib

官网:https://matplotlib.org/

matplotlib是python中优秀的数据可视化的包,根据命名就可以看到,它其实是一个matlib的plot库,也就是利用python将matlib的绘图功能实现了一遍。如果你熟悉matlib绘图,那么将直接上手。matplotlib是Python编程语言及其数值数学扩展包 NumPy的可视化操作界面。它为利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+向应用程序嵌入式绘图提供了应用程序接口(API)。

plotnine

官网:https://plotnine.readthedocs.io/en/stable/

如果你不熟悉matlib,而是从R转到python,可能不太喜欢matplotlib的绘图模式和风格,觉得不如R绘图方便。而且R还有ggplot2包。那么plotnine则是将ggplot2移植到python上,在python上完全重现ggplot2的功能。如果你熟悉ggplot2的语法,直接上手。不过,我倒是觉得这个工作意义不大,这属于重新发明轮子,后面如果ggplot2在更新了,二者之间还是会有一些差别,用户会有些困扰。当然,这样的问题仁者见仁,愚者见愚。聊胜于无,如果想在 python环境中完成全部工作,有了这个包还是非常不错的。

Python常用数据分析模块原理解析

scikit-learn

官网:https://scikit-learn.org/stable/

有很多人不是天天喜欢三句话不离大数据,机器学习,人工智能吗。那么scikit-learn则是完成python大数据机器学习的包。scikit-Learn是python数据分析中非常重要的一个模块,它是一个基于NumPy和SciPy构建的开源机器学习工具包。 它具有常用的ML算法,可用于预处理,分类,回归以及聚类。算法包括[支持向量机]( support vector machines,ridge回归, 网格搜索算法(Grid Search algorithm) ,k均值聚类等等。另外还有样本数据集。API易学易用。 在几乎所有平台上的良好性能,它在学术和商业用途中都很受欢迎。

Python常用数据分析模块原理解析

其他:

除了以上包之外,python还有很多很多其他有关数据分析的包,不胜枚举,比如图片识别的opencv,google机器学习开源库tensorflow,PyTorch等等,一个崭新的世界等待你去发现。但是前提是前面基础这些包熟悉了,以及有最核心的计算机以及统计学基础,否则就是无水之源,无木之本,你所谓的人工智能,只能是人工智障。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用python程序生成word和PDF文档的方法
Feb 14 Python
python中使用psutil查看内存占用的情况
Jun 11 Python
django+echart数据动态显示的例子
Aug 12 Python
python yield关键词案例测试
Oct 15 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
python_mask_array的用法
Feb 18 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
Python return语句如何实现结果返回调用
Oct 15 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 #Python
用pandas划分数据集实现训练集和测试集
Jul 20 #Python
Python数据可视化实现漏斗图过程图解
Jul 20 #Python
浅谈pandas dataframe对除数是零的处理
Jul 20 #Python
为什么说python更适合树莓派编程
Jul 20 #Python
Python faker生成器生成虚拟数据代码实例
Jul 20 #Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 #Python
You might like
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php筛选不存在的图片资源
2015/04/28 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
Javascript函数的参数
2015/07/16 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
python线程池threadpool使用篇
2018/04/27 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
公司年会晚宴演讲稿
2014/01/06 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis