我编写了一个函数,用于对 Dataframe 列的数值进行分箱,即将列值划分为指定数量的类别。
def binning_fun(df, col_name, num_of_bins):
lt=[]
for i in range(0,num_of_bins):
lt.append(i)
df[col_name]=pd.cut(df[col_name],bins=i+1, labels=lt)
return df
df="C:/Users/shootings.csv"
binning_fun(df, df['depth'], 4)
这会产生以下错误:
- "无[浮点64索引([61.5、59.8、56.9、62.4、63.3、62.8、62.3、61.9、65.1、59.4,\n ...\n 60.5、59.8、60.5、61.2、62.7、60.8、63.1、62.8、61.0、62.2],\n数据类型="浮点型64",长度= 53940)]位于[列]中"*
这些值确实存在于列"depth"中。为什么它们被称为不存在?
我的数据集:
carat cut clarity depth table
0 0.23 Ideal SI2 61.5 55.0
1 0.21 Premium SI1 59.8 61.0
2 0.23 Good VS1 56.9 65.0
3 0.29 Premium VS2 62.4 58.0
4 0.31 Good SI2 63.3 58.0
5 0.24 Good VVS2 90.7 62.8
预期产出:
depth
1
0
0
1
1
2
1条答案
按热度按时间fdbelqdn1#
您可以将cut用于固定的bin大小:
输出:
或者使用qcut表示大小相等的存储桶:
输出:
希望这能帮上忙。