File stm_df.py changed (mode: 100644) (index 1ba1166..b1c9dca) |
... |
... |
def proxy(dice_box, nsim): |
52 |
52 |
#č pandas není vhodný pro strukturována data |
#č pandas není vhodný pro strukturována data |
53 |
53 |
#č (možná aj strukturování není úplně na místě), |
#č (možná aj strukturování není úplně na místě), |
54 |
54 |
#č ale exportovat do Excelčíku se mi taky chce |
#č ale exportovat do Excelčíku se mi taky chce |
55 |
|
def get_tri_data_frame(dice_box, sources=['box', 'user'], apply_proxy=None): |
|
56 |
|
#č nejdřív proxy. None znamená podle přitomosti |
|
57 |
|
if apply_proxy is None: |
|
58 |
|
if hasattr(dice_box, 'proxy'): |
|
59 |
|
apply_proxy = True |
|
60 |
|
else: |
|
61 |
|
apply_proxy = False |
|
|
55 |
|
def get_tri_data_frame(dice_box, sources=['box', 'user'], apply_proxy=False): |
|
56 |
|
|
|
57 |
|
#č přeneseme rozhodování do volajícího kódu |
|
58 |
|
# #č nejdřív proxy. None znamená podle přitomosti |
|
59 |
|
# if apply_proxy is None: |
|
60 |
|
# if hasattr(dice_box, 'proxy'): |
|
61 |
|
# apply_proxy = True |
|
62 |
|
# else: |
|
63 |
|
# apply_proxy = False |
62 |
64 |
|
|
63 |
65 |
#č teď zdroje (zjednodušeně). Zatím netřeba nic komplikovat |
#č teď zdroje (zjednodušeně). Zatím netřeba nic komplikovat |
64 |
66 |
#č po těch pomocných funkcích budu chtit df s nastaveným index=nsim |
#č po těch pomocných funkcích budu chtit df s nastaveným index=nsim |
65 |
67 |
#č a sloupcem nsim (ten je spíš pro nás, lidé). proxy nemají řešit |
#č a sloupcem nsim (ten je spíš pro nás, lidé). proxy nemají řešit |
66 |
|
if 'box' in sources: |
|
67 |
|
df_box = get_tri_box_df(dice_box) |
|
|
68 |
|
|
|
69 |
|
#č je tu fakt velkej bordel s těmi odhadama |
|
70 |
|
#č to jistě budu muset překopávat |
|
71 |
|
tri_box_estimator = 'TRI_overall_estimations' |
|
72 |
|
if ('box' in sources) and (tri_box_estimator in dice_box.guessbox.estimations): |
|
73 |
|
df_box = get_tri_box_df(dice_box, tri_box_estimator) |
68 |
74 |
else: #č pak nakrmíme pd.concat'u |
else: #č pak nakrmíme pd.concat'u |
69 |
75 |
df_box = None |
df_box = None |
70 |
76 |
|
|
|
... |
... |
def get_tri_data_frame(dice_box, sources=['box', 'user'], apply_proxy=None): |
79 |
85 |
|
|
80 |
86 |
#č pak deduplicate |
#č pak deduplicate |
81 |
87 |
#č (aby se převzaly odhady se stejným nsim z posledního zdroje) |
#č (aby se převzaly odhady se stejným nsim z posledního zdroje) |
82 |
|
#group by last |
|
|
88 |
|
df = df.groupby(level=0).last() |
83 |
89 |
|
|
84 |
90 |
#č dale vytřídíme odhady dle nsim |
#č dale vytřídíme odhady dle nsim |
85 |
91 |
df.sort_values('nsim', inplace=True) |
df.sort_values('nsim', inplace=True) |
86 |
92 |
|
|
87 |
93 |
#č pokud použiváme proxy, tak je vložit, vyhodit ďupy, nahradit index |
#č pokud použiváme proxy, tak je vložit, vyhodit ďupy, nahradit index |
88 |
|
|
|
|
94 |
|
if apply_proxy: |
|
95 |
|
#č teoreticky index a nsim musejí bejt stejné |
|
96 |
|
nsim = df.index |
|
97 |
|
nsim_proxy = proxy(dice_box, nsim) |
|
98 |
|
#č oboje nsim a nsim_proxy jsou pro lide, aby zahrivalo srdce |
|
99 |
|
#č předpokladá se, že volající kód bude použivat index |
|
100 |
|
df.insert(loc=0, column='nsim (proxy)', value=nsim_proxy) |
|
101 |
|
df.index = nsim_proxy |
|
102 |
|
|
89 |
103 |
#č když ne - tak jenom nahradíme index a vypadneme otsuď |
#č když ne - tak jenom nahradíme index a vypadneme otsuď |
|
104 |
|
#č Alexi, co? vždyť ten index už nemusíme řešit, ten musí bejt v pořádku! |
|
105 |
|
|
|
106 |
|
#č vemte ten svůj pitomej rám |
|
107 |
|
#č a na shledanou! |
|
108 |
|
return df |
|
109 |
|
|
|
110 |
|
|
90 |
111 |
|
|
91 |
112 |
|
|
92 |
|
|
|
93 |
|
df.insert(loc=0, column='nsim', value=tuple(tri_estimation.keys()), allow_duplicates=False) |
|
94 |
|
|
|
95 |
|
|
|
96 |
|
|
|
97 |
|
|
|
98 |
113 |
|
|
99 |
114 |
def get_tri_box_df(dice_box, tri_estimation_name='TRI_overall_estimations'): |
def get_tri_box_df(dice_box, tri_estimation_name='TRI_overall_estimations'): |
100 |
115 |
#č chyby nechť chytá volající kód! |
#č chyby nechť chytá volající kód! |
101 |
|
data = dice_box.guessbox.estimations[self.tri_estimation_name] |
|
|
116 |
|
data = dice_box.guessbox.estimations[tri_estimation_name] |
102 |
117 |
nsim, tri_data = data |
nsim, tri_data = data |
103 |
118 |
# it can be effectively done with pandas |
# it can be effectively done with pandas |
104 |
119 |
self.df = df = pd.DataFrame(tri_data, index=nsim) |
self.df = df = pd.DataFrame(tri_data, index=nsim) |
|
... |
... |
def get_tri_box_df(dice_box, tri_estimation_name='TRI_overall_estimations'): |
128 |
143 |
|
|
129 |
144 |
|
|
130 |
145 |
def get_tri_user_df(dice_box): |
def get_tri_user_df(dice_box): |
131 |
|
metrics = ('TRI_estimation', \ |
|
132 |
|
'vertex_estimation', 'weighted_vertex_estimation') |
|
|
146 |
|
metrics = ['TRI_estimation', \ |
|
147 |
|
'vertex_estimation', 'weighted_vertex_estimation'] |
133 |
148 |
|
|
134 |
149 |
metadict = dict() |
metadict = dict() |
135 |
150 |
for metric in metrics: |
for metric in metrics: |
|
... |
... |
def get_tri_user_df(dice_box): |
148 |
163 |
if metric in estimation: |
if metric in estimation: |
149 |
164 |
metadict[metric][nsim] = estimation[metric] |
metadict[metric][nsim] = estimation[metric] |
150 |
165 |
|
|
151 |
|
tri_estimation = metadict.pop('TRI_estimation') |
|
|
166 |
|
#č vytahneme 'TRI_estimation' z metrik aj ze slovníku |
|
167 |
|
tri_estimation = metadict.pop(metrics.pop(0)) # == |
152 |
168 |
#č zda se, že zde nic nehodí chybu, aj kdyby žádné odhady nebyly |
#č zda se, že zde nic nehodí chybu, aj kdyby žádné odhady nebyly |
153 |
169 |
nsim = tuple(tri_estimation.keys()) |
nsim = tuple(tri_estimation.keys()) |
154 |
170 |
# it can be effectively done with pandas |
# it can be effectively done with pandas |