Python数据分析:手把手教你用Pandas生成可视化图表的教程


Posted in Python onDecember 15, 2018

大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事。但自从Python进入3.0时代以后,pandas的使用变得更加普及,它的身影经常见于市场分析、爬虫、金融分析以及科学计算中。

作为数据分析工具的集大成者,pandas作者曾说,pandas中的可视化功能比plt更加简便和功能强大。实际上,如果是对图表细节有极高要求,那么建议大家使用matplotlib通过底层图表模块进行编码。当然,我们大部分人在工作中是不会有这样变态的要求的,所以一句import pandas as pd就足够应付全部的可视化工作了。

下面,我们总结一下PD库的一些使用方法和入门技巧。

一、线型图

对于pandas的内置数据类型,Series 和 DataFrame 都有一个用于生成各类 图表 的 plot 方法。 默认情况下, 它们所生成的是线型图。其实Series和DataFrame上的这个功能只是使用matplotlib库的plot()方法的简单包装实现。参考以下示例代码 -

import pandas as pd
import numpy as np
 
df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2018/12/18',
 periods=10), columns=list('ABCD'))
 
df.plot()

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

如果索引由日期组成,则调用gct().autofmt_xdate()来格式化x轴,如上图所示。

我们可以使用x和y关键字绘制一列与另一列。

s = Series( np. random. randn( 10). cumsum(), index= np. arange( 0, 100, 10))
s. plot()

Python数据分析:手把手教你用Pandas生成可视化图表的教程

pandas 的大部分绘图方法都有 一个 可选的ax参数, 它可以是一个 matplotlib 的 subplot 对象。 这使你能够在网格 布局 中 更为灵活地处理 subplot 的位置。 DataFrame的plot 方法会在 一个 subplot 中为各列绘制 一条 线, 并自动创建图例( 如图所示):

df = DataFrame( np. random. randn( 10, 4). cumsum( 0), ...: columns=[' A', 'B', 'C', 'D'], index= np. arange( 0, 100, 10)) 
 
df. plot()

Python数据分析:手把手教你用Pandas生成可视化图表的教程

二、柱状图

在生成线型图的代码中加上 kind=' bar'( 垂直柱状图) 或 kind=' barh'( 水平柱状图) 即可生成柱状图。 这时,Series 和 DataFrame 的索引将会被用 作 X( bar) 或 (barh)刻度:

In [59]: fig, axes = plt. subplots( 2, 1) 
 
In [60]: data = Series( np. random. rand( 16), index= list(' abcdefghijklmnop')) 
 
In [61]: data. plot( kind=' bar', ax= axes[ 0], color=' k', alpha= 0. 7) 
 
Out[ 61]: < matplotlib. axes. AxesSubplot at 0x4ee7750> 
 
In [62]: data. plot( kind=' barh', ax= axes[ 1], color=' k', alpha= 0.

对于 DataFrame, 柱状 图 会 将 每一 行的 值 分为 一组, 如图 8- 16 所示:

In [63]: df = DataFrame( np. random. rand( 6, 4), ...: index=[' one', 'two', 'three', 'four', 'five', 'six'], ...: columns= pd. Index([' A', 'B', 'C', 'D'], name=' Genus')) 
 
In [64]: df 
 
Out[ 64]: 
 
Genus 
 
   A   B   C   D 
one 0. 301686 0. 156333 0. 371943 0. 270731 
two 0. 750589 0. 525587 0. 689429 0. 358974 
three 0. 381504 0. 667707 0. 473772 0. 632528 
four 0. 942408 0. 180186 0. 708284 0. 641783 
five 0. 840278 0. 909589 0. 010041 0. 653207 
six 0. 062854 0. 589813 0. 811318 0. 060217 
 
In [65]: df. plot( kind=' bar')

Python数据分析:手把手教你用Pandas生成可视化图表的教程

三、条形图

现在通过创建一个条形图来看看条形图是什么。条形图可以通过以下方式来创建 -

import pandas as pd
import numpy as np
 
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar()

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

要生成一个堆积条形图,通过指定:pass stacked=True -

import pandas as pd
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar(stacked=True)

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

要获得水平条形图,使用barh()方法 -

import pandas as pd
import numpy as np
 
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
 
df.plot.barh(stacked=True)

四、直方图

可以使用plot.hist()方法绘制直方图。我们可以指定bins的数量值。

import pandas as pd
import numpy as np
 
df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
 
df.plot.hist(bins=20)

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

要为每列绘制不同的直方图,请使用以下代码 -

import pandas as pd
import numpy as np
 
df=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
 
df.hist(bins=20)

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

五、箱型图

Boxplot可以绘制调用Series.box.plot()和DataFrame.box.plot()或DataFrame.boxplot()来可视化每列中值的分布。

例如,这里是一个箱形图,表示对[0,1)上的统一随机变量的10次观察的五次试验。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
df.plot.box()

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

六、块型图

可以使用Series.plot.area()或DataFrame.plot.area()方法创建区域图形。

import pandas as pd
import numpy as np
 
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area()

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

七、散点图

可以使用DataFrame.plot.scatter()方法创建散点图。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b')

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

八、饼状图

饼状图可以使用DataFrame.plot.pie()方法创建。

import pandas as pd
import numpy as np
 
df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot.pie(subplots=True)

执行上面示例代码,得到以下结果 -

Python数据分析:手把手教你用Pandas生成可视化图表的教程

以上这篇Python数据分析:手把手教你用Pandas生成可视化图表的教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用hashlib模块处理算法的教程
Apr 28 Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
python编码最佳实践之总结
Feb 14 Python
用Python设计一个经典小游戏
May 15 Python
python实现人脸识别代码
Nov 08 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
python3下pygame如何实现显示中文
Jan 11 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
Django基础CBV装饰器和中间件
Mar 22 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 #Python
对python当中不在本路径的py文件的引用详解
Dec 15 #Python
对python3 中方法各种参数和返回值详解
Dec 15 #Python
对python中的argv和argc使用详解
Dec 15 #Python
Python输出\u编码将其转换成中文的实例
Dec 15 #Python
对python:print打印时加u的含义详解
Dec 15 #Python
Python 最大概率法进行汉语切分的方法
Dec 14 #Python
You might like
自己前几天写的无限分类类
2007/02/14 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
详解VUE 数组更新
2017/12/16 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
python实现按行切分文本文件的方法
2016/04/18 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python实现三维拟合的方法
2018/12/29 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
行政管理专业推荐信
2013/11/02 职场文书
导游的职业规划书范文
2013/12/27 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
学校少先队工作总结
2015/08/12 职场文书
六五普法学习心得体会
2016/01/21 职场文书