python qcut方法对分数进行分箱

标签 python pandas

我想将 df['SCORES'] 中的分数分入名为 df['Remark'] 的新列中的 4 个分箱,如下面的代码所示(右)下表中的大部分列)。

但是,使用 qcut 方法,这会以 1/4 间隔均匀分布这些分数(我们在下面的代码中指定这一点)

df['Remark'] = pd.qcut(df['SCORE'],4,labels = ['Bad','Fair','Good','Excellent'])

在这种情况下,出现“Bad”备注的唯一原因是列 df['banned']df['charged']为真 = 1。

是否可以使用代码自动对模型进行编程,以将具有禁止收费字段的任何用户分配为1并带有不良评论,然后,其余用户具有非禁止或非收费字段,然后除以 pd.qcuit(df['SCORE'],3) 的剩余记录?

User    banned  charged score   **remark**
Sam      1         0    0        Bad
Rob      0         0    23       Fair
Tom      0         0    54       Good 
Kim      0         1    65       Bad
Nik      0         0    99       Excellent
Leo      1         1    3        Bad

最佳答案

对“好”数据应用三向剪切:

not_bad_mask = (df['banned'] == 0) & (df['charged'] == 0)
df['remark'] = pd.qcut(df[not_bad_mask]['score'], 3, 
                       labels = ['Fair', 'Good', 'Excellent'])

然后将另一个类别添加到类别列表中:

df['remark'].cat.add_categories(['Bad'], inplace=True)

并填补空白:

df['remark'].fillna('Bad', inplace=True)

关于python qcut方法对分数进行分箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68108409/

相关文章:

python - 代码不打印 tkinter python 中的事件

python - Flask 表单数据类型错误(unicode 数据不是 unicode)

python - 让 Nose 无法通过慢速测试

python - 如何计算给定字符串在具有更多嵌套列表/字典的列表中的出现次数?

python - args 元素似乎不在 apply 函数内运行

python - 根据特定值显示行

python - 如何为 PyQt 项目组织 GUI 代码?

python - 过滤 Pandas DataFrame 中缺失值的百分比

python - Pandas 在列上旋转

python - 将 DataFrame 的列设置为 FacetGrid 图形的行