You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas时序DataFrame中绘制含缺失值的分类变量计数可视化?

带缺失值的分类变量计数可视化方案

核心解决思路

Pandas、Seaborn等库默认会忽略NaN/None类型的缺失值,导致绘图时缺失值计数不显示。无需删除或插补,只需将缺失值转换为一个明确的分类标签(比如"缺失值"),即可让统计和绘图逻辑正常识别这部分数据。

方法1:Pandas原生快速绘图

适合快速生成统计条形图或时间序列趋势图:

import pandas as pd
import matplotlib.pyplot as plt

# 替换为你的目标DataFrame
df = pd.DataFrame({
    'timestamp': pd.date_range(start='2024-01-01', periods=100, freq='D'),
    'category': pd.Series(['A', 'B', None, 'A', 'C', None]*17).head(100)
})

# 把缺失值转为明确标签
df['category'] = df['category'].fillna('缺失值')

# 1. 整体类别计数条形图
df['category'].value_counts().plot(kind='bar', figsize=(10,6))
plt.title('分类变量计数(含缺失值)')
plt.xlabel('类别')
plt.ylabel('计数')
plt.show()

# 2. 时间序列维度的每日计数趋势图
daily_counts = df.groupby(['timestamp', 'category']).size().unstack(fill_value=0)
daily_counts.plot(kind='line', figsize=(12,6))
plt.title('每日分类计数趋势(含缺失值)')
plt.xlabel('日期')
plt.ylabel('每日计数')
plt.legend(title='类别')
plt.show()

方法2:Seaborn 可视化

Seaborn默认过滤缺失值,替换标签后即可正常绘制:

import seaborn as sns

# 先处理缺失值(同上述步骤)
df['category'] = df['category'].fillna('缺失值')

# 分类计数条形图
sns.countplot(data=df, x='category')
plt.title('分类变量计数(含缺失值)')
plt.show()

# 时间序列折线图(基于每日统计结果)
sns.relplot(
    data=daily_counts.reset_index().melt(id_vars='timestamp', var_name='category', value_name='count'),
    x='timestamp', y='count', hue='category', kind='line', height=6, aspect=2
)
plt.title('时间序列分类计数趋势')
plt.show()

方法3:基于已统计的groupby结果绘图

如果已经通过groupby得到了包含缺失值的计数结果,只需重命名缺失值索引后直接绘制:

# 统计时保留缺失值(dropna=False)
counts = df['category'].value_counts(dropna=False)

# 将NaN/None索引重命名为"缺失值"
counts = counts.rename(index={pd.NA: '缺失值', None: '缺失值'})

# Matplotlib手动绘制
plt.bar(counts.index, counts.values)
plt.title('分类变量计数(含缺失值)')
plt.xlabel('类别')
plt.ylabel('计数')
plt.xticks(rotation=45)
plt.show()

常见问题说明

之前触发TypeError的原因通常是:直接对包含NaN的分类列调用绘图函数时,NaN不属于有效的分类值,导致库无法识别。将缺失值转为明确字符串标签后即可解决该问题。

内容的提问来源于stack exchange,提问作者Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:22:42