pandas的主要功能是数据可视化,pandas可视化图表

  pandas的主要功能是数据可视化,pandas可视化图表

  本文主要介绍pandas实现数据可视化的示例代码。文中详细介绍了示例代码,对大家的学习或工作有一定的参考价值。有需要的朋友下面跟边肖学习。

  00-1010一、概述1.1 plot函数参数1.2本文所用数据来源说明II。折线图-kind= line III。条形图-kind= bar 3.1每组数据(列)的单独显示3.2每组数据(列)的合并显示- stacked3.3水平条形图-kind=。直方图-Kind= HIST 4.1概述4.2自定义直方图的水平间隔数4.3多子图显示多系列数据4.4一维数据密度图-Kind= KDE 4.5累积直方图-累积=真五、箱形图-kind= box 5.1默认用法-垂直箱形图5.2水平箱形图- vert=假六、饼图-kind= pie 6.1概述6.2设置阴影-阴影=真6.3设置不同饼图区域与中心区域的距离散点图-Kind= scatter 7.1概述7.2分类散点图-增加数据变量的另一个维度7.3气泡图-散点图变体-用气泡大小表示数值8。面积图-Kind= area 8.1默认用法-不同系列数据不叠加值8.2不同系列数据叠加值-六边形图-kind= hexbin 9.1概述9.2调整x轴六边形的数量-类似于增加密度- gridsize X .设置参数一般绘图时10.1将不同数据绘制到同一图形的不同子图中,另外不同子图单独绘制10.2设置数据序列颜色10.3设置x和y坐标轴label10在《熊猫基本操作大全》的数据读取清洗分析和数据合并中,介绍了熊猫常用的数据处理操作和数据合并操作。本文继续介绍熊猫的数据可视化操作,让你快速了解,然后在需要的时候快速查询。

  

目录

 

  

一、概述

 

  一般使用Matplotlib库进行数据可视化,堪比MATLAB作图,让你完全按照自己的意愿自定义图表的显示方式。但相对于日常的数据分析和可视化,使用起来相对繁琐。所以熊猫在这个库的基础上重新包装了plot方法,还专门优化了Series和DataFrame数据格式。本文主要讲解熊猫的数据可视化工具,首先是plot函数常用参数的含义。

  # panda主要使用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 本文用到的数据源说明

 

  

#为了让该篇文章更加易懂,这次会使用真实数据进行数据分析及可视化的演示

 

  

 

  

二、折线图--kind='line'

 

  

#折线图,一般用来分析某数据指标(列)随着index或另外一个数据序列的变化趋势,也是最常见的图表

 

  

 

  

#如果使用子图,对各个经济部门的杠杆率分开展示,则如下

 

  

 

  

 

  

三、柱状图--kind='bar'

 

  

 

  

3.1 各组数据(列)分开展示

 

  

#柱状图(条形图)一般用来分析某指定时间段内,不同指标之间的对比,同时还可以分析变化趋势

 

  

 

  

 

  

3.2 各组(列)数据合并展示--stacked

 

  

#柱状图还有一种变种,即堆叠柱状图,相当于将需要对比的不同组别的指标值加和,并展示在一个柱内,用不同颜色区分

 

  

 

  

 

  

3.3 横向柱状图--kind='barh'

 

  

#横向柱状图,基本就是将bar图给横过来,没有其他区别,有横向柱状图的原因,主要是长短相较于高低会更加直观些,大概可能是因为人类的视觉习惯吧

 

  

 

  

#以下为不叠加数据的效果

 

  

 

  

 

  

四、直方图--kind='hist'

 

  

 

  

4.1 概述

 

  

#直方图一般用在统计数据可视化领域,类似概率分布,即数据序列在不同值区间内分布的情况

 

  

 

  

 

  

 

  

 

  

4.2 自定义直方图横向区间数量

 

  

#如果对系统自动划分的10个区间不太满意,比如感觉太多或者太少,也可以自定义区间值,一般有两种方式

 

  

 

  

 

  

 

  

4.3 多子图展示多序列数据

 

  

#也可将不同序列数据在不同的子图上进行展示,这个是一个通用方法,所有的绘图方法均可对多序列数据分几个子图进行绘图展示

 

  

 

  

 

  

4.4 一维数据密度图--kind='kde'

 

  

#kde是直方图的另外一种变种,相对于直方图,可以认为其区间数量不限,是连续性的,可以更加直观的观察序列数据在不同数值下的概率分布图,看数值主要集中于哪个数值区间范围内

 

  

 

  

 

  

4.5 累积直方图--cumulative = True

 

  

#如果希望几个数据序列,在同一区间内的频次或者频率相加,则可以使用累积直方图,相当于将频数或频率在同一区间内叠加展示

 

  

 

  

 

  

五、箱线图--kind='box'

 

  

 

  

5.1 默认用法--垂直箱线图

 

  

#box箱线图一般用来直观研究一组或多组数据分布特征的统计图,要求所分析的列数据必须是数值格式

 

  

 

  

 

  

5.2 水平箱线图--vert = False

 

  

#如果希望箱线图水平展示,则直接设置 vert=False即可

 

  

 

  

 

  

六、饼图--kind='pie'

 

  

 

  

6.1 概述

 

  

#饼图一般研究在同一时期或数据点下,不同指标列数值的百分比占比情况,比如同一个月内,不同销售团队销售额占比情况

 

  

 

  

 

  

6.2 设置阴影--shadow=True

 

  

#为了增强生成的图表的可读性,可对pie图的每个slice添加阴影,不过本人不太喜欢阴影

 

  

 

  

 

  

6.3 设置不同饼区域偏离中心区域的距离--explode

 

  

#有时候为了突出展示某几个slice,希望这些slice可以脱离出饼图圆心一定距离,这样就从饼图分离出一部分,可以通过设置explode参数实现

 

  

 

  

 

  

6.4 设置自动产生的百分比文案偏离中心区域的距离--pctdistance

 

  

#可能pie图自动生成的百分比文案位置不太满意,此时可以通过pctdistance参数设置其位置偏差

 

  

 

  

 

  

6.5 去掉列标签,用图例展示

 

  

#如果觉得将对应slice的数据名称直接展示在pie图内,整体会显得拥挤,则可以去掉,并添加图例

 

  

 

  

 

  

七、散点图--kind='scatter'

 

  

 

  

7.1 概述

 

  

#散点图,一般用于分析两列(组)二维数据的相关性规律,折线图的x轴一般是线性变化,所以折线图一般只能研究某一指标列的变化趋势,而散点图则可以研究两列数据的相关性,比如是否有线性变化关系等,且两列数据本身已经相对于同一个线性数据进行了对齐(以下例子中即均与年份对齐)

 

  

 

  

 

  

7.2 分类散点图--增加另一个维度的数据变量

 

  

#一般散点图是分析二维码数据(两个数据序列)之间的关系,也是数据分析最主要的任务,但是如果希望分析三维数据,即三个数据序列之间的变化关系,也可以用散点图实现

 

  

 

  

 

  

7.3 气泡图--散点图变种--以气泡大小代表数值大小

 

  

#分类散点图是以颜色深浅来判断第三个数据序列与指定的x和y数据序列之间的数值变化关系

 

  

 

  

 

  

八、面积图--kind='area'

 

  

 

  

8.1 默认用法--不同序列数据不叠加值

 

  

#面积图,融合了折线图和柱状图的优点,既可以分析不同指标(列标签)随同一个列或index的变化趋势,同时也可以直观的看到大小。如果单纯只是想对比不同指标在同一列下不同大小和变化趋势,则使用折线图最理想。

 

  

 

  

 

  

8.2 不同序列数据叠加值--stacked

 

  

df.plot(x=年份,y=[居民部门,政府部门,地方政府],kind=area, stacked=True,figsize=(10,8),fontsize=12,title=金融杠杆率)

 

  

 

  

 

  

九、六边图--kind='hexbin'

 

  

 

  

9.1 概述

 

  六边图又叫六边箱图,主要分析二维(即两个数据序列)数据点数值分布情况,类似二维的直方图,它展示了每个小六边形中观测点的数量,这种图在大数据集上可视化效果最佳。

  直方图针对每个数据序列,是单独展示其沿着x周数值区间的频数或频次分布,而六边图则展示了x和y两个数据序列关联起来后的频数分布图,同时还可以展示x和y两个数据序列之间的关联变化关系

  

#还是以分析中国宏观杠杆率数据,我们想了解中央政府和地方政府杠杆率数值的分布情况,且最好还可以体现两者之间的变化关系

 

  

 

  

 

  

9.2 调整x轴六边形数量--类似增加密度--gridsize

 

  如果数据点太多时,希望增大统计的区间长度,以更加直观的观察分布情况,则可以调大gridsize的数值

  

#gridsize默认大小是100,即会将数据归集到100个区间范围内,包括x轴和y轴,但是一般情况下,100比较多,设置个比如20个相对可视化效果会比较好

 

  

 

  

 

  

十、常用绘图时设置参数

 

  以下演示的方式,对所有的图表类型均通用

  

 

  

10.1 将不同数据,绘制到同一个图表的不同子图内,且不同子图单独绘图

 

  

#比如上面的面积图,希望看下stacked参数不同时,绘图效果,则可分别将数据绘制在指定的子图内

 

  

 

  

 

  

10.2设置数据序列颜色

 

  

#可通过color参数指定在绘制不同数据序列时,对应的颜色,或者pie图中不同slice的颜色,序列格式,一般用列表格式

 

  

 

  

 

  

10.3 设置x和y坐标轴label

 

  

#可通过matplotlib库中的xlabel和ylabel设置x和y坐标轴的标签名,一般这些pandas的plot函数会根据实际情况自动添加,不过也可以根据自己需要自行设置

 

  

 

  

 

  

