python数据可视化技巧的100个练习 -- 41. 人口统计数据的嵌套饼图
您是某市政府的数据分析师。您的任务是使用嵌套饼图可视化该市人口按年龄组和性别的分布情况。该市人口分为三个主要年龄组:儿童(0-14 岁)、成年人(15-64 岁)和老年人(65 岁及以上)。每个年龄组进一步按性别(男性、女性)划分。【数据生成代码示例】
import pandas as pddata = { 'Age Group': ['Children', 'Children', 'Adults', 'Adults', 'Seniors', 'Seniors'], 'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'], 'Population': [3000, 2800, 15000, 16000, 4000, 4500]}df = pd.DataFrame(data)
【图表答案】
【代码答案】
import pandas as pd import matplotlib.pyplot as plt data = { 'Age Group': ['Children', 'Children', 'Adults', 'Adults', 'Seniors', 'Seniors'], 'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'], 'Population': [3000, 2800, 15000, 16000, 4000, 4500]} df = pd.DataFrame(data) # Group by age group and sum populationsgroups = df.groupby('Age Group').sum().reset_index() # Extract sizes and labels for outer and inner ringssize1 = groups['Population'].values size2 = df['Population'].values labels1 = groups['Age Group'].values labels2 = df.apply(lambda x: f"{x['Age Group']}-{x['Gender']}", axis=1).values # Create nested pie chartplt.figure(figsize=(8, 8)) ax = plt.gca() # Outer ringax.pie(size1, labels=labels1, radius=1, wedgeprops=dict(width=0.3, edgecolor='w')) # Inner ringax.pie(size2, labels=labels2, radius=0.7, wedgeprops=dict(width=0.3, edgecolor='w')) plt.title('城市人口统计数据') plt.show()

- 导入必要的库:使用 pandas 进行数据处理,使用 matplotlib 进行绘图。
- 创建数据字典并转换为 DataFrame:数据字典包含年龄组、性别和人口数量,将其转换为 pandas DataFrame。
- 按年龄组分组并求和:使用 groupby 按年龄组分组,并对人口数量求和,以获取每个年龄组的总人口。重置索引以确保数据对齐。
- 设置图表标题并显示:使用 plt.title 设置标题,并使用 plt.show 显示图表。
【小知识】
嵌套饼图(也称为日光图或多级饼图)是一种通过同心圆显示分层数据的可视化类型。外环表示分层结构的顶层,而内环表示较低层级。这种类型的图表特别适用于显示人口按子类别划分的情况,例如人口统计数据、按类别划分的销售数据或组织结构。
系列完整内容可以在公众号主页搜索或点击分栏找到,欢迎扫码关注预防迷路找不到。感谢您的支持与相伴。
