转置和组合熊猫数据框架

时间:2017-11-27 20:11:07

标签: python python-3.x pandas dataframe statistics

我们说我有格式数据

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 

AB行的条目是根据所有相应的子句计算的。条目。

0 个答案:

没有答案
相关问题