首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按单栏分位数计算的熊猫群数据

按单栏分位数计算的熊猫群数据
EN

Stack Overflow用户
提问于 2019-09-21 13:29:28
回答 2查看 2.1K关注 0票数 1

对不起,如果这是重复的帖子,我找不到相关的帖子。

代码语言:javascript
运行
复制
from random import seed
seed(100)
P = pd.DataFrame(np.random.randint(0, 100, size=(1000, 2)), columns=list('AB'))

我想要的是将P按列A的四分位数/分位数/十进制/etc分组,然后按组计算汇总统计数据(如mean)。我可以将列的十进制定义为

代码语言:javascript
运行
复制
P['A'].quantile(np.arange(10) / 10)

我不知道如何用A的十进制来分组。提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-21 14:16:20

如果您想按四分位数对P进行分组,请运行:

代码语言:javascript
运行
复制
gr = P.groupby(pd.qcut(P.A, 4, labels=False))

然后,您可以对这些组执行任何操作。

对于演示文稿,下面只提供了限制为20行的P打印输出:

代码语言:javascript
运行
复制
for key, grp in gr:
    print(f'\nGroup: {key}\n{grp}')

这意味着:

代码语言:javascript
运行
复制
Group: 0
     A   B
0    8  24
3   10  94
10   9  93
15   4  91
17   7  49

Group: 1
     A   B
7   34  24
8   15  60
12  27   4
13  31   1
14  13  83

Group: 2
     A   B
4   52  98
5   53  66
9   58  16
16  59  67
18  47  65

Group: 3
     A   B
1   67  87
2   79  48
6   98  14
11  86   2
19  61  14

如您所见,每个组(四分位数)有5个成员,因此分组是正确的。

作为补充

如果您对每个四分位数的B难字感兴趣,请运行:

代码语言:javascript
运行
复制
pd.qcut(P.A, 4, labels=False, retbins=True)[1]

然后cut返回两个结果(一个元组)。第一个元素(数字0)是之前返回的结果,但这次我们对第二个元素(编号1)感兴趣-- bin边框。

对于你的数据,它们是:

代码语言:javascript
运行
复制
array([ 4.  , 12.25, 40.5 , 59.5 , 98.  ])

例如,第一个四分位数在4到12.35之间。

票数 4
EN

Stack Overflow用户

发布于 2019-09-21 14:05:11

您可以使用quantile系列创建另一列,用其分位数标签标记每一行,然后按该列分组。numpy搜索排序对此非常有用:

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
from random import seed

seed(100)
P = pd.DataFrame(np.random.randint(0, 100, size=(1000, 2)), columns=list('AB'))
q = P['A'].quantile(np.arange(10) / 10)
P['G'] = P['A'].apply(lambda x : q.index[np.searchsorted(q, x, side='right')-1])

由于分位数序列存储分位数间隔的较低值,请确保将参数side='right'传递给np.searchsorted以不获取0(最小值应该是1,否则您有一个超出需要的索引)。

现在您可以通过这样做来详细说明您的统计数据,例如:

代码语言:javascript
运行
复制
P.groupby('G').agg(['sum', 'mean']) #add to the list all the statistics method you wish
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58040767

复制
相关文章

相似问题

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