我正在嘗試構建一個指數中某些部門權重的餅圖。
給定這個示例資料框。
Data = { 'Company': ['Google', 'Nike', 'Goldman', 'Tesla'], 'Ticker': ['GOOG', 'NKE', 'GGG', 'TSA'], 'Sector': ['Tech', 'Consumer', 'Financial', 'Auto'], 'Weighting': ['10', '20', '40', '30']
df = pd.DataFrame(Data)
我試圖按部門創建一個權重字典。
Weight_Sector = df.groupby('Sector')['Weighting'].apply(list).to_dict()
我查了字典,一切都很好。但是,當我繼續使用以下代碼繪制餅圖時,出現錯誤“ValueError: setting an array element with a sequence. 請求的陣列在 1 維后具有不均勻的形狀。檢測到的形狀為 (9,) 不均勻部分。
plt.pie(Weight_Sector.values(), startangle=90, autopct='%.1f%%')
在我的實際資料框和字典中,有更多的值,并且大多數字典部門都有超過 1 個專案作為權重,對應于不同的公司。
任何幫助表示贊賞!
uj5u.com熱心網友回復:
有兩個問題:
- 值必須是數字,現在它們是字串
- 不應將單個值放入串列中,它們只能是一個數字,例如取屬于同一類別的所有值的總和
由于原始資料每個類別只有一個條目,因此以下示例添加了一個額外的“技術”。
from matplotlib import pyplot as plt
import pandas as pd
Data = {'Company': ['Microsoft', 'Google', 'Nike', 'Goldman', 'Tesla'], 'Ticker': ['MSFT', 'GOOG', 'NKE', 'GGG', 'TSA'],
'Sector': ['Tech', 'Tech', 'Consumer', 'Financial', 'Auto'], 'Weighting': ['1', '10', '20', '40', '30']}
df = pd.DataFrame(Data)
df['Weighting'] = df['Weighting'].astype(float) # make numeric
Weight_Sector = df.groupby('Sector')['Weighting'].sum().to_dict()
plt.pie(Weight_Sector.values(), labels=Weight_Sector.keys(),
startangle=90, autopct='%.1f%%', colors=plt.cm.Set2.colors)
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430604.html
標籤:python-3.x 字典 matplotlib 饼形图
上一篇:盡管X和Y形狀相同,但繪圖值錯誤
