Python中的迭代字典,按类别汇总总数 [英] Iterate Dictionary in Python and Sum Totals by Category
问题描述
此问题与此处的帖子有关:
This question is in relation to this post here:
作为后续工作,我试图将所有股票的总和求和,然后按部门获取投资组合中股票的总百分比.
As a follow up, i am trying to sum the totals for all stocks and get the total percentage of a stock in a portfolio by sector.
我希望输出看起来像这样:
I want the output to look like this:
技术:24%,财务:14%,等等
Technology: 24%, Financials: 14%, etc etc
我的字典如下:
stockData = {
'AAPL': {
'beta': 1.01833975315094,
'company_name': 'Apple',
'dividend': 1.9341673320912078,
'total':300
'sector': 'Technology},
'GOOG': {
'beta': 1.01833975315094,
'company_name': 'Apple',
'dividend': 1.9341673320912078,
'total':300
'sector':Technology}
}
我已经计算出每种股票在全部投资组合中所占的百分比:
I have calculate a total percentage of the overall portfolio for each stock like this:
for stock_data in stockData.values():
stock_data['percentage'] = stock_data['total']/stock_sum
并且我正在尝试按部门获取总计百分比,但是却无法正常工作....我尝试了此操作.
and i'm trying to get % totals by sector but just not working.... I tried this.
for stock_data in stockData.values():
sector_totals = []
for stock_data['sector'] in stock_data:
sector_totals = (stock_data['sector'], stock_data['percentage'])
有什么建议吗?
推荐答案
是否有不使用熊猫的理由? http://pandas.pydata.org/ 它将使您的生活更加轻松.
Any reason not to use pandas? http://pandas.pydata.org/ It will make your life much easier.
我添加了额外的(假)库存,以使该示例更有意义.
I have added an extra (fake) stock to make the example more relevant.
stockData = {
'AAPL': {
'beta': 1.01833975315094,
'company_name': 'Apple',
'dividend': 1.9341673320912078,
'total':300,
'sector': 'Technology'},
'GOOG': {
'beta': 1.01833975315094,
'company_name': 'Apple',
'dividend': 1.9341673320912078,
'total':300,
'sector':'Technology'},
'XXXX': {
'beta': 1.01833975315094,
'company_name': 'Apple',
'dividend': 1.9341673320912078,
'total':300,
'sector':'Food'}
}
import pandas as pd
# Create pandas dataframe wi
stockData_df = pd.DataFrame(stockData).T
stockData_df['percentage'] = stockData_df['total']/stockData_df['total'].sum()
stockData_df
Out[82]:
beta company_name dividend sector total percentage
AAPL 1.01834 Apple 1.93417 Technology 300 0.333333
GOOG 1.01834 Apple 1.93417 Technology 300 0.333333
XXXX 1.01834 Apple 1.93417 Food 300 0.333333
sector_totals = stockData_df.groupby('sector').sum()['total']/stockData_df['total'].sum()
sector_totals
Out[86]:
sector
Food 0.333333
Technology 0.666667
Name: total, dtype: float64
这篇关于Python中的迭代字典,按类别汇总总数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!