首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用另一列的子组动态地更改熊猫数据中的筛选器?

如何用另一列的子组动态地更改熊猫数据中的筛选器?
EN

Stack Overflow用户
提问于 2014-06-20 07:31:54
回答 1查看 610关注 0票数 0

我有3列(公司、market_capitalization和debt_ratio)。我想根据debt_ratio的子组获得market_capitalization的统计信息。

我创建了一个函数'subgroups_creation(列,n )‘,其中列是我分组的列,market_capitalization,n是我想要创建的子组的数量。该函数接受列的范围,并将其划分为大小相等的子组。其结果是一本如下所示的字典。

代码语言:javascript
复制
Sub-Group  market_capitalization
1          :300
2          :639
3          :979

例如,我想知道拥有300-6.39亿market_capitalization的公司的market_capitalization平均值。虽然我知道如何通过特定的值进行过滤,以及如何在此之后获取统计数据,但出于研究目的,我将不断地更改子组的数量,因此我希望这些过滤器动态更新,以更改子组的数量。

结果是子群数=5。

代码语言:javascript
复制
Subgroup  market_capitalization     mean debt_ration
  1             300-638              0.25
  2             639-978              0.32

子群数=7

代码语言:javascript
复制
Subgroup  market_capitalization     mean debt_ration
  1             300-541              0.21
  2             542-785              0.40

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-20 16:46:47

一些虚拟数据:

代码语言:javascript
复制
In [275]: df = pd.DataFrame({'company': list('abcdefg'), 
                             'market_cap': np.linspace(100, 500, 7), 
                             'debt_ratio': [.85,.34,.05,.34,.46,.234,.34]})

我对你的问题不完全清楚,但我想你可能想要熊猫cut功能,它将数据打包成组。下面的代码根据market_cap、组将数据分成3组,并计算平均债务比率。

代码语言:javascript
复制
In [282]: df.groupby(pd.cut(df['market_cap'], 3))['debt_ratio'].mean()
Out[282]: 
market_cap
(99.6, 233.333]       0.413333
(233.333, 366.667]    0.400000
(366.667, 500]        0.287000
Name: debt_ratio, dtype: float64

要有不同数量的组,只需传递不同的参数即可。

代码语言:javascript
复制
In [283]: df.groupby(pd.cut(df['market_cap'], 5))['debt_ratio'].mean()
Out[283]: 
market_cap
(99.6, 180]    0.595
(180, 260]     0.050
(260, 340]     0.340
(340, 420]     0.460
(420, 500]     0.287
Name: debt_ratio, dtype: float64
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24322153

复制
相关文章

相似问题

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