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中的if、else、elif语句用法简明讲解
Mar 11 Python
python使用代理ip访问网站的实例
May 07 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
简单了解python高阶函数map/reduce
Jun 28 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
Python 如何调试程序崩溃错误
Aug 03 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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
php图片上传存储源码并且可以预览
2011/08/26 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
python统计字符的个数代码实例
2020/02/07 Python
Shein英国:女性时尚网上商店
2019/04/10 全球购物
授权委托书
2014/07/31 职场文书
民主生活会剖析材料
2014/09/30 职场文书
接待员岗位职责范本
2015/04/15 职场文书
毕业欢送会致辞
2015/07/29 职场文书
小学英语教学随笔
2015/08/14 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
导游词之青城山景区
2019/09/27 职场文书