用 Python 可视化技术可视化分类数据:分组条形图和分类数据示例
分类数据可视化是数据分析中最基本但也是最强大的工具之一。如下图所示,按性别、婚姻状况、年龄范围等分组对数据进行可视化,可以帮助你直观地了解数据的分布和差异。

在本帖中,我们将使用 Python如何在 .NET Framework 中使用 matplotlib 对分类数据进行分组并将其可视化为条形图?在这一课中。此外,我们还将举一个分类数据的例子,让你了解现实生活中可能会遇到的情况。
什么是分类数据?
分类数据是一种使用 指分为特定组或类别的数据用于以下方面
下面是一个典型的例子
- 性别:男,女
- 年龄范围年龄: 青少年、20 岁、30 岁、40 岁及以上
- 婚姻状况单身、已婚、离婚、不愿说
- 地区首尔、釜山、大邱等。
- 教育水平学历: 高中、大学、硕士、博士
通过分析这些数据,您可以看到 差异、分布、比率是可以直观理解的。
分类数据示例
在本例中,我们将使用 婚姻状况和 性别 利用数据直观显示各组的分布情况。假设你得到以下分类数据
| 性别 | 婚姻状况 | 人数 |
|---|---|---|
| 男 | 无回复 | 700 |
| 女性 | 无回复 | 1000 |
| 男 | 离婚 | 200 |
| 女性 | 离婚 | 250 |
| 男 | 婚姻 | 3200 |
| 女性 | 婚姻 | 2400 |
- 性别:分为男性和女性
- 婚姻状况关键词: 无回复, 离婚, 已婚
您可以将这些数据保存到 各组条形图来想象一下。
Python 代码示例
下面是基于上述数据的分类数据可视化代码。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
创建 # 数据
data = {'性别':[男性'、'女性'、'男性'、'女性'、'男性'、'女性'、'男性'、'女性']、
婚姻状况[无回复'、'无回复'、'离婚'、'离婚'、'已婚'、'已婚']、
计数[700, 1000, 200, 250, 3200, 2400]}
创建 # 数据帧
df = pd.DataFrame(data)
# 按婚姻状况分割数据
no_response = df[df['Marital_Status'] == 'No Response'] 无响应
divorce = df[df['Marital_Status'] == 'Divorce'] 离婚
已婚 = df[df['Marital_Status'] == '已婚']
绘制 # 图表
fig, axes = plt.subplots(1, 3, figsize=(12, 5), sharey=True)
# 第一幅图:婚姻状况 = 无响应
axes[0].bar(no_response['Gender'], no_response['Count'], color=['#1f77b4', '#aec7e8'])
axes[0].set_title("Marital Status = No Response")
axes[0].set_xlabel("Gender")
axes[0].set_ylabel("Count")
# 第二张图表:婚姻状况 = 离婚
axes[1].bar(divorce['Gender'], divorce['Count'], color=['#1f77b4', '#aec7e8'])
axes[1].set_title("Marital Status = Divorce")
axes[1].set_xlabel("Gender")
# 第三张图表:婚姻状况 = 已婚
axes[2].bar(married['Gender'], married['Count'], color=['#1f77b4', '#aec7e8'])
axes[2].set_title("Marital Status = Married")
axes[2].set_xlabel("Gender")
# 常用设置
for axes[1] 中的 ax.set_xticks(n)
ax.set_xticks(np.arrange(len(df['Gender'].unique())))))
ax.set_xticklabels(['Male', 'Female'], fontsize=10)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
调整 # 布局
plt.tight_layout()
显示 # 图表
plt.show()

