我们说我有格式数据
option,subcase,prop1,prop2,prop3,...
以.csv
我现在想要为每个option
创建统计信息,并为每个subcase
创建其他统计信息。
如果我只想打印出来并且对置信区间不感兴趣,那么它可能看起来像这样:
import numpy as np
import pandas as pd
import sys
df = pd.read_csv(sys.argv[1]) # note to self: argv[0] is script file content
options = df.option.unique()
option_data = {}
subcases = df.subcase.unique()
data = {}
for o in options:
option_data[o] = df[df.option.apply(lambda row: o in row)]
print(o)
print(pd.DataFrame.describe(option_data[o]))
for s in subcases:
label = o + '_' + s
data[label] = option_data[o][option_data[o].subcase.apply(lambda row: s in row)]
print(label)
print(pd.DataFrame.describe(data[label]))
print()
然而,这非常难以阅读。
如何最好地组合数据帧s.t.我最终得到像
这样的帧prop1 mean std min 25% ...
A
A_a
A_b
A_c
B
B_a
B_c
...
prop2 mean std min 25% ...
A
A_a
A_b
A_c
B
B_a
B_c
...
我的意思是,我可以手动循环遍历所有帧...但必须有更高效的东西。
修改的
E.g。
option,subcase,cost,time
A,sub1,4,3
A,sub1,2,0
A,sub2,3,8
A,sub2,1,2
B,sub1,13,0
B,sub1,11,0
B,sub2,5,2
B,sub2,3,4
应该产生两个框架:
成本
,mean,std,min,25%,50%,75%,max
A,2.5,1.290994,1,1.75,2.5,3.25,4
A_sub1,3,1.414214,2,2.5,3,3.5,4
A_sub2,2,1.414214,1,1.5,2,2.5,3
B,8,4.760952,3,4.5,8,11.5,13
B_sub1,12,1.414214,11,11.5,12,12.5,13
B_sub2,4,1.414214,3,3.5,4,4.5,5
和
时间
,mean,std,min,25%,50%,75%,max
A,3.25,3.40343,0,1.5,2.5,4.25,8
A_sub1,1.5,2.12132,0,0.75,1.5,2.25,3
A_sub2,5,4.242641,2,3.5,5,6.5,8
B,1.5,1.914854,0,0,1,2.5,4
B_sub1,0,0,0,0,0,0,0
B_sub2,3,1.414214,2,2.5,3,3.5,4
A
和B
行的条目是根据所有相应的子句计算的。条目。