首页 > 解决方案 > 将 qcut 应用于具有用户定义的百分位值的数据框列

问题描述

我有两个数据框,如下所示。

dataframe1 = 

Index  features  constant
0      AA        0.25
1      AB        0.45
2      AC        0.78
3      AD        0.91
4      AE        0.12

dataframe2 = 

Index   AA    AB    AC    AD   AE
0       10    45    15    14   98
1       14    55    55    48   70
2       25    75    87    46   91
3       47    87    25    71   10
4       47    65    58    48   12
5       18    45    69    73   5

现在通过做-->>

qcut(dataframe2['AA'],5,labels = list(range(1,6)))

我可以根据最小值、百分位数(0.2)、百分位数(0.4)、百分位数(0.6)、百分位数(0.8)和最大值来获取垃圾箱。

但我想知道我是否可以将 qcut 应用于用户定义的百分位数。

说特定功能的垃圾箱应该如下所示。

bin1 = (min)                                      -to-  percentile(constant + ((1-constant)*0.2))
bin2 = percentile(constant + ((1-constant)*0.2))  -to-  percentile(constant + ((1-constant)*0.4))
bin3 = percentile(constant + ((1-constant)*0.4))  -to-  percentile(constant + ((1-constant)*0.6))
bin4 = percentile(constant + ((1-constant)*0.6))  -to-  percentile(constant + ((1-constant)*0.8))
bin5 = percentile(constant + ((1-constant)*0.8))  -to-  (max)

希望你能理解。需要帮忙。提前致谢。

标签: pythonpandasdataframe

解决方案


只需将百分位数传递给qcut

percentiles = [0, constant + ((1-constant)*0.2), constant + ((1-constant)*0.4), constant + ((1-constant)*0.6), constant + ((1-constant)*0.8), 1]

qcut(dataframe2['AA'], percentiles)

假设您所有的值都是有效的百分位数,即在 (0,1) 之间


推荐阅读