首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫数多栏

熊猫数多栏
EN

Stack Overflow用户
提问于 2015-12-02 14:57:13
回答 2查看 4.9K关注 0票数 4

我有一个像这样的数据

代码语言:javascript
复制
Measure1 Measure2 Measure3 ...
0        1         3
1        3         2
3        0        

我想数数列上的值的出现情况,以便生成:

代码语言:javascript
复制
Measure Count Percentage
0       2     0.25
1       2     0.25
2       1     0.125
3       3     0.373

使用

代码语言:javascript
复制
outcome_measure_count = cdss_data.groupby(key_columns=['Measure1'],operations={'count': agg.COUNT()}).sort('count', ascending=True)

我只得到第一列(实际上使用graphlab包,但我更喜欢熊猫)

有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-02 15:05:05

您可以通过使用ravelvalue_counts来扁平df来生成计数,由此可以构造最终的df:

代码语言:javascript
复制
In [230]:
import io
import pandas as pd
​
t="""Measure1 Measure2 Measure3
0        1         3
1        3         2
3        0        0"""
​
df = pd.read_csv(io.StringIO(t), sep='\s+')
df

Out[230]:
   Measure1  Measure2  Measure3
0         0         1         3
1         1         3         2
2         3         0         0

In [240]:    
count = pd.Series(df.squeeze().values.ravel()).value_counts()
pd.DataFrame({'Measure': count.index, 'Count':count.values, 'Percentage':(count/count.sum()).values})

Out[240]:
   Count  Measure  Percentage
0      3        3    0.333333
1      3        0    0.333333
2      2        1    0.222222
3      1        2    0.111111

我插入了一个0,只是为了使df形状正确,但是您应该知道重点。

票数 2
EN

Stack Overflow用户

发布于 2016-12-06 15:06:02

代码语言:javascript
复制
In [68]: df=DataFrame({'m1':[0,1,3], 'm2':[1,3,0], 'm3':[3,2, np.nan]})

In [69]: df
Out[69]:
   m1  m2   m3
0   0   1  3.0
1   1   3  2.0
2   3   0  NaN

In [70]: df=df.apply(Series.value_counts).sum(1).to_frame(name='Count')

In [71]: df
Out[71]:
     Count
0.0    2.0
1.0    2.0
2.0    1.0
3.0    3.0

In [72]: df.index.name='Measure'

In [73]: df
Out[73]:
         Count
Measure
0.0        2.0
1.0        2.0
2.0        1.0
3.0        3.0

In [74]: df['Percentage']=df.Count.div(df.Count.sum())

In [75]: df
Out[75]:
         Count  Percentage
Measure
0.0        2.0       0.250
1.0        2.0       0.250
2.0        1.0       0.125
3.0        3.0       0.375
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34045837

复制
相关文章

相似问题

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