您现在的位置是:网站首页> 编程资料编程资料
pandas实现数据可视化的示例代码_python_
2023-05-26
323人已围观
简介 pandas实现数据可视化的示例代码_python_
在pandas 基础操作大全之数据读取&清洗&分析 以及 pandas基础操作大全之数据合并 中介绍了pandas常见的数据处理操作以及常用的数据合并操作,本文继续对pandas数据可视化操作做下介绍,便于大家快速了解,也方便后续需要时快速查询。
一、概述
1.1 plot函数参数
数据可视化,一般用Matplotlib库,该库可与MATLAB作图相媲美,允许完全按照自己的意愿自定义图表的展示方式,但相较于日常快速进行数据分析和可视化,用起来相对繁琐,故pandas基于该库,重新封装了plot方法,该方法还对Series和DataFrame数据格式进行了特定的优化,本文主要讲解pandas的数据可视化工具,首先讲解plot函数常用参数的含义。
#pandas主要使用plot函数进行数据可视化绘图,完整表达式如下,本文仅罗列常见的参数,其他参数待用到时,可自行学习 df.plot( x='A',#即绘图x轴用的数据列标签,如果不指定,则默认为index y='B',#即绘图y轴用的数据列标签,可指定一个,也可指定多个,指定多个使用列表格式['A', 'B'] use_index=True,#设置是否用DF的index行索引作为x轴,默认是True,当x不传入值时,便用index kind='line',#即绘图用的图表类型,枚举有line(折线)、bar(条形图)、barh(横向条形图)、hist(柱状图)、box(箱线图或蜡烛图)、area(面积图)、pie(饼图)、scatter(散点图)等 subplots=True,#子图,即如果y指定的是多列,则将每列分为一个子图,与layout一起使用 layout=(2,2),#2*2布局,即4个子图 sharex=True,#如果有子图,子图共x轴刻度,标签,默认True sharey=False,#如果有子图,子图共y轴刻度,标签,默认False,即不共享 figsize=(12,8),#设置图表大小,横纵方向,单位英尺 title='title',#设置图表的标题 grid=True,#设置图表的格子,默认False,即不添加格子 legend=True,#即设置是否添加图例,默认True color=['r', 'g', 'b'],#设置不同序列或不同组对应展示的图表颜色,序列格式(列表或元组),默认none,一般不需要显示指定,系统会自动分配 xticks=[],#设置x轴刻度,序列形式(列表或元组),可自定义横轴的刻度,默认none,一般不需要 yticks=[],#设置y轴刻度,序列形式(列表或元组),可自定义纵轴的刻度,默认none,一般不需要 rot=0,#设置轴刻度旋转角度,默认是0,即水平展示 fontsize=12,#设置横纵坐标刻度字体大小 xlim=[0,100],#设置x轴刻度区间,序列形式(列表或元素),默认不设置,由系统自动判断 ylim=(0,100),#设置y轴刻度区间,序列形式(列表或元素),默认不设置,由系统自动判断 ax,#设置此次绘图的目标axes(坐标系),在本文最后会详细展开,可以理解为,其是pandas暴露的与matplotlib无缝衔接的接口 ) #df.plot()函数返回值为此次绘图所生成的坐标系,可以是1个,也可以是多个,视subplots是True或False而定 #pandas的plot绘图后,还可结合Matplotlib,对生成的图表的属性进一步定制和设置 plt.grid(linewidth=0.2, alpha=0.5)
1.2 本文用到的数据源说明
#为了让该篇文章更加易懂,这次会使用真实数据进行数据分析及可视化的演示 #网上获取公开数据源的平台比较多,比如AkShare、Tushare、BaoStock等 #其中Tushare使用时较为便捷,但使用接口获取数据时还需要积分达到一定的值,而AkShare数据则完全公开,调用时没有任何限制,故本文内均会使用AKShare的数据 #获取数据方法如下: import akshare as ak #如果没有安装akshare,请自行pip安装 df=ak.macro_cnbs() #每一个接口获取的数据不一样,此处只使用历年中国宏观杠杆率数据 #AKShare详细教程和数据可访问以下链接 https://www.akshare.xyz/zh_CN/latest/index.html
二、折线图--kind='line'
#折线图,一般用来分析某数据指标(列)随着index或另外一个数据序列的变化趋势,也是最常见的图表 #数据源,以下使用AkShare 数据平台的 中国宏观杠杆率 作为数据源 import akshare as ak import pandas as pd import matplotlib.pyplot as plt df=ak.macro_cnbs() #获取中国历史各部门的杠杆率 #df.head() 年份 居民部门 非金融企业部门 政府部门 中央政府 地方政府 实体经济部门 金融部门资产方 金融部门负债方 0 1993-12 8.311222 91.658000 4.249689 3.572548 7.822237 107.791459 8.896441 7.128428 1 1994-12 7.808230 82.411703 4.989987 3.144351 8.134338 98.354271 9.808787 6.796868 2 1995-12 8.200000 81.000000 5.700000 3.000000 8.700000 97.900000 10.000000 7.000000 3 1996-03 8.400000 81.700000 6.100000 3.000000 9.100000 99.200000 10.200000 7.200000 4 1996-06 8.600000 82.100000 6.000000 3.000000 9.000000 99.700000 10.400000 7.400000 df.plot(x='年份',y=['居民部门','政府部门','地方政府'],kind='line', figsize=(10,8),fontsize=12,title='金融杠杆率') #运行后,生成图表如下,可见基本来说,杠杆率在逐年增加,其中居民部门的杠杆率,在2008年以后出现骤增的趋势,可能与房价快速上涨有关

