我有一个词典列表:
list_of_dicts = [{'user':user1, 'yob':1984, 'saves':24, 'hidden':28},
{'user':user2, 'yob':1989, 'saves':7, 'hidden':51}, {...}, ...]
我想制作一个堆积的直方图,表示保存并隐藏在y轴和y轴上的x轴上。因此,直方图应按 不确定语法是否正确或如何正确访问列表中的元素,任何人都可以帮忙吗?谢谢
*编辑:我知道你不能使用字符串索引列表(list_of_dicts [' yob'])但这就是我被困住并提出问题的地方。plt.hist([list_of_dicts['yob']['saves'], list_of_dicts['yob']['hidden']],
bins=45, stacked=True)
plt.show()
答案 0 :(得分:3)
你可以先将所有内容放在一个字典中,
master_dict = {}
# initialize the arrays first
for key in list_of_dicts[0]:
master_dict[key] = [d[key] for d in list_of_dicts]
然后,使用pandas
按'yob'
:
import pandas as pd
df = pd.DataFrame(master_dict)
bins = numpy.linspace(df.yob.min(), df.yob.max(), 45)
cut = pd.cut(df.yob, bins)
group = df.groupby(cut)
以下几行为您提供yob
分类的其他每个字典项的总和:
nsaves = group.saves.sum()
nhidden = group.hidden.sum()
然后您可以使用plt.step
或plt.bar
使用上面定义的区域进行绘图:
plt.step(bins[:-1], nsaves, color='r', where='pre')
plt.step(bins[:-1], nhidden, color='b', where='pre')