Python 我喜欢表格
考虑以下数据帧:Python 我喜欢表格,python,pandas,Python,Pandas,考虑以下数据帧: import pandas as pd import numpy as np df = pd.DataFrame({ 'split_1':[1,2,2,2,1,2,2,2,1,1], 'split_2':[3,3,3,4,4,4,4,3,3,3], 'var_1':[1,2,4,3,2,4,2,2,1,2], 'var_2':[4,2,2,2,1,5,4,3,4,3], }) 我想要实现的是一个类似(或完全相同)的表格,如下所示: 通过使用
import pandas as pd
import numpy as np
df = pd.DataFrame({
'split_1':[1,2,2,2,1,2,2,2,1,1],
'split_2':[3,3,3,4,4,4,4,3,3,3],
'var_1':[1,2,4,3,2,4,2,2,1,2],
'var_2':[4,2,2,2,1,5,4,3,4,3],
})
我想要实现的是一个类似(或完全相同)的表格,如下所示:
通过使用groupby和agg方法,我取得了很大的进步
grp = df.groupby(['split_1','split_2'])
tab1 = grp['var_1'].agg([np.mean, np.median, np.max, np.min, np.size])
tab2 = grp['var_2'].agg([np.mean, np.median, np.max, np.min, np.size])
tab = tab1.append(tab2)
这似乎有点骇人听闻。。。我似乎找不到一种方法(或在文档中查找的正确位置)以我想要的方式正确地分组和聚合数据
有合适的方法吗?这可能是一种稍微清洁的方法:
In [15]: grp = df.groupby(['split_1','split_2'])
In [16]: grp.agg([np.mean, np.median, np.max, np.min, np.size]).stack(0)
Out[16]:
mean median amax amin size
split_1 split_2
1 3 var_1 1.333333 1 2 1 3
var_2 3.666667 4 4 3 3
4 var_1 2.000000 2 2 2 1
var_2 1.000000 1 1 1 1
2 3 var_1 2.666667 2 4 2 3
var_2 2.333333 2 3 2 3
4 var_1 3.000000 3 4 2 3
var_2 3.666667 4 5 2 3
基本上,不需要将函数集分别应用于两个组并将结果附加在一起。这基本上就是group by正在做的事情:拆分、应用(单独)和合并。这可能是一个稍微干净的方法:
In [15]: grp = df.groupby(['split_1','split_2'])
In [16]: grp.agg([np.mean, np.median, np.max, np.min, np.size]).stack(0)
Out[16]:
mean median amax amin size
split_1 split_2
1 3 var_1 1.333333 1 2 1 3
var_2 3.666667 4 4 3 3
4 var_1 2.000000 2 2 2 1
var_2 1.000000 1 1 1 1
2 3 var_1 2.666667 2 4 2 3
var_2 2.333333 2 3 2 3
4 var_1 3.000000 3 4 2 3
var_2 3.666667 4 5 2 3
基本上,不需要将函数集分别应用于两个组并将结果附加在一起。这就是group by正在做的事情:拆分、应用(单独)和合并。谢谢!另外:通过这种方法,我可以在数据帧上调用
reset\u index()
,获得准确的格式。谢谢!另外:通过这种方法,我能够获得准确的格式,并在数据帧上调用reset\u index()
。