【问题标题】:How can I plot a simple plot with seaborn from a python dictionary?如何从 python 字典中用 seaborn 绘制一个简单的图?
【发布时间】:2020-09-03 05:40:58
【问题描述】:

我有一本这样的字典:

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

我怎样才能用 3 个条形图显示字典中每个键的值?

我试过了:

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

但我明白了:

TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是 'dict_values'

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    您的代码中有几个问题:

    1. 您正在尝试将每个值(例如“xx.xx%”)转换为数字。 my_dict.values() 将所有值作为 dict_values 对象返回。 int(my_dict.values())) 表示将所有值的集合转换为单个整数,而不是将每个值转换为整数。前者自然没有任何意义。
    2. Python 无法将“12.34%”之类的内容解释为整数或浮点数。您需要删除百分号,即"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)
    

    你会得到:

    【讨论】:

    • 关于第 3 点,字典现在从 Python 3.7 开始排序 - docs.python.org/3/whatsnew/3.7.htmlmy_dict.keys()my_dict.values() 保证返回相同的订单。这也是在 C-python 3.6 中非官方实现的(不确定 Iron Python 或 PyPy)
    • @AmphotericLewisAcid 几个月前我写了这个答案后才知道 - 谢谢你指出来!
    【解决方案2】:

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

    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)
    

    【讨论】:

    • 谢谢,如果这也是一个可行的解决方案,你能检查我的答案吗?
    【解决方案3】:

    我做了以下事情:

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

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

    【讨论】:

      猜你喜欢
      • 2020-11-02
      • 1970-01-01
      • 2021-02-26
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多