专栏首页Python碎片公众号的专栏Pandas知识点-绘制统计图

Pandas知识点-绘制统计图

使用matplotlib可以绘制各种各样的统计图,Pandas对matplotlib中的绘图方法进行了更高层的封装,使用起来更简单方便。

本文介绍Pandas中最基本的几种统计图的绘制方法,都非常常用。

本文使用的数据来源于网易财经,具体下载方法可以参考:Pandas知识点-DataFrame数据结构介绍

一、数据准备

数据文件是600519.csv,将此文件放到代码同级目录下,从文件中读取出数据。

为了使数据简洁一点,删除了一些列,设置“日期”为索引。

读取的原始数据如上图,本文基于这些数据来绘制统计图。

二、绘制折线图

Pandas中直接用Series对象或DataFrame对象调用plot()方法既可以绘制统计图。

kind: 使用kind参数指定图形的种类,line表示折线图,scatter表示散点图,bar表示柱状图,barh表示水平柱状图,hist表示直方图,pie表示饼图。这六种图形是最常用的图形,kind还支持其他图形,如box表示箱图等。

figsize: 使用figsize参数设置图形的大小,参数格式为(width, height)。

xlabel: 图形中会显示x轴的标签,可以使用xlabel参数修改或设置不显示,ylabel同理。

绘图时为了显示(show()方法)图形,会导入matplotlib.pyplot(as plt),可以使用plt对象的xticks()方法设置x轴刻度值,刻度值的倾斜度等,yticks()同理。可以使用text()方法添加图形中的数值标签。

kind参数默认为line,在绘制折线图时可以不指定kind参数。

linestyle: 使用linestyle参数设置折线图的线型,如'--'表示虚线,'-.'表示点线等。

marker: 使用marker参数设置折线图中数值点的样式,可以设置'o','*'等。

用DataFrame对象绘制折线图时,有多组数据,调用plot()方法会自动绘制出条折线图,并且自动设置好图例,比matplotlib方便很多。

三、绘制散点图

设置kind参数为scatter即可绘制散点图。

需要注意的是,在Pandas中,scatter不支持Series对象,只支持DataFrame对象,所以不能用Series对象绘制散点图。

绘制散点图时,通过x参数和y参数指定散点图的x轴数据和y轴数据。x和y都是DataFrame中的列标签,绘图时会根据列标签读取对应列的数据。

s: 使用s参数设置散点图中点的大小。

在Pandas中,绘制图形除了在plot()中指定kind参数外,还可以通过plot链式调用对应的方法,如plot.scatter()表示绘制散点图,后面绘制柱状图、直方图、饼图等也可以用链式调用的方式。

alpha: 设置图形显示的透明度,默认是None,可以传入0~1之间的数,值越小越透明。

marker参数与折线图中的用法相同,当设置成'*'时,显示的图形为五角星,当然还有很多其他的类型,可以参考matplotlib中的markers模块。

c: c参数用于设置散点图的颜色,可以指定一个颜色,也可以设置成一个数组或浮点数,如例子中使用numpy生成一个随机的数组,颜色随机从cmap中获取。

cmap: cmap参数用于设置点的颜色热力图,默认为image.cmap,可以设置成自己需要的颜色类型,参考matplotlib中的colors模块。只有当颜色参数c设置成数组或浮点数时,cmap参数才有用。

设置cmap参数后,会在图形右边生成一个柱状的颜色渐变图,就像下图这样。此时x轴的刻度值会被自动隐藏,将colorbar参数设置成False,可以隐藏颜色渐变图,重新显示x轴刻度值。

s参数也可以设置成一个数组,如例子中也是用numpy生成一个随机的数组,使每个点的大小不一样。

四、绘制柱状图

使用plot链式调用bar()方法,或在plot()中设置kind为bar,都可以绘制柱状图。

width: width参数用于设置柱状图的宽度,默认为0.8,可以根据需要进行修改。柱状图的每一组柱子是独立的,所以中间留好适合的间距会更好,width一般都设置成小于1。

bottom: bottom参数用于设置柱状图的底部位置(使柱状图“上浮”),默认为0,这个参数一般不需要修改,保持0即可。设置bottom参数后,柱状图会沿y轴方向上移,如设置为200,则柱状图上移200,从y坐标为200的地方开始绘制,柱状图的长度不发生改变。例子中的0.5相对于2000多的数值差距太大,看不出来。