#如果使用子图,对各个经济部门的杠杆率分开展示,则如下 df.plot(x='年份',y=['居民部门','政府部门','地方政府'], subplots=True, layout=(1,3),kind='line', figsize=(10,8),fontsize=12,title='金融杠杆率') #运行后图表如下,可见如果拆成子图之后,会更加清晰些

三、柱状图--kind='bar'
3.1 各组数据(列)分开展示
#柱状图(条形图)一般用来分析某指定时间段内,不同指标之间的对比,同时还可以分析变化趋势 #相较于折线图,会表现的更加直观,条形图,或者叫柱状图,一般用于分析不同时间段不同指标或组别的表现对比,但如果要判断趋势,最好还是用折线图会更加直观 #数据源,仍然以中国各经济部门宏观杠杆率为准,但是只取前20行数据,因数据量太大 df.iloc[range(20)].plot(x='年份',y=['居民部门','政府部门','地方政府'],kind='bar',figsize=(10,8),fontsize=12,title='金融杠杆率')#运算后,生成的图标如下

3.2 各组(列)数据合并展示--stacked
#柱状图还有一种变种,即堆叠柱状图,相当于将需要对比的不同组别的指标值加和,并展示在一个柱内,用不同颜色区分 #该种图表既可以体现同一时期或区间不同组别的指标占比大小(根据数值),还可以观察不同时期对应组别累加值的变化趋势 #比如不同季度4个销售团队的销售业绩,那么堆叠柱状图即可以对比不同季度各个销售团队的业绩,还可以观察4个销售团队在不同季度业绩总和的变化趋势 df.iloc[range(20)].plot(x='年份',y=['居民部门','政府部门','地方政府'],kind='bar', stacked=True,figsize=(10,8),fontsize=12,title='金融杠杆率') #运行后图表如下

3.3 横向柱状图--kind='barh'
#横向柱状图,基本就是将bar图给横过来,没有其他区别,有横向柱状图的原因,主要是长短相较于高低会更加直观些,大概可能是因为人类的视觉习惯吧 #还是以中国宏观杠杆率数据为数据源 df.iloc[range(20)].plot(x='年份',y=['居民部门','政府部门','地方政府'],kind='barh', stacked=True,figsize=(10,8),fontsize=12,title='金融杠杆率') #运行后图表如下,为叠加效果

#以下为不叠加数据的效果 df.iloc[range(20)].plot(x='年份',y=['居民部门','政府部门','地方政府'],kind='barh',figsize=(10,8),fontsize=12,title='金融杠杆率') #运行后图表如下

四、直方图--kind='hist'
4.1 概述
#直方图一般用在统计数据可视化领域,类似概率分布,即数据序列在不同值区间内分布的情况 #默认情况下,plot会将序列数据值分为10个数值区间并统计数值在不同区间的个数,即频数图,如果要展示的是频率图,则设置density = True即可。 #仍以中央宏观杠杆率数据为例,我们想看下不同经济部门历年杠杆率区间分布情况 df.plot(y=['居民部门','地方政府'],kind='hist',figsize=(10,8),fontsize=12,title='金融杠杆率区间分布情况') #运行后,图表如左图,为频数图 df.plot(y=['居民部门','地方政府'],kind='hist',density = True, figsize=(10,8),fontsize=12,title='金融杠杆率区间分布情况') #运行后,图表如中图,为频率图 df.plot(y=['居民部门','地方政府'],kind='hist',density = True, figsize=(10,8),fontsize=12,title='金融杠杆率区间分布情况') #运行后,图表如右图,为频率图,且设置透明度



4.2 自定义直方图横向区间数量
#如果对系统自动划分的10个区间不太满意,比如感觉太多或者太少,也可以自定义区间值,一般有两种方式 #1、使用bins参数,直接指定需要划分的区间数量,默认是10,可设置比如15或5等 #2、使用xticks参数,直接指定横轴的坐标刻度值 #1、使用bins参数 df.plot(y=['居民部门','地方政府','中央政府'],kind='hist',figsize=(10,6),fontsize=12,title='金融杠杆率区间分布图',bins=15) #指定将区间划分为15个,如下左图所示 #2、使用xticks参数 xtick=[5,10,15,20,25,30,35,40,45,50,55,60] colormap=('r','g','b') df.plot(y=['居民部门','地方政府','中央政府'],kind='hist',figsize=(10,6),fontsize=12,title='金融杠杆率区间分布图',xticks=xtick)#指定将区间按照指定刻度划分,如下右图所示
提示:
本文由神整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- pandas实现数据合并的示例代码_python_
- pandas实现数据读取&清洗&分析的项目实践_python_
- Python实现文件及文件夹操作大全_python_
- Python读取Excel数据实现批量生成合同_python_
- Python文件操作实战案例之用户登录_python_
- python多进程及通信实现异步任务的方法_python_
- 基于Python实现批量保存视频到本地_python_
- 利用Python制作心型照片墙效果_python_
- Python常用标准库详解(pickle序列化和JSON序列化)_python_
- pytest中配置文件pytest.ini使用_python_
