【图多预警】Pandas绘图函数总结
创始人
2024-02-22 16:34:57
0

文章目录

    • 简介
    • 条形图
    • 折线图
    • 箱线图
    • 直方图
    • 饼图
    • 散点图和六边形分箱图

简介

pandas中提供了plot函数用以绘图,并通过kind参数选择具体的图像类型。

method绘图类别method绘图类别
'line'折线图[默认使用]'area'堆叠面积图
'bar'纵向条形图'barh'横向条形图
'kde'概率分布图'density'概率分布图
'box'箱线图'hist'数据直方图
'pie'饼图
'scatter'散点图'hexbin'六角拼接图

其中scatterhexbin只适用于数据帧,即DataFrame格式。所谓DataFrame,即数据帧,可以理解为一个表格,如果不考虑表头的话,这个表格就是多维数组。

对于这些图像类别,也可以调用专门封装成的函数进行绘制,例如针对下面这组数据

import matplotlib.pyplot as plt
import pandas as pd
s = pd.Series([1, 2, 2.5, 3, 3.5, 4, 5])

s.plot.kde()完全等价于s.plot(kind='kde')

接下来逐个展示这些图表

条形图

pandas中提供横向和纵向两种条形图。

import numpy as np
df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e'])
df.plot.bar(title="bar")
df.plot.barh(title="barh", stacked=True)
plt.show()
barbarh
在这里插入图片描述在这里插入图片描述

折线图

df.plot.line(title="line")
df.plot.area(title="area")
plt.show()
linearea
在这里插入图片描述在这里插入图片描述

箱线图

箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间。

df.plot.box(title='box')
df.plot.kde(title='kde')
plt.show()
boxkde
在这里插入图片描述在这里插入图片描述

直方图

hist为数据直方图,多条数据放在一起容易混淆,可以设置透明度alpha。下面对高斯分布的散点进行绘制,分别绘制其数据直方图和概率密度图,可以看出二者之间的关联性。

rdNormal = np.random.normal
rand = np.random.rand
df = pd.DataFrame({i : rdNormal(i,rand(),size=(1000)) for i in range(3)})
df.plot.hist(title='box', bins=30, alpha=0.5)
df.plot.density(title='density')
plt.show()
histdensity
在这里插入图片描述在这里插入图片描述

饼图

饼图对输入数据有一定的限制,即不允许出现负值,故在绘制之前,将df所有值取绝对值,且不支持多组数据在一个图中绘制,故而需要开启subplot选项

df = pd.DataFrame(np.random.rand(5,3),columns=list('abc'),index=list("ABCDE"))
df.plot.pie(title='pie', subplots=True)
plt.show()

在这里插入图片描述

当然,这个subplots选项是任何一种图像都可以使用的参数。

散点图和六边形分箱图

散点图是只有数据帧可以调用的绘图方法,共有两类,分别是scatterhexbin,前者是普通的散点图,后者是六边形分箱图,本质上是一种二维的数据直方图。

rdNormal = np.random.normal
rand = np.random.rand
keys = ['x', 'y', 'c']
datas = {keys[i] : rdNormal(i,rand(),size=(1000)) for i in [0,1,2]
}
df = pd.DataFrame(datas)
df.plot.scatter(x='x', y='y', c='c')
df.plot.hexbin(x='x', y='y', gridsize=10)
plt.show()
scatterhexbin
在这里插入图片描述在这里插入图片描述

相关内容

热门资讯

专访白明:海南全岛封关,岛内自... 12月18日,海南自贸港正式启动全岛封关。 封关后,“零关税”商品范围扩大至约6600个税目,约占全...
大金重工卷入5.73亿元工程款... 12月18日,大金重工(002487)发布公告,因与公司下属子公司存在建设工程施工合同纠纷,原告中国...
深圳罗湖区74人获评人民调解员... 深圳商报读创客户端首席记者 张玮玮 通讯员 司新宣 近日,深圳市罗湖区完成2025年人民调解员等级评...
俄央行起诉欧洲清算银行案,明年... 12月18日,俄罗斯中央银行发布正式声明,将通过莫斯科仲裁法院向欧洲清算银行追索损失,索赔理由是其资...
新日股份(603787)披露诉... 截至2025年12月18日收盘,新日股份(603787)报收于12.93元,较前一交易日上涨1.49...
原创 丝... 丝芭传媒今日以"最后通牒"形式指控艺人鞠婧祎及关联人涂某某涉嫌"严重经济犯罪",宣称将向监管部门实名...
【新闻】我县召开集体林权制度改... 温馨提示:观看视频请尽量在wifi环境下观看! 12月17日,我县召开深化集体林权制度改革工作推进会...
互联网检察公益诉讼白皮书:网络... 央广网北京12月18日消息(记者 樊瑞)12月18日下午,北京铁路运输检察院(以下简称“北京铁检院”...
长寿区医保局联合区妇联送政策进... 为进一步提升医保政策宣传覆盖面,切实保障群众医保权益,近日,重庆市长寿区医保局联合区妇联,先后赴石堰...