python dataframe 分位数_python – 将数据转换到分位数bin

这篇博客介绍了如何利用pandas的`qcut()`和`.quantile()`方法来计算DataFrame中每一列的分位数信息,并将数据分配到相应的分箱。作者提供了一个名为`quintile`的函数,该函数计算分位数并将每个样本分配到五分位数之一。之后,博客提到了一个简化版的函数`quantile`,直接应用在DataFrame或特定列上,返回分箱标签的数量。
摘要由CSDN通过智能技术生成

我有一个数据框与数字列.对于每一列,我想计算分位数信息,并将每一行分配给其中之一.我试图使用

qcut() method返回一个分箱列表,而是最终单独计算箱子.我认为可能存在,但我找不到它将是一个方法,如df.to_quintile(数位数).这是我想到的,但我想知道是否有更多的succint /熊猫的方式这样做.

import pandas as pd

#create a dataframe

df = pd.DataFrame(randn(10, 4), columns=['A', 'B', 'C', 'D'])

def quintile(df, column):

"""

calculate quintiles and assign each sample/column to a quintile

"""

#calculate the quintiles using pandas .quantile() here

quintiles = [df[column].quantile(value) for value in [0.0,0.2,0.4,0.6,0.8]]

quintiles.reverse() #reversing makes the next loop simpler

#function to check membership in quintile to be used with pandas apply

def check_quintile(x, quintiles=quintiles):

for num,level in enumerate(quintiles):

#print number, level, level[1]

if x >= level:

print x, num

return num+1

df[column] = df[column].apply(check_quintile)

quintile(df,'A')

谢谢,

zach cp

编辑:看到帝斯曼答复后,功能可以写得更简单(下面).男人,那甜美

def quantile(column, quantile=5):

q = qcut(column, quantile)

return len(q.levels)- q.labels

df.apply(quantile)

#or

df['A'].apply(quantile)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值