Python基于pandas DataFrame对年龄分组列求和绘制柱状图/饼图实现年龄分布统计
Pandas年龄分布数据统计与可视化实现
数据统计逻辑
完全适配现有表结构,无需额外做格式转换:
- 跳过用户唯一标识列
new_id,保留所有年龄区间对应的0/1标记列 - 对剩余的年龄标记列逐列求和,得到的结果就是对应年龄区间的总人数
- 表中0/1为标记位逻辑:值为1代表该用户命中对应年龄区间,值为0代表未命中
核心实现代码
首先导入依赖并完成统计计算:
import pandas as pd import matplotlib.pyplot as plt # df 为加载完成的原始数据表 # 移除new_id标识列后逐列求和,得到各年龄区间的人数统计值 age_distribution = df.drop("new_id", axis=1).sum() # 解决Matplotlib中文显示乱码问题 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False
柱状图实现(适合直观对比各区间人数差异)
plt.figure(figsize=(10, 6)) age_distribution.plot(kind="bar", color="#3a7bd5", width=0.6) plt.title("全量人群各年龄区间人数分布") plt.xlabel("年龄区间") plt.ylabel("统计人数") plt.xticks(rotation=0) plt.grid(axis="y", linestyle="--", alpha=0.3) plt.tight_layout() plt.show()
饼图实现(适合直观展示各区间人数占比)
绘制前过滤掉统计值为0的空区间,避免出现无意义的0值扇区:
# 过滤空区间后的有效统计数据 valid_age = age_distribution[age_distribution > 0] plt.figure(figsize=(8, 8)) valid_age.plot(kind="pie", autopct="%1.1f%%", startangle=90, wedgeprops={"edgecolor": "white"}) plt.title("全量人群各年龄区间占比") plt.ylabel("") # 隐藏饼图默认的y轴冗余标签 plt.tight_layout() plt.show()
备注:针对示例中的样例数据,统计结果为:18-24区间0人、25-34区间5人、35-44区间1人、45-54区间2人、55-64区间3人、65-74区间3人,75岁以上相关区间统计值均为0,绘图时会自动过滤全为0的无效区间。
内容的提问来源于stack exchange,提问作者Melderon
相关产品推荐
相关产品推荐

