gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:07:09 24 4
gpt4 key购买 nike

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

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

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

enter image description here

最佳答案

使用Series.unstackdescribe 之后 reshape ,然后 DataFrame.swaplevel对于原始订单,请添加 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]

关于python - 为每行值生成描述性统计数据并动态转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58390271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com