首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >宽数据汇总统计

宽数据汇总统计
EN

Stack Overflow用户
提问于 2020-09-12 10:45:13
回答 2查看 103关注 0票数 3

是否有一种有效的方法来计算水果行为真的每个水果的汇总统计量?

代码语言:javascript
复制
df   comment  type      score    apple   banana   pear   
0     dfsd    new        0.4     True    False    True     
1     sdfs    low        0.3     False   True     False 
2     sdddfs   low       0.2     False   True     False    
3     sdsfs    low       0.8     True    True     False    
4     ddds    low        0.1     True    True     True

... 

我试过:

代码语言:javascript
复制
fruits = ['apple','banana','pear']

for fruit in fruits:
    df1 = df.loc[df.f'{fruit}', :]
    df1.describe()

预期产出:

代码语言:javascript
复制
fruit
        count     mean_score   std_score  
apple               
banana              
pear                
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-12 11:05:40

选择所需的fruits列,然后为每个水果列获取相应的score,并屏蔽False值,最后使用describe获取描述性统计信息:

代码语言:javascript
复制
s = ['count', 'mean', 'std']
stats = df[fruits].apply(lambda m: df['score'].mask(~m)).describe().T[s]

代码语言:javascript
复制
print(stats)

        count      mean       std
apple     3.0  0.433333  0.351188
banana    4.0  0.350000  0.310913
pear      2.0  0.250000  0.212132
票数 3
EN

Stack Overflow用户

发布于 2020-09-12 10:56:46

要做到这一点,一种不依赖df.describe的一般方法是:

代码语言:javascript
复制
df2 = df.groupby(['apple','banana','pear']).agg({'type':['count','mean','std']})

会给你每种水果的数量、平均值和性病。

作为对评论的回应,您可以通过以下方式重做索引,以获得每一行的水果:

代码语言:javascript
复制
df2.index = [df2.index.names[i] for j in range(len(df2.index.names)) for i,x in enumerate(df2.index[j]) if x ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63859501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档