本节说明

pandas.plotting 是 pandas 提供的专用统计图形模块,包含 6 个高级绘图函数:自相关图、自助法图、滞后图、平行坐标图、径向可视化图、安德鲁斯曲线图。前三个用于时间序列诊断,后三个用于高维数据分类可视化。

使用方式

# 方式一:从模块导入函数
from pandas.plotting import autocorrelation_plot
 
# 方式二:通过 pd.plotting 命名空间调用
pd.plotting.autocorrelation_plot(series)

两种方式等价

pd.plotting.xxx() 与 from pandas.plotting import xxx 指向同一函数。

1. autocorrelation_plot() — 自相关图

功能

绘制时间序列的自相关系数随滞后阶数变化的图形,用于检验序列是否存在自相关性(如平稳性)。

语法与参数

pandas.plotting.autocorrelation_plot(series, ax=None, **kwargs)
参数类型说明
seriesSeries时间序列数据
axAxes目标坐标轴
**kwargs-传递给 matplotlib 的 plot 的额外参数

示例

import pandas as pd
import numpy as np
from pandas.plotting import autocorrelation_plot
 
# 模拟带趋势与噪声的时间序列
ts = pd.Series(np.cumsum(np.random.randn(200)) + 10)
 
autocorrelation_plot(ts, figsize=(8, 4))

读图要点

  • 图中灰色虚线为 95% 置信区间,超出虚线说明该阶滞后存在显著自相关。
  • 自相关快速衰减至区间内 → 序列趋于平稳。
  • 自相关缓慢衰减 → 序列可能存在趋势或非平稳性。

2. bootstrap_plot() — 自助法图

功能

通过有放回重采样(bootstrap)多次计算指定统计量(默认均值),绘制统计量的抽样分布图,用于评估估计量的稳定性与变异性。

语法与参数

pandas.plotting.bootstrap_plot(series, fig=None, size=50, samples=500, **kwds)
参数类型默认值说明
seriesSeries-原始数据
figFigureNonematplotlib Figure 对象
sizeint50每次重采样的样本量
samplesint500重采样次数
**kwds--传递给 matplotlib 的额外参数

示例

from pandas.plotting import bootstrap_plot
 
data = pd.Series(np.random.randn(200) + 5)
bootstrap_plot(data, size=50, samples=300, figsize=(10, 6))

输出说明

该函数会生成 3 个子图:

  • 左上:原始数据直方图。
  • 右上:每次重抽样统计量的分布直方图。
  • 下方:重抽样统计量随抽样次数变化的折线图。

3. lag_plot() — 滞后图

功能

绘制时间序列在第 t 期与第 t-lag 期的散点图,用于检测序列的滞后相关性(自相关结构的可视化)。

语法与参数

pandas.plotting.lag_plot(series, lag=1, ax=None, **kwds)
参数类型默认值说明
seriesSeries-时间序列
lagint1滞后阶数
axAxesNone目标坐标轴
**kwds--传给 matplotlib scatter 的参数

示例

from pandas.plotting import lag_plot
 
ts = pd.Series(np.cumsum(np.random.randn(200)))
 
lag_plot(ts, lag=1, figsize=(6, 6))
lag_plot(ts, lag=5)   # 不同滞后阶数

读图要点

  • 点呈正斜率线性分布 → 正自相关。
  • 点呈负斜率线性分布 → 负自相关。
  • 点呈随机云状 → 该滞后阶数上无明显相关性。

4. parallel_coordinates() — 平行坐标图

功能

将高维数据的每个特征映射为一条平行垂直轴,每个样本用一条折线连接各轴上的取值,并按类别着色,用于多变量分类模式的可视化。

语法与参数

pandas.plotting.parallel_coordinates(frame, class_column, cols=None,
                                     ax=None, color=None, use_columns=False,
                                     xticks=None, colormap=None,
                                     axvlines=True, axvlines_kwds=None,
                                     sort_labels=False, **kwargs)
参数类型说明
frameDataFrame数据源
class_columnstr类别列的列名(用于着色与图例)
colslist参与绘制的特征列(默认除类别列外全部数值列)
axAxes目标坐标轴
colorlist / dict自定义各类别颜色
use_columnsbool是否使用列标签作为 x 轴刻度(默认用位置序号)
xtickssequence自定义 x 轴刻度
colormapstr / Colormap颜色映射
axvlinesbool是否绘制轴分隔竖线,默认 True
axvlines_kwdsdict轴分隔竖线的样式参数
sort_labelsbool是否按类别排序,默认 False

示例

from pandas.plotting import parallel_coordinates
 
# 构造带有类别的数据
df = pd.DataFrame({
    'feature1': np.random.randn(90),
    'feature2': np.random.randn(90) * 2,
    'feature3': np.random.randn(90) * 0.5,
    'class': ['A'] * 30 + ['B'] * 30 + ['C'] * 30
})
 
parallel_coordinates(df, class_column='class',
                     colormap='viridis', figsize=(10, 6))

读图要点

  • 同一类别的折线颜色一致,若折线分簇明显,则类别可区分度高。
  • 某轴上类别分布分离明显 → 该特征对分类贡献大。

5. radviz() — 径向可视化

功能

将高维数据投影到二维圆形平面:每个特征作为圆周上的一个锚点(等距分布),样本点按照各特征值加权投影到圆内,并按类别着色。适合观察类别聚类结构与特征贡献方向。

语法与参数

pandas.plotting.radviz(frame, class_column, ax=None, color=None,
                       colormap=None, **kwargs)
参数类型说明
frameDataFrame数据源
class_columnstr类别列名
axAxes目标坐标轴
colorlist / dict自定义颜色
colormapstr / Colormap颜色映射

示例

from pandas.plotting import radviz
 
radviz(df, class_column='class', colormap='plasma', figsize=(8, 8))

读图要点

  • 样本点靠近某特征锚点 → 该特征对该样本取值较大。
  • 不同类别在圆内区域分离 → 特征能有效区分类别。
  • 类别混杂重叠 → 特征区分度不足或存在噪声。

6. andrews_curves() — 安德鲁斯曲线

功能

将高维样本映射为傅里叶级数曲线:每个样本对应一条曲线,横轴为 t ∈ [-1, 1],同一类别的曲线颜色相同。通过曲线形态与分簇情况观察类别可分性。

语法与参数

pandas.plotting.andrews_curves(frame, class_column, ax=None,
                               samples=200, color=None, colormap=None,
                               **kwargs)
参数类型默认值说明
frameDataFrame-数据源
class_columnstr-类别列名
axAxesNone目标坐标轴
samplesint200每条曲线的采样点数(t 的分辨率)
colorlist / dictNone自定义颜色
colormapstr / ColormapNone颜色映射

示例

from pandas.plotting import andrews_curves
 
andrews_curves(df, class_column='class',
               samples=300, figsize=(10, 5))

读图要点

  • 同类曲线聚合紧密 → 类别可分性高。
  • 不同类别曲线明显分离成束 → 数据存在良好的判别结构。
  • 曲线相互缠绕 → 类别差异较弱。

📊 六大函数对比速查

函数所属任务输入核心用途
autocorrelation_plot()时间序列Series自相关性诊断
bootstrap_plot()统计推断Series统计量抽样分布
lag_plot()时间序列Series滞后相关性
parallel_coordinates()高维分类DataFrame + 类别列多特征类别模式
radviz()高维分类DataFrame + 类别列圆形投影聚类
andrews_curves()高维分类DataFrame + 类别列傅里叶曲线分类

🔗 相关笔记