我有一个数据集,我需要将其绘制在分组条形图中,但该数据集有很多数据间隙,以至于为高度为 0 的条形留下了痕迹/空间。
我尝试将数据集从宽格式转换为长格式,然后进行多级索引并清理所有空值。 之后,我还尝试清除年份部分,因为我认为这可能有助于分组,我可以向您展示我所做的事情。
所以我的数据集是这样的“我有10个国家,每个国家都有2000年至2021年的数据,现在的问题是有些国家有2000年的数据,而其他国家没有2018年、2019年的数据,而其他国家可能只有2018年、2019年的数据做了多级索引并对索引进行排序,因此索引如下
'Country_Name' 'Years'
和名为 'Value'
的列,但我似乎无法在分组条形图中有效地绘制它。
数据框:
国家/地区名称 | 年 | 价值 | |
---|---|---|---|
0 | 阿富汗 | 2015 | 42.2 |
1 | 孟加拉国 | 2000 | 60.6 |
2 | 孟加拉国 | 2004年 | 64.8 |
3 | 孟加拉国 | 2007年 | 65.4 |
4 | 孟加拉国 | 2011 | 69.7 |
5 | 孟加拉国 | 2014 | 72.6 |
6 | 孟加拉国 | 2018 | 70.3 |
7 | 印度 | 2006年 | 69.1 |
8 | 印度 | 2016 | 71.9 |
9 | 印度 | 2021 | 74.1 |
10 | 马尔代夫 | 2009 | 42.6 |
11 | 马尔代夫 | 2017 | 29.8 |
12 | 缅甸 | 2016 | 74.9 |
13 | 尼泊尔 | 2001 | 52.8 |
14 | 尼泊尔 | 2006年 | 60.9 |
15 | 尼泊尔 | 2011 | 55.9 |
16 | 尼泊尔 | 2016 | 56 |
17 | 巴基斯坦 | 2007年 | 39.7 |
18 | 巴基斯坦 | 2013 | 47 |
19 | 巴基斯坦 | 2018 | 48.6 |
要获取堆积条形图,您可以执行以下操作:
import pandas as pd
import matplotlib.pyplot as plt
# Read the File
ds = pd.read_excel(file)
#Unstack the dataset such that each country name has a separate column
ds2 = ds.groupby(['years', 'Country_Name'])['value'].sum().unstack('Country_Name').fillna(0)
#Plot a stacked barchart
ds2.plot(kind='bar', stacked=True)