Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从嵌套dict获取数据以绘制条形图_Python_Pandas_Dictionary_Matplotlib - Fatal编程技术网

Python:从嵌套dict获取数据以绘制条形图

Python:从嵌套dict获取数据以绘制条形图,python,pandas,dictionary,matplotlib,Python,Pandas,Dictionary,Matplotlib,我试图从这样一个dict中获取数据: d= { '1992': { 'j': 2048, 'f': 1290, 'm': 3221, 'a': 6994, 'ma': 2091, 'ju': 688, 'jl': 981, 'ag': 2389, 's': 3010, 'o': 13006, 'n': 10477, 'd': 6022 }, '1998': { 'j': 1751, 'f': 1056, 'm': 2664, 'a': 3091, 'ma': 1088, 'ju': 121

我试图从这样一个dict中获取数据:

d= { 
'1992': 
{ 'j': 2048, 'f': 1290, 'm': 3221, 'a': 6994, 'ma': 2091, 'ju': 688, 'jl': 981, 'ag': 2389, 's': 3010, 'o': 13006, 'n': 10477, 'd': 6022 },
'1998': 
{ 'j': 1751, 'f': 1056, 'm': 2664, 'a': 3091, 'ma': 1088, 'ju': 1215, 'jl': 699, 'ag': 2108, 's': 1799, 'o': 4522, 'n': 7200, 'd': 5614 }}
继续这种模式: ('year(x)':{'month1':值(1),…月(n):值(n))}

然后在一个条形图中显示它们,在x轴上显示月份列表,在y轴上显示年份。我尝试使用来自的
Dataframe
解决方案,但无法应用于图形。Matplotlib仅允许插入一个“年”:

plt.bar(range(len(d)), d.values(), fill=False)
所以我想熊猫的“数据帧”更好。是否有办法在同一条中获取这些数据?

您似乎需要:

如果需要,还可以设置
月份的顺序

names = ['j', 'f', 'm', 'a', 'ma','ju', 'jl', 'ag', 's',  'o', 'n', 'd']
df = pd.DataFrame(d).reindex(names)


它是如何工作的?或者需要别的什么?我觉得这个问题没有多大意义。柱状图在y轴上有一些发生/频率/计数,但如果y轴上有“年”,X轴上有“月”,那么要进行柱状图的数据是什么?jezrael的回答将清除dubt@ImportanceOfBeingErnets。直方图中存储的数据嵌入到条形图中,因此我不需要数值来理解图形。dict的格式可以给你一个提示,你在这里得到的答案不是绘制数据的直方图,而是绘制数值的条形图,其中数值位于y轴上,而不是年份。此外,它没有“未填充堆栈步骤”。很可能你喜欢这个答案,它解决了你的问题,但它并没有回答这个问题——这与其说是回答者的错,不如说是问题本身的错,然后问题就完全解决了。是的,答案并不完全正确,但它包含了我想要的方面。此外,我所举的例子并不完全反映我自己的问题,而是对它的一种泛泛的描述。如果我犯了一些错误,请告诉我,我会尽快改正
names = ['j', 'f', 'm', 'a', 'ma','ju', 'jl', 'ag', 's',  'o', 'n', 'd']
df = pd.DataFrame(d).reindex(names)
print (df)
     1992  1998
j    2048  1751
f    1290  1056
m    3221  2664
a    6994  3091
ma   2091  1088
ju    688  1215
jl    981   699
ag   2389  2108
s    3010  1799
o   13006  4522
n   10477  7200
d    6022  5614