gpt4 book ai didi

python - 将两个数据框绘制到一个条形图中,区分它们的值

转载 作者:行者123 更新时间:2023-12-05 06:58:24 26 4
gpt4 key购买 nike

我对以下任务感到困惑,希望有人能指出正确的方向。我有两个数据集,一个包含 2019 年 1 月的数据,另一个包含 2020 年 1 月的数据。

df1

ID     Date
5177 2019-01-31
5178 2019-01-31
5179 2019-01-31
5180 2019-01-31
5181 2019-01-31
5182 2019-01-31
5183 2019-01-31
5184 2019-01-30
5185 2019-01-30
5186 2019-01-30

df2

ID     Date
2918 2020-01-31
2919 2020-01-31
2920 2020-01-31
2921 2020-01-31
2922 2020-01-31
2923 2020-01-31
2924 2020-01-31
2925 2020-01-31
2926 2020-01-30
2927 2020-01-30

我尝试将它们绘制成折线图,如下所示:

df1.groupby('Date').size().plot()
df2.groupby('Date').size().plot()

plt.xticks(rotation=90)
plt.show()

但结果并不理想,因为结果显示在图表的两个不同区域(一个是 2019 年,另一个是 2020 年)。因此,我一直在尝试做的是将这些数据绘制成条形图,将条形图彼此靠近,以便轻松地逐月比较数据的频率。

我试过如下:

df1.groupby(['Date'])['Date'].size().plot(kind='bar')
df2.groupby(['Date'])['Date'].size().plot(kind='bar')

但这并不能区分来自 df1 的值和来自 df2 的值(而且,条形图的颜色相同)。

我想要的是一个在 x 轴上显示日期的图表(只有几天,因为月份是相同的,而且我知道我比较的是哪一年)。使用不同的颜色,我需要绘制 1 的数据和 2 的数据(图例会告诉 df1/2 是哪个)。

你能告诉我如何绘制数据以获得预期的输出吗?

谢谢

最佳答案

你可以先加入一个dataframe,但是首先用strftime把你的日期格式改成'%m-%d',你也可以重命名 size 列的输出为年份。

df1['Date'] = pd.to_datetime(df1['Date']).dt.strftime('%m-%d')
df2['Date'] = pd.to_datetime(df2['Date']).dt.strftime('%m-%d')
(df1.groupby('Date').size().rename('Size').to_frame().join(
df2.groupby('Date').size().rename('Size').to_frame(),
lsuffix='_2019', rsuffix='_2020').plot(kind='bar'))

enter image description here

关于python - 将两个数据框绘制到一个条形图中,区分它们的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64617240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com