簡體   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