需要给定一个数值范围,然后按照下面的规则自动分箱:
- 等频分箱:每个区间内包括的值一样多
- 等距分箱:每两区间之间的距离是一样的
等频分箱使用:pd.qcut
,更多可以参考文档:https://pandas.pydata.org/docs/reference/api/pandas.qcut.html
等距分箱使用:pd.cut
,更多可以参考文档:https://pandas.pydata.org/docs/reference/api/pandas.cut.html
示例代码
import pandas as pd
value_list = [0, 10, 20, 30.4, 59, 61, 79, 80, 90, 99, 100]
# 等频分箱
value_freq_bins = pd.qcut(value_list, q=5)
print("等频分箱:", value_freq_bins.codes)
# 等距分箱
value_dis_bins = pd.cut(value_list, bins=5)
print("等距分箱:", value_dis_bins.codes)
得到结果:
等频分箱: [0 0 0 1 1 2 2 3 3 4 4]
等距分箱: [0 0 0 1 2 3 3 3 4 4 4]