0

私は財務モデルを構築しており、関数の出力からグラフを作成する必要があるモデルの最後のビットに固執しています。以下は私の最終的な関数であり、コードが非常に大きいため、他の関数は配置しませんでした。このモデルは、さまざまな顧客タイプについて、1 年を通して (顧客、注文、ネットセールスなど) が 1 日ごとにどのように変化するかを示しています。したがって、たとえば顧客タイプ 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 に答える