0

我正在建立一个财务模型并坚持模型的最后一点,我必须从函数的输出中生成图表。下面是我的最终函数,我没有放其他函数,因为它们的代码非常大。该模型显示了(客户、订单、净销售额等)如何在一年中针对不同客户类型每天演变。因此,如果为客户类型 12 运行我的函数,它将从第 1 天运行到第 365 天,显示客户或其他东西是如何增长的。

def show_all_states_list(cust_type):
    s  = get_state0(cust_type)    
    all_states =[]
    for day in range(365):
        s = state_evolution(s, cust_type)
        all_states.append(s)
    return all_states

当我在 python 中运行这个函数时,第 1 天的输出是(不包括所有输出):

s = show_all_states_list(12)
>>> s[0]
{'day': 1,'custtypeA_nondp': 50.99574423351457,'delfeeA_dp_cost': 0.45111124745572373, 'today_ordersA_nondp':0,'profit_current_vs_with_dp ': -5.4141382286616135, 'gross_profit_nondp_dp': 35441.52120017628, 'fixed_costs_nondp_dp ': -56407.52069653516, 'combine_nondp_dp_profit': -5642.694138228653, 'today_netsalesA_nondp': 0, 'gross_turnover_dp_nondp_cust': 142363.5991835414, 'del_nondp_dp_turnover': 28036.11144103729, 'var_costs_nondp_dp': -12712.806082907056, 'custtypeA_dp': 0.004255766485431356, 'ordersA_dp': 0.4080111809905219, 'netsalesA_nondp': 114327.45898877166, 'ordersA_nondp': 4444.629080744554, 'today_delfeeA_nondp': 0, 'delfeeA_nondp': 28035.660329789833, 'totords_dp_nondp': 4445.037091925545,  'today_ordersA_dp': 0, 'gross_turnover_dp_cust': 0.4798649799246596, 'decreased_bsktsize_dp': 0.07047290321586513, 'custtypeA': 51.0, 'net_turnover_dp': 0.028753732468935884, 'current_vs_dp_gross_sales': -11.400816458597546}

我想要的是从所有 365 天的输出中取出每个键值,例如“custtypeA_nondp”(所以我将为此设置 365 个值)并将其放入一个新列表中,这样我就可以获得针对“custtypeA_nondp”的天数图' 这将以图形方式显示我的输出。

我知道如何绘制散点图,但不知道如何从函数输出中提取信息。

我真的很感激这方面的帮助。

4

2 回答 2

1
all_states = show_all_states_list(12)
typeAs = [d['custtypeA_nondp'] for d in all_states]

或者同样使用operator.itemgetter()

from operator import itemgetter

typeAs = map(itemgetter('custtypeA_nondp'), all_states)
于 2013-07-25T11:09:43.690 回答
0

字典有一种方便的values()方法可以满足您的需要:

>>> d = {'day': 1,'custtypeA_nondp': 50.99574423351457,'delfeeA_dp_cost': 0.45111124745572373}
>>> d.values()
[0.45111124745572373, 1, 50.995744233514571]

补充的是keys()方法:

>>> d.keys()
['delfeeA_dp_cost', 'day', 'custtypeA_nondp']

您的方法返回一个字典列表,因此如果只想custtypeA_nondp在返回的列表中包含所有字典的列表:

vals = list(x['custtypeA_nondp'] for x in s)
于 2013-07-25T11:02:52.987 回答