Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 调整字典中的数据,然后打印它_Python_Pandas - Fatal编程技术网

Python 调整字典中的数据,然后打印它

Python 调整字典中的数据,然后打印它,python,pandas,Python,Pandas,我有 我的问题是,如何从创建的字典中删除nan,以及如何将条形图的顺序从1-5更改为1-5?前3个nan是数据中的空白点(因为它来自民意测验),最后一个是列的标题。我尝试手动将plt.bar的范围部分更改为1-5,但似乎不起作用。您可以在熊猫系列上使用.value\u counts来简单地获取每个值出现的次数。这使得制作条形图变得简单 默认情况下,value\u counts将忽略NaN值,这样就可以解决这个问题,通过使用.sort\u index()我们可以保证按顺序绘制值。似乎我们需要使用

我有


我的问题是,如何从创建的字典中删除nan,以及如何将条形图的顺序从1-5更改为1-5?前3个nan是数据中的空白点(因为它来自民意测验),最后一个是列的标题。我尝试手动将plt.bar的范围部分更改为1-5,但似乎不起作用。

您可以在
熊猫系列上使用
.value\u counts
来简单地获取每个值出现的次数。这使得制作条形图变得简单

默认情况下,
value\u counts
将忽略
NaN
值,这样就可以解决这个问题,通过使用
.sort\u index()
我们可以保证按顺序绘制值。似乎我们需要使用
.to_frame()
,以便它只为列绘制一种颜色(它为
系列的每行选择一种颜色)

样本数据 代码

我尝试过:
clean\u dict=filter(lambda k:不是isnan(k),x)
但我认为我没有正确地实现它。为什么不简单地使用
df.f.value\u counts().sort\u index().to\u frame().plot(kind='bar')
?谢谢,这简化了很多。我应该在哪里阅读以了解.value_counts()和.sort_index()等是什么?我是python绘图新手,我不确定我可以使用什么工具、规则和类似的东西。它们没有太多的例子,所以我建议您只看看
df.f.value\u counts()
的输出是什么,然后看看当您执行
df.f.value\u counts().to\u frame()
df.f.value\u counts().to\u frame().sort\u index()时会发生什么,虽然他们的教程更多的是以示例为导向的。
x = collections.Counter(df.f.values.tolist())
if 'nan' in x:
    del x['nan']
plt.bar(range(len(x)), x.values(), align='center')
plt.xticks(range(len(x)), list(x.keys()))

plt.show()
import pandas as pd
import numpy as np
# Get your plot settings
import seaborn as sns
sns.set()

np.random.seed(123)
df = pd.DataFrame({'f': np.random.randint(1,6,100)})
df = df.append(pd.DataFrame({'f': np.repeat(np.NaN,1000)}))
df.f.value_counts().to_frame().sort_index().plot(kind='bar', legend=False)