我想要将两个列表组合成一个带标签的堆积条形图。
Males = [('Surfing', 832), ('Swimming', 653), ('Fishing', 314),
('Spearfishing', 299), ('Bathing', 132), ('Diving', 102),
('Wading', 89), ('Standing', 70), ('Scuba diving', 65)]
Females = [('Swimming', 141), ('Wading', 53), ('Surfing', 45),
('Snorkeling', 33), ('Standing', 27), ('Bathing', 16),
('Scuba diving', 9), ('Boogie boarding', 8), ('Walking', 8)]
我想要它,以便图表显示每个活动中的总人数,同时显示不同颜色的性别细分。然而,由于名单的顺序不匹配,所有活动也没有,即只有女性才行走。没有男性的等同物。然后这个栏应该单独出现。
我写的代码不能这样做。请给我一般指导。我可以使用for循环遍历每个元素和if语句,看看它是否也存在于其他性别数据中?如果是这样,将它们加在一起。
我真的不明白如何利用未知数量的酒吧来做到这一点。
答案 0 :(得分:0)
正如我在评论中提到的,使用pandas
有一个相当简单的解决方案。基本上,您会将每组数据放入数据框中,然后对活动进行外部合并。我没有包含代码,因为您特别要求提供准则。
结果:
如果您出于某种原因无法使用pandas,您可以制作ordered dictionary,并在列表中填充您的女性和男性数据。因此,有序字典的键将是活动,值将是包含活动到计数的映射的常规字典。那么绘制每一个都很简单。我再次没有包含代码,因为您特别要求提供准则。
结果如下: