Python中的迭代字典,按类别汇总总数 [英] Iterate Dictionary in Python and Sum Totals by Category

查看:171
本文介绍了Python中的迭代字典,按类别汇总总数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此问题与此处的帖子有关:

This question is in relation to this post here:

在Python中迭代嵌套词典

作为后续工作,我试图将所有股票的总和求和,然后按部门获取投资组合中股票的总百分比.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