pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决

Posted Data+Science+Insight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决相关的知识,希望对你有一定的参考价值。

pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决

目录

pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决

问题:

解决:


['bad', 'good', 'medium', 'medium', 'good', ..., NaN, NaN, 'medium', 'good', 'awesome']
Length: 13
Categories (4, object): ['bad' < 'medium' < 'good' < 'awesome']

问题:

test = np.array([1, 7, 5, 4, 6, 3,20,10,0,0,4,9,30])

percentiles = np.percentile(test, [0, 25, 50, 75,100])

percentiles = list(percentiles)

percentiles


pd.cut(test,bins = percentiles, labels=["bad", "medium", "good", "awesome"])

[0.0, 3.0, 5.0, 9.0, 30.0]
 

['bad', 'good', 'medium', 'medium', 'good', ..., NaN, NaN, 'medium', 'good', 'awesome']
Length: 13
Categories (4, object): ['bad' < 'medium' < 'good' < 'awesome'] 

解决:

#include_lowest = True

#include_lowest = True

test = np.array([1, 7, 5, 4, 6, 3,20,10,0,0,4,9,30])

percentiles = np.percentile(test, [0, 25, 50, 75,100])

percentiles = list(percentiles)

percentiles


pd.cut(test,bins = percentiles, labels=["bad", "medium", "good", "awesome"],include_lowest = True)

[0.0, 3.0, 5.0, 9.0, 30.0]


['bad', 'good', 'medium', 'medium', 'good', ..., 'bad', 'bad', 'medium', 'good', 'awesome']
Length: 13
Categories (4, object): ['bad' < 'medium' < 'good' < 'awesome']

参考:python

参考:pandas

以上是关于pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 中 pandas.cut() 的等价物是啥?

特征处理方法

spark 特征工程 -- 分箱 Binning

基于观察分布/频率的连续数据分箱来决定分箱范围 r dplyr

使用 Python Pandas 对列进行分箱

在 Python 中对 pandas 中的数据框进行分箱 [重复]