color: color参数用于设置柱状图的颜色,前面折线图和散点图是用c参数,有一点差异。当柱状图中有多组数据时,最好传入一个数组,使不同组的柱状图颜色不一样,方便区分。

五、绘制水平柱状

使用plot链式调用barh()方法,或在plot()中设置kind为barh,就可以绘制水平柱状图了,参数用法与bar()方法一样。当然,在设置x轴刻度值,y轴刻度值,数值标签等时要注意方向的转换。

六、绘制直方图

使用plot链式调用hist()方法,或在plot()中设置kind为hist,都可以绘制直方图。这里要强调的是,直方图不是柱状图,两者的应用场景完全不同。

绘制直方图前,要根据数据的分布设置好适合的组距,然后根据组距计算出组数。

bins: bins参数用于设置直方图的组数,传入计算的组数。

如果需要显示图例,使用plt对象的legend()方法设置即可。

七、绘制饼图

使用plot链式调用pie()方法,或在plot()中设置kind为pie,都可以绘制饼图(扇形图)。

饼图是用于展示数据占比的,所以要先确定数据是否符合预期,如果不符合要先进行处理。

autopct: autopct参数用于设置饼图中的百分比格式,如'%.2f%%'表示保留两位小数。

colors: colors参数用于设置每个扇形的颜色,与数据分类一一对应,传入一个长度与数据分类数相等的列表。

explode: explode参数用于设置每个扇形到圆心的距离,传入一个长度与数据分类数相等的列表,默认每个扇形到圆心的距离都是0,将想要分离展示的扇形距离设置成一个适合的值,如0.1,即可将该部分突出展示。

pctdistance: pctdistance参数用于设置百分比显示离圆心的距离,默认值是0.6,可以按需将pctdistance参数增大或减小。

textprops: textprops参数用于设置标签和百分比的字体、大小等,传入一个字典。

本文分享自微信公众号 - Python 碎片(python-suipian),作者:binn wong

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pandas知识点-统计运算函数

    统计运算非常常用。本文介绍Pandas中的统计运算函数,这些统计运算函数基本都可以见名知义,使用起来非常简单。

    Python碎片公众号
  • 良心整理!学习Python数据分析的正确姿势

    原文地址:How to Learn Python for Data Science the Right Way

    龙哥
  • Python-matplotlib 学术散点图 EE 统计及绘制

    之前的绘制图文Python-matplotlib 学术散点图完善Python-matplotlib 学术型散点图绘制 教程中,对学术散点图已经进行了较为完善的绘...

    DataCharm
  • pandas+maplotlib 计算并绘制柏拉图(排列图)

    某型号电子产品有两三百个测试参数,下图是一批该产品的测试数据,每一行代表一个unit,每一列代表一个测试参数。

    用户6021899
  • 干货:如何正确地学习数据科学中的Python

    大多数有抱负的数据科学家是通过学习为开发人员开设的编程课程开始认识 python 的,他们也开始解决类似 leetcode 网站上的 python 编程难题。他...

    一墨编程学习
  • Python-seaborn 基础图表绘制-柱形图(数据分享)

    上期介绍了使用R-ggplot绘制基础柱形图的绘制推文,本期按照惯例,我们继续推出Python 版本的绘制方法,当然我们也是经过美化修饰的结果,毕竟要自己看的过...

    DataCharm
  • 使用 Python 分析数据得先熟悉编程概念?这个观念要改改了​

    AI 开发者按:大多数有抱负的数据科学家是通过学习为开发人员开设的编程课程开始认识 python 的,他们也开始解决类似 leetcode 网站上的 pytho...

    AI研习社
  • 干货:如何正确地学习数据科学中的 python

    大多数有抱负的数据科学家是通过学习为开发人员开设的编程课程开始认识 python 的,他们也开始解决类似 leetcode 网站上的 python 编程难题。他...

    AI研习社
  • Python数据分析:手把手教你用Pandas生成可视化图表

    我的机器学习教程「美团」算法工程师带你入门机器学习   已经开始更新了,欢迎大家订阅~

    用户7886150

扫码关注云+社区

领取腾讯云代金券