如何绘制不同分组数值图表:基于Users.age的分组可视化实现
实现方案
数据预处理
你需要先对原始的Users.age数据做分组和汇总,具体操作如下:
- 自定义年龄分组区间,可根据业务需求设置,例如设置区间为
[0,18,25,35,45,60,120],对应分组标签为['<18','18-24','25-34','35-44','45-59','60+'],用pandas的pd.cut()方法完成年龄字段的分箱操作 - 以「年份」、「年龄分组」作为分组维度,对数据集做聚合统计,每个分组的计数结果就是你需要的y轴频数
可视化实现
直接用seaborn的scatterplot方法即可实现不同年龄分组用不同颜色标记的需求,参考代码如下:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 读取原始数据,假设你的数据已经加载为df,包含year、age两个字段 # 年龄分箱 df['age_group'] = pd.cut(df['age'], bins=[0,18,25,35,45,60,120], labels=['<18','18-24','25-34','35-44','45-59','60+']) # 统计每年各年龄分组的频数 count_df = df.groupby(['year', 'age_group'], as_index=False).size() count_df.rename(columns={'size':'freq'}, inplace=True) # 绘制散点图 plt.figure(figsize=(10,6)) sns.scatterplot(data=count_df, x='year', y='freq', hue='age_group', s=100) # 补充图表信息 plt.xlabel('年份') plt.ylabel('频数') plt.title('各年份不同年龄组用户数量分布') plt.legend(title='年龄分组') plt.show()
如果你的原始数据已经直接包含年份、年龄分组、频数字段,可直接跳过预处理步骤,把对应字段传入scatterplot即可。
内容的提问来源于stack exchange,提问作者Montanafox
相关产品推荐
相关产品推荐

