Pandas数据可视化:从基础图表到高级绘图的完整指南

洛溪
洛溪
发布时间:2026-10-12 | 3人浏览过
原创

本文深入解析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绘图内容,欢迎搜索本站历史文章或继续阅读后续相关文章,希望大家今后能多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表