首页 > 解决方案 > Pandas 数据框线图和堆积条形图

问题描述

情况: 我有一个非常小的数据集,其中包含年份列和指示二进制列的事件成功或失败。

在此处输入图像描述

我从计算成功和失败事件的二进制列创建了两个系列。

成功事件:

success_count = hungary_data[hungary_data['success']==1]["iyear"].value_counts().sort_index()
success_count

输出:
在此处输入图像描述

失败事件:

fail_count = hungary_data[hungary_data['success']==0]["iyear"].value_counts().sort_index()
fail_count


输出:
在此处输入图像描述

问题: 我的问题是我不能在折线图上显示这两个系列,也不能在堆积条形图上显示。

这是我的折线图代码和输出:

plt.plot(success_count, label = "Sikeres támadások")
plt.plot(fail_count, label = "Sikertelen támadások")
plt.ylim(ymin=0)
plt.legend(loc=2)
plt.show()


输出:
在此处输入图像描述


如您所见,失败的计数根本不显示(但是有一个图例),年份以一半的增量显示(这也是错误的)。

我的堆叠条尝试也失败了:

plt.bar([1989,1990,1991], success_count, label = "Sikeres támadások")
plt.bar([1989,1990,1991], fail_count, label = "Sikertelen támadások")
plt.legend(loc=2)
plt.show()


输出: 问题:
在此处输入图像描述

  1. 我的代码应该如何显示成功和失败事件的折线图(当一年没有失败尝试时,它应该为零)?
  2. 为什么以半增量显示年份(年份不应该有小数)以及避免它的解决方案是什么?
  3. 在堆积条形图的情况下,我的代码应该如何?

提前谢谢你的帮助!

标签: pythonpandasdataframematplotlibplot

解决方案


试试下面的。

首先,重命名您的success_countfail_count系列:

success_count.rename('Sikeres támadások', inplace=True)
fail_count.rename('Sikertelen támadások', inplace=True)

然后你可以绘制两者concat中的一个。

pd.concat([success_count, fail_count],axis=1).plot(kind='bar', stacked='True')

推荐阅读