繁体   English   中英

Plot 多个 Pandas 数据帧(分组图)

[英]Plot Multiple Pandas Dataframes (Groupby Plot)

我正在尝试根据他们每月的总活动时间来 plot 三个 dataframe 所以我使用了 groupby function。

df110 = df[df['Attendance Abs Type Code'] == '110']
df120 = df[df['Attendance Abs Type Code'] == '120']

dfWithout110 = df[df['Attendance Abs Type Code'] != '110 ']
dfWithout110120 = dfWithout110[dfWithout110['Attendance Abs Type Code'] != '120']

dfWithout110120Chart = dfWithout110120[["Activity Hours"]].groupby(dfWithout110120["Activity Month"]).sum().plot(kind='bar', width=0.8, title="Total activity hours per month (Without 110 & 120)")
df110chart = df110[["Activity Hours"]].groupby(df110["Activity Month"]).sum().plot(kind='bar', width=0.8, title="Total activity hours per month (110 only)")
df120chart = df120[["Activity Hours"]].groupby(df120["Activity Month"]).sum().plot(kind='bar', title="Total activity hours per month (120 only)")

数据集https://drive.google.com/file/d/1YdSsP8BM4PVNh8m2kW7244NOo75lNUT7/view?usp=sharing的下载链接

以下是来自 dataframe 的一些示例数据:

在此处输入图像描述

请看一下附图。

在此处输入图像描述

我真正想要的实际上是这样的堆叠条形图:

在此处输入图像描述

您可以在seaborn中使用hue参数:

import seaborn as sns

df['hue'] = df["Attendance Abs Type Code"]
df.loc[~df['hue'].isin(['110', '120']), 'hue'] = 'Other'
df = df.groupby(['Activity Month', 'hue'])['Activity Hours'].sum().reset_index()

sns.barplot(x='Activity Month', y='Activity Hours', hue='hue', data=df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM