Pandas数据可视化:从基础图表到高级绘图的完整指南
本文深入解析Pandas内置的多种数据可视化函数,涵盖条形图、折线图、面积图、箱线图、直方图、饼图及散点图等核心类型。通过具体代码示例,展示如何调用line、bar、box、hist等接口,并详解透明度、子图布局及六边形分箱等高级参数的应用,帮助开发者高效实现数据分布特征的直观呈现。
简介
| method | 绘图类别 | method | 绘图类别 |
|---|---|---|---|
'line' | 折线图[默认使用] | 'area' | 堆叠面积图 |
'bar' | 纵向条形图 | 'barh' | 横向条形图 |
'kde' | 概率分布图 | 'density' | 概率分布图 |
'box' | 箱线图 | 'hist' | 数据直方图 |
'pie' | 饼图 | ||
'scatter' | 散点图 | 'hexbin' | 六角拼接图 |
其中scatter和hexbin这两种绘图方式仅针对数据帧对象有效,即DataFrame格式。这里提到的DataFrame,也就是数据帧,可以通俗地理解为一个包含表头的表格结构;若忽略表头部分,其本质就是一个多维数组。
针对上述各类图像,Pandas提供了专门封装好的函数以便直接调用绘制。以下面这组数据为例进行演示:
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()
bar与barh方法


折线图
df.plot.line(title="line") df.plot.area(title="area") plt.show()
line与area方法


箱线图
箱形图(Box-plot),也被称为盒须图、盒式图或箱线图,是一种用于展示一组数据分散情况的统计图表,因其形状类似箱子而得名。该图表在品质管理等各个领域应用广泛,主要用于反映原始数据的分布特征,并支持多组数据分布特征的对比分析。箱线图的绘制逻辑如下:首先确定一组数据的上边缘、下边缘、中位数以及两个四分位数;接着,连接两个四分位数以绘制出箱体;最后,将上边缘和下边缘与箱体相连,中位数则显示在箱体内部。
df.plot.box(title='box') df.plot.kde(title='kde') plt.show()
box与kde方法


直方图
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()
hist与density方法


饼图
饼图对输入数据有特定限制,即不允许包含负值。因此,在绘制前需将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选项是一个通用参数,适用于任何类型的图像绘制。
散点图和六边形分箱图
散点图是仅对数据帧对象可调用的绘图方法,主要包含两类:scatter和hexbin。前者用于生成普通的散点图,后者则是六边形分箱图,其本质是一种二维的数据直方图。
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()
scatter方法

hexbin方法

至此,关于Pandas绘图函数的详细讲解已介绍完毕。如需了解更多相关Pandas绘图内容,欢迎搜索本站历史文章或继续阅读后续相关文章,希望大家今后能多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













