python - 如何绘制熊猫数据框中列中位数的堆积条形图?
问题描述
所以我是一个学习 pandas (python) 中数据可视化的新手,我的任务是为 30 到 35 岁的年龄组创建一个中位数 WeekHrs 和 CodeRevHrs 的堆叠图表。
以下是我的代码,我在其中提取了在年龄列上应用过滤器的数据,下面是我的数据集的前五行
age_filter= agework [(agework["age"]>= 30 )&(agework["age"]<=35)]
median_weekhrs= age_filter["Weekhrs"].median()
median_coderev= age_filter["CodeRevHrs"].median()
age_filter.head()
CodeRevHrs Weekhrs age
5 3.0 8.0 31.0
11 2.0 40.0 34.0
12 2.0 40.0 32.0
18 15.0 42.0 34.0
22 2.0 40.0 33.0
如何绘制带有中位数的堆积条形图?
请帮忙
解决方案
首先,过滤年龄(并将年龄转换int
为更清晰的标签):
df = agework.query('30 <= age <= 35')
df['age'] = df['age'].astype(int)
然后,您可以绘制每个年龄组中两个数量的中位数的条形图:
df.groupby('age').median().plot.bar(stacked=True)
plt.title('Median hours, by age')
顺便说一句,您可以对值的堆叠方式施加任意顺序。例如,如果您希望'Weekhrs'
在底部,您可以说:
order = ['Weekhrs', 'CodeRevHrs']
df.groupby('age')[order].median().plot.bar(stacked=True)
plt.title('Median hours, by age')
现在,如果您更愿意为整个过滤的年龄范围绘制这些数量的总体中位数(如您所说:每个数量都有一个数字),那么一种方法(在许多中)将是:
label = f"{df['age'].min()}-{df['age'].max()}"
df.median().drop('age').to_frame(label).T.plot.bar(stacked=True)
plt.title(f'Median hours for age {label}')
推荐阅读
- android - Android 11 GooglePlayServicesUtilLight 崩溃
- django - Django-filer PIL 转换并覆盖原始文件
- r - 找到时间序列的质心
- excel - 按下 MS Word 或 Excel 中的“拼音指南”按钮时会调用哪个 VBA 函数或宏?
- python - 如何创建一个自动安装一些库的python程序
- javascript - 为什么 innerHTML 会截断我的字符串(以及如何修复它)?
- asp.net - 使用 Github Actions 发布 React+dotnet 核心应用程序抛出错误 MSB3073: The command "npm run build" exited with code 1
- shopify - Shopify 如何检查产品是否存在于购物车中
- c - C 代码在 VS 中工作,但在通过 valgrind 时失败并拒绝编译
- javascript - 以编程方式在 Material-UI 的数据网格中预选一行(React)