基于Age列拆分DataFrame并绘制分年龄组配对直方图
解决方案:分年龄组绘制Location配对直方图
1. 拆分DataFrame为各年龄组
直接用布尔索引筛选出每个年龄组的独立数据集:
import pandas as pd from ggplot import * # 假设原始数据集名为df baby_df = df[df['Age'] == 'Baby'] teen_df = df[df['Age'] == 'Teen'] adult_df = df[df['Age'] == 'Adult']
2. 分年龄组绘制配对直方图
有两种实用方法,按需选择:
方法一:用ggplot分面一次性生成所有组(推荐)
不用拆分数据集,直接通过分面功能按Age分组,同时用填充色区分West和East,实现每个年龄组内的配对对比:
p = ggplot(df, aes(x='Length', fill='Location')) + \ # position='dodge'让两个Location的直方图并排呈现配对效果 geom_histogram(position='dodge', bins=15, alpha=0.7) + \ # 按Age拆分出独立子图 facet_wrap('~Age') + \ labs(title='Length分布:分年龄组对比东西区域', x='Length', y='数量') + \ scale_fill_manual(values=['#1f77b4', '#ff7f0e']) print(p)
方法二:单独绘制每个年龄组的图
如果需要单独导出每个年龄组的可视化结果,循环处理拆分后的数据集即可:
age_groups = {'Baby': baby_df, 'Teen': teen_df, 'Adult': adult_df} for group_name, data in age_groups.items(): p = ggplot(data, aes(x='Length', fill='Location')) + \ geom_histogram(position='dodge', bins=15, alpha=0.7) + \ labs(title=f'Length分布 - {group_name}组', x='Length', y='数量') + \ scale_fill_manual(values=['#1f77b4', '#ff7f0e']) print(p) # 如需保存图片,取消下面注释 # p.save(f'{group_name}_length_hist.png')
内容的提问来源于stack exchange,提问作者reilly461
相关产品推荐
相关产品推荐

