2024-03-29 04:58:07 发布
网友
我有一个熊猫数据帧,每行有不同数量的整数和NaNs。我想把每一行中的值分配到8个箱子-每行4个箱子为负值,4个箱子为正值。因此,每行的每个bin中的值的数量将不同。有关于如何调整qcut函数的提示吗?谢谢!你知道吗
NaNs
qcut
如果我理解正确,你可以对正值做qcut,对负值做qcut。你知道吗
例如,给定数据帧:
>>> df vals 0 -0.456460 1 0.448368 2 0.186750 3 1.056617 4 -0.035620 5 -0.609843 6 0.126376 7 0.160817 8 -1.495441 9 0.730763 10 -0.005071 11 0.677918 12 -0.779553 13 0.717374 14 2.250258 15 -0.801028 16 0.306408 17 0.538970 18 -2.120528 19 1.066903
使用2qcuts,一个表示阳性,一个表示阴性。你知道吗
qcuts
df.loc[df.vals > 0,'bin'] = pd.qcut(df.loc[df.vals > 0,'vals'], q=4) df.loc[df.vals < 0,'bin'] = pd.qcut(df.loc[df.vals < 0,'vals'], q=4)
因此,它们被分为8个独特的箱子,4个用于阳性,4个用于阴性:
>>> df vals bin 0 -0.456460 (-0.695, -0.351] 1 0.448368 (0.276, 0.608] 2 0.186750 (0.125, 0.276] 3 1.056617 (0.812, 2.25] 4 -0.035620 (-0.351, -0.00507] 5 -0.609843 (-0.695, -0.351] 6 0.126376 (0.125, 0.276] 7 0.160817 (0.125, 0.276] 8 -1.495441 (-2.122, -0.975] 9 0.730763 (0.608, 0.812] 10 -0.005071 (-0.351, -0.00507] 11 0.677918 (0.608, 0.812] 12 -0.779553 (-0.975, -0.695] 13 0.717374 (0.608, 0.812] 14 2.250258 (0.812, 2.25] 15 -0.801028 (-0.975, -0.695] 16 0.306408 (0.276, 0.608] 17 0.538970 (0.276, 0.608] 18 -2.120528 (-2.122, -0.975] 19 1.066903 (0.812, 2.25]
您可以对存储箱进行排序,使其形象化,这样就可以看到4个存储箱中的正值和4个存储箱中的负值:
np.sort(df['bin'].unique()) array([Interval(-2.1219999999999999, -0.97499999999999998, closed='right'), Interval(-0.97499999999999998, -0.69499999999999995, closed='right'), Interval(-0.69499999999999995, -0.35099999999999998, closed='right'), Interval(-0.35099999999999998, -0.0050699999999999999, closed='right'), Interval(0.125, 0.27600000000000002, closed='right'), Interval(0.27600000000000002, 0.60799999999999998, closed='right'), Interval(0.60799999999999998, 0.81200000000000006, closed='right'), Interval(0.81200000000000006, 2.25, closed='right')], dtype=object)
如果我理解正确,你可以对正值做
qcut
,对负值做qcut
。你知道吗例如,给定数据帧:
使用2
qcuts
,一个表示阳性,一个表示阴性。你知道吗因此,它们被分为8个独特的箱子,4个用于阳性,4个用于阴性:
您可以对存储箱进行排序,使其形象化,这样就可以看到4个存储箱中的正值和4个存储箱中的负值:
相关问题 更多 >
编程相关推荐