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

Python绘制分类变量柱状图与分类占比计算技术咨询

Python分类变量可视化与占比计算实现方案

1. 单分类变量频数柱状图

针对单个分类变量,用以下两种方式快速绘制频数柱状图:

依赖库导入

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

创建示例数据

data = {'COLOR': ['green', 'red', 'green', 'yellow', 'pink', 'red', 'blue']}
df = pd.DataFrame(data)

绘制方法

方法1:Pandas原生绘图

先计算频数再绘制,直观可控:

freq_series = df['COLOR'].value_counts()
freq_series.plot(kind='bar', title='COLOR观测频数柱状图')
plt.xlabel('颜色')
plt.ylabel('观测频数')
plt.show()

方法2:Seaborn一键绘图

无需手动计算频数,直接调用countplot:

sns.countplot(x='COLOR', data=df)
plt.title('COLOR观测频数柱状图')
plt.xlabel('颜色')
plt.ylabel('观测频数')
plt.show()

2. 双分类变量交叉分组频数柱状图

针对两个分类变量的交叉分组频数,推荐两种实现方式:

创建示例数据

data = {
    'Group': ['Group A', 'Group B', 'Group B', 'Group A', 'Group A', 'Group B', 'Group B', 'Group A'],
    'Series': ['Series 2', 'Series 1', 'Series 5', 'Series 4', 'Series 1', 'Series 3', 'Series 3', 'Series 2']
}
df = pd.DataFrame(data)

绘制方法

方法1:Seaborn分组对比图

用hue参数区分第二个分类变量,便于直观对比:

sns.countplot(x='Group', hue='Series', data=df)
plt.title('Group与Series交叉分组观测数量')
plt.xlabel('分组')
plt.ylabel('观测数量')
plt.legend(title='系列')
plt.show()

方法2:Pandas交叉表绘图

先生成交叉计数表,再绘制柱状图,支持堆叠/非堆叠模式:

cross_tab = pd.crosstab(df['Group'], df['Series'])
cross_tab.plot(kind='bar', stacked=False)  # 改为stacked=True可绘制堆叠柱状图
plt.title('Group与Series交叉分组观测数量')
plt.xlabel('分组')
plt.ylabel('观测数量')
plt.legend(title='系列')
plt.show()

3. 分组内分类变量占比计算与格式化输出

通过分组统计+格式化处理,输出指定格式的占比结果:

实现代码

# 按Group分组,计算每个组内各Series的占比(转换为百分比)
grouped_ratios = df.groupby('Group')['Series'].value_counts(normalize=True) * 100

# 遍历每个分组,格式化输出
for group_name, ratio_data in grouped_ratios.groupby(level=0):
    ratio_items = [f"{round(ratio)}% {series}" for series, ratio in ratio_data.items()]
    print(f"{group_name} : {', '.join(ratio_items)}")

输出示例(对应给定数据)

Group A : 33% Series 2, 25% Series 1, 25% Series 4
Group B : 33% Series 3, 25% Series 1, 25% Series 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:55:23