代码简介
- 生成数据
- 将性别、婚姻状况和人数数据设置为字典,并使用
大熊猫将其创建为 DataFrame。
- 将性别、婚姻状况和人数数据设置为字典,并使用
- 数据分组
无回应,离婚,已婚按婚姻状况筛选数据。
- 创建图表
- 三个分情节并为每个子情节赋予
bar()绘制条形图。 - X 轴显示性别,Y 轴显示人数。
- 三个分情节并为每个子情节赋予
- 布局设置
tight_layout()来调整子图块之间的间距,使其保持整洁。
处理分类数据的技巧
分类数据存储在 商业、统计分析、调查等例如让我们通过下面的例子来详细了解如何利用分类数据在上述各个领域获得有意义的见解。
1. 获得业务洞察力
产品购买数据I 客户行为数据可以帮助您了解不同客户群的特点,并制定业务战略。
使用案例
- 按性别和年龄组分析购买率
- 例如,按性别(男性、女性)和年龄组(20 多岁、30 多岁、40 多岁等)显示特定产品的购买比例。
- 因此,您可以了解哪些群体的购买量最大,从而制定有针对性的营销策略。
- 按地区分列的收入明细
- 如果您想可视化按地区划分的特定产品或服务的销售数据,可以使用 当地销售策略在数据库中。
- 举例来说:如果某种产品在首尔地区的销量很高,你就把广告重点放在该地区。
2. 社会人口分析
人口数据婚姻状况、教育水平和地区分布是对政策制定和研究特别有用的数据。
使用案例
- 婚姻状况分析
- 按年龄组或地区分列的结婚率、离婚率和单身率可帮助您了解特定群体的社会变化。
- 例如:如果一个地区的离婚率很高,你可能需要为该地区制定一项福利政策。
- 按教育水平分析收入分配情况
- 按教育程度(高中、大学、硕士等)可视化收入水平 教育如何影响收入分析
3 分析调查结果
调查数据以便更清楚地了解某个群体的偏好或意见。
使用案例
- 产品满意度调查
- 按性别和年龄组分析产品满意度,收集特定群体的反馈意见。
- 例如:如果一群 30 多岁的男性对你的产品不太满意,你就需要根据他们的反馈改进产品。
- 消费者偏好分析
- 按类别(地区、性别等)分析对特定产品或服务的偏好。
- 举例说明:如果 A 地区的客户对某项服务的满意度高于 B 地区的客户,那就把营销重点放在该地区。
总结
在本帖中,我们将使用 如何将分类数据可视化在上一节中。 matplotlib可以轻松地在条形图中直观显示一系列分类数据。使用真实数据进行分析,并尝试不同的分组条件。可视化将成为解读数据和获得洞察力的有力工具!
如果您对 Python 的可视化感兴趣,请点击此处、 如何使用 Python 可视化技术绘制和嵌套圆环图 阅读文章,积累知识!
# 代码说明
1. 导入库
import matplotlib.pyplot as plt import pandas as pd import numpy as np
matplotlib.pyplot:一个图形和可视化库。大熊猫:一个允许你创建数据帧和操作数据的库。numpy一个处理数值运算和数组数据的库。2. 生成数据
data = {'性别':[男'、'女'、'男'、'女'、'男'、'女'、'男'、'女']、 婚姻状况[无回复'、'无回复'、'离婚'、'离婚'、'已婚'、'已婚']、 计数[700, 1000, 200, 250, 3200, 2400]}
数据字典数据字典:创建要可视化的数据字典。
性别:代表性别,分为 "男性 "和 "女性 "两组。婚姻状况将婚姻状况设置为分类数据:(无回复、离婚、已婚)计数表示每组的人数。3. 创建数据帧
df = pd.DataFrame(data)
pd.DataFrame():以上创建数据辞海 数据帧 形式- 结果就是表格形式的数据。
输出示例:
性别 婚姻状况 计数 男 无回应 700 女性 无回应 1000 男 离婚 200 女性 离婚 250 男 已婚 3200 女性 已婚 2400 4. 按婚姻状况分列数据
no_response = df[df['Marital_Status'] == 'No Response'] 没有回应 divorce = df[df['Marital_Status'] == 'Divorce'] 离婚 married = df[df['Marital_Status'] == 'Married'] 已婚
- 按条件筛选:数据帧的
婚姻状况根据列分割数据
df[df['婚姻状况'] == '无回复']婚姻状况:仅提取婚姻状况为 "无回复 "的行。df[df['婚姻状况'] == '离婚']婚姻状况:只提取婚姻状况为 "离婚 "的记录。df[df['婚姻状况'] == '已婚']婚姻状况:只提取婚姻状况为 "已婚 "的记录。5.创建分镜头
fig, axes = plt.subplots(1, 3, figsize=(12, 5), sharey=True)
plt.subplots()子绘图:可同时绘制多个图形(子绘图)。
1, 3创建第 1 行第 3 列的子图。figsize=(12, 5)设置整个图表的水平和垂直尺寸。sharey=True设置所有子图共享的 y 轴值。6. 第一张图:无响应
axes[0].bar(no_response['Gender'], no_response['Count'], color=['#1f77b4', '#aec7e8']) axes[0].set_title("Marital Status = No Response") axes[0].set_xlabel("Gender") axes[0].set_ylabel("Count")
axes[0].bar()在第一个子绘图上绘制条形图。
无响应['性别']性别:将性别("男"、"女")设置为 X 轴值。无响应['计数']Y:将每个性别的人数设置为 Y 轴值。肤色:设置条形图的颜色。
#1f77b4:深蓝色(雄性)#aec7e8浅蓝色(女性)set_title()标题:设置子情节的标题。set_xlabel():设置 X 轴标签。set_ylabel():设置 Y 轴标签。7 第二幅图:离婚
axes[1].bar(divorce['Gender'], divorce['Count'], color=['#1f77b4', '#aec7e8']) axes[1].set_title("Marital Status = Divorce") axes[1].set_xlabel("Gender")
轴[1]第二个分镜头。- 数据说明:直观显示一组人中婚姻状况为 "离婚 "的性别和人数。
- 设置 X 轴/Y 轴:与第一幅图相同。
第三幅图:已婚
axes[2].bar(married['Gender'], married['Count'], color=['#1f77b4', '#aec7e8']) axes[2].set_title("Marital Status = Married") axes[2].set_xlabel("Gender")
轴[2]第三个分镜头。- 数据婚姻状况:直观显示一组人中婚姻状况为 "已婚 "的性别和人数。
9. 常用设置
for ax in axes: ax.set_xticks(np.arrange(len(df['Gender'].unique())))) ax.set_xticklabels(['Male', 'Female'], fontsize=10) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False)
for ax in axes对每个子情节应用通用设置。- 设置 X 轴刻度:
np.array(len(df['Gender'].unique()))将刻度设为 2,因为有 2 种性别("男"、"女")。set_xticklabels()显示 X 轴标签为 "男性 "和 "女性"。- 删除边界:
spines['top'].set_visible(False)删除顶部边框。spines['right'].set_visible(False)删除右侧边框。10. 布局和图表输出
plt.tight_layout() plt.show()
tight_layout()自动调整子图之间的间距,以避免图形重叠。plt.show()打印:将图形打印到屏幕上。






