繁体   English   中英

我怎样才能 plot 一个简单的 plot 与 seaborn 从 Z23EEEB4347BDD7526BFC6B7EE34Z 字典?

[英]How can I plot a simple plot with seaborn from a python dictionary?

我有一本这样的字典:

my_dict = {'Southampton': '33.7%', 'Cherbourg': '55.36%', 'Queenstown': '38.96%'}

我怎样才能有一个简单的 plot 3 条显示字典中每个键的值?

我试过了:

sns.barplot(x=my_dict.keys(), y = int(my_dict.values()))

但我得到:

TypeError: int() 参数必须是一个字符串,一个类似字节的 object 或一个数字,而不是 'dict_values'

您的代码中有几个问题:

  1. 您正在尝试将每个值(例如“xx.xx%”)转换为数字。 my_dict.values()将所有值作为dict_values object 返回。 int(my_dict.values()))表示将所有值的集合转换为单个 integer,而不是将每个值转换为 integer。 前者自然没有任何意义。
  2. Python 无法将“12.34%”之类的内容解释为 integer 或浮点数。 您需要删除百分号,即"float(12.34%"[:-1])
  3. 字典没有排序。 因此, my_dict.keys()my_dict.values()不保证返回键值对中的键和值的顺序相同,例如,你得到的键可能是['Southampton', 'Cherbourg', 'Queenstown']你得到的值可能是"55.36%", "33.7", "38.96%" 这在 Python >= 3.7 和 CPython 3.6 中不再是问题; 请参阅下面的@AmphotericLewisAcid 的评论。

解决了所有这些问题:

keys = list(my_dict.keys())
# get values in the same order as keys, and parse percentage values
vals = [float(my_dict[k][:-1]) for k in keys]
sns.barplot(x=keys, y=vals)

你得到: 在此处输入图像描述

我做了以下事情:

我首先从字典中删除了%符号。

my_df = pd.DataFrame(my_dict.items())
ax = sns.barplot(x=0, y=1, data=my_df)
ax.set(xlabel = 'Cities', ylabel='%', title='Title')

在此处输入图像描述

在此处输入图像描述

您需要将值转换为数字,现在它们是字符串:

import seaborn as sns
my_dict = {'Southampton': '33.7%', 'Cherbourg': '55.36%', 'Queenstown': '38.96%'}
perc =  [float(i[:-1]) for i in my_dict.values()]
sns.barplot(x=list(my_dict.keys()),y=perc)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM