为每行值生成描述性统计数据并动态转置

我有一个如下所示的数据框


df = pd.DataFrame({

'subject_id':[1,1,1,1,2,2,2,2,3,3,4,4,4,4,4],

'readings' : ['READ_1','READ_2','READ_1','READ_3','READ_1','READ_5','READ_6','READ_8','READ_10','READ_12','READ_11','READ_14','READ_09','READ_08','READ_07'],

'val' :[5,6,7,11,5,7,16,12,13,56,32,13,45,43,46],

})

我想做的是获取现有列的描述性统计/汇总形式,而不是拥有原始列。我希望看到 ( min, max, 25%, 75%, std, var) 作为每个主题的新列


我尝试了以下但输出不准确


df.groupby(['subject_id','readings']).describe().reset_index()   #this gives some output but it isn't exact

df.groupby(['subject_id','readings']).pivot_table(values='val', index='subject_id', columns='readings').describe()  # this throws error

我希望我的输出如下所示。基本上它将是一个宽而稀疏的矩阵。由于屏幕截图很宽,我无法进一步放大。如果单击图像,您将更好地显示预期输出


一只名叫tom的猫
浏览 96回答 1
1回答

jeck猫

用于Series.unstackreshape after describe, thenDataFrame.swaplevel和 for order like in original add DataFrame.reindex:df = (df.groupby(['subject_id','readings'])['val']        .describe()        .unstack()        .swaplevel(0,1,axis=1)        .reindex(df['readings'].unique(), axis=1, level=0))df.columns = df.columns.map('_'.join)df = df.reset_index()print (df)   subject_id  READ_1_count  READ_1_mean  READ_1_std  READ_1_min  READ_1_25%  \0           1           2.0          6.0    1.414214         5.0         5.5   1           2           1.0          5.0         NaN         5.0         5.0   2           3           NaN          NaN         NaN         NaN         NaN   3           4           NaN          NaN         NaN         NaN         NaN      READ_1_50%  READ_1_75%  READ_1_max  READ_2_count  ...  READ_08_75%  \0         6.0         6.5         7.0           1.0  ...          NaN   1         5.0         5.0         5.0           NaN  ...          NaN   2         NaN         NaN         NaN           NaN  ...          NaN   3         NaN         NaN         NaN           NaN  ...         43.0      READ_08_max  READ_07_count  READ_07_mean  READ_07_std  READ_07_min  \0          NaN            NaN           NaN          NaN          NaN   1          NaN            NaN           NaN          NaN          NaN   2          NaN            NaN           NaN          NaN          NaN   3         43.0            1.0          46.0          NaN         46.0      READ_07_25%  READ_07_50%  READ_07_75%  READ_07_max  0          NaN          NaN          NaN          NaN  1          NaN          NaN          NaN          NaN  2          NaN          NaN          NaN          NaN  3         46.0         46.0         46.0         46.0  [4 rows x 105 columns]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python