10.4其他参数设置

 

  其他常见参数说明参数说明title设置图表的标题,字符串格式linestyle设置不同折线的线型,序列格式(列表或元组),默认实线legend设置图表的图例是否展示,布尔,默认True,即展示marker设置散点图等点的形状alpha数值,设置透明度,默认为1,即不透明,0.5,即50%透明度secondary_y设置第二个y轴,只有当绘制的数据序列大于等于2时,设置才生效,可设置为True,或直接指定使用哪个数据序列作为第二个y轴的刻度linewidth设置线宽,数值table图下添加表,如果为True,则使用DataFrame中的数据绘制表格,并且数据将被转置以满足matplotlib的默认布局,一般不要添加,并且添加时性能较差logx设置x轴坐标刻度是否取对数,布尔,默认False,即不取logy设置y轴坐标刻度是否取对数,布尔,默认False,即不取loglog设置x轴和y轴坐标刻度是否均取对数,布尔,默认False,即不取

  

 

  

 

  

10.5 ax参数专门讲解

 

  10.5.1 概述

  DataFrame.plot()函数中,ax参数如果使用得当,则即可以享受pandas的plot函数带来的便捷性,同时又可以拥有matplotlib的灵活性,如文章以上介绍,其实plot函数给我们提供的参数,只是可以满足日常快速绘图的需求,并可以定义常见的一些绘图属性,但是如果需要定制比如x和y坐标轴的label,坐标轴,或者想隐藏坐标轴、指定坐标轴标签的字体和颜色等等,便无能为力。

  而ax则是plot函数暴露出来,直接与matplotlib直接衔接的接口,ax可以认为是一个坐标系,每个图表的绘制,均需要在指定坐标系内完成,而ax参数则指定了此次df.plot调用,绘图的坐标系对象。

  其实df.plot()函数本身,返回的便是此次绘图生成的坐标系,如果希望后续df.plot函数也绘制到之前df.plot返回的坐标系内,则可以将ax参数赋值成之前的坐标系值,不过一般不建议使用df.plot返回的坐标系,大部分情况下,一次df.plot即绘制一个

  

#可以使用ax参数指定此次绘图对应的坐标系(axes)对象

 

  

 

  

  

 

  10.5.2 使用ax参数设置具体绘图对象--指定坐标系绘图

  一般用的最多的,是先使用plt绘制一个比如3×3的绘图区域,包含9个坐标系,然后使用df.plot()分别在对应坐标系内进行绘图,以达到将不同类型的图表拼接到一起的效果

  

#使用时,原则性,一次df.plot()就是一次完整的绘图动作,如果希望将多次df.plot绘图动作生成的图表集中展示,则使用下面的方法

 

  

 

  10.5.3 设置x和y坐标轴标签

  可以根据df.plot返回的ax来设置坐标轴标签,也可以根据plt生成的坐标系下标来设置坐标轴标签

  

#1、根据df.plot函数返回的ax直接设置x和y坐标轴label,效果如下左图所示

 

  

 

  

 

  10.5.4matplotlib子图和subplots指定的子图之前关系

  

  • 如果对某次df.plot设置了ax参数,则该次df.plot返回的ax,即指定的ax,因为既然已经指定了绘图ax坐标系,返回的肯定也是指定的坐标系

  • df.plot如果将subplots设置为True,则其返回的ax是一个矩阵,矩阵的shape即layout指定的shape

  • matplotlib中的plt.subplots其实生成的也是一个指定shape的绘图区域,类似以上的layout

  • 如果df.plot设置了subplots为True,且此时指定了ax为plt生成的某个ax,此时会将df.plot生成的子图,分别依次绘制到plt对应的子图区域

    • 比如df.plot,将subplots设置为True,且layout=(2,2),而plt生成的也是一个(2,2)的绘图区域,然后把df.plot的ax指定到了plt绘图区域内的第一个坐标系,则系统会自动将df.plot绘制的4个子图,依次绘制到plt生成的四个绘图坐标系内。

 

  

#以下演示当df.plot设置subplots=True时的效果

 

  

 

  10.5.5保存图表

  

#当图表绘制好之后,一般可能希望将其保存到本地留作他用,需要用fig对象进行保存,fig对象的获取一般有以下两种方式,本质道理一样

 

  

 

  

十一、不同图表类型的区别

 

  一维数据分析

  

  • 即分析一个数据序列的数值变化趋势、分布情况(频数、频率)、占比情况

  • 一般line(数值变化)、bar(数值变化)、barh(数值变化)、hist(数值分布)、kde(数值分布)、box(数值分布)、pie(占比)、area(变化趋势、占比)适用于进行以上一维数据分析

 

  二维数据分析

  

  • 即分析两个数据序列之间的数值关联变化趋势、分布情况、占比情况等

  • 一般scatter、hexbin适用于进行以上二维数据分析

 

  其他数据分析和可视化工具

  

  • 后续可学习matplotlib库以及seaborn库,而seaborn库最为推荐,因为做出来的图表颜值非常高,并且很容易上手

  • Plotly库也是强雷建议学习的,因为其有很多非常惊艳的可视化工具

 

  到此这篇关于pandas实现数据可视化的示例代码的文章就介绍到这了,更多相关pandas 数据可视化内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: