为了账号安全,请及时绑定邮箱和手机立即绑定

如何仅使用 Pandas 执行矢量化分箱

如何仅使用 Pandas 执行矢量化分箱

慕码人2483693 2021-06-03 15:41:06
我试图找到正确的语法来选择 Pandas DataFrame 中的一行切片,条件是多维切片。我想通过在多维 numpy 数组中提供 bin 并矢量比较记录是否适合一个 bin 或另一个 bin 来执行直方图分箱。结果应该是一个 1 维 numpy 数组,其中包含每个 bin 中的项目数。我最初的模型尝试如下,以供参考,尽管我已经在下面的答案中提供了部分实现(使用循环代替):import numpy as npimport pandas as pd## Generate Random DataX = np.random.normal(0.5,0.1,100)## Populate a Pandas DataFrameDF = pd.DataFrame({'x':X})## Some example, hardcoded 1D bins. bins = np.array([                [[0.0,0.2]],                [[0.2,0.4]],                [[0.4,0.6]],                [[0.6,0.8]],                [[0.8,1.0]]                ])hist = np.zeros(shape=(4,))hist[:] = np.sum(                 DF.loc[   (DF >= bins[:,:,0]) &                           (DF > bins[:,:,1])                        ].dropna(how='all')                 )通常,数据是 n 维的,并且 bin 遵循上述模式,其中:[[x_min, x_max], [y_min, ymax], [z_min, z_max]] 对于每个 bin(因此在上面的 1D 示例中存在明显的“额外”嵌套层)。因此切片应该适用于多列的数据帧,这样DF['x'] >= x_min and DF['x'] < x_max and DF['y'] >= y_min and DF['y'] < y_max等等,因此需要与维度无关;切片方法似乎是实现这一目标的最自然的方式,如果可以实现,计算效率应该更高。如果没有,可以尝试我的答案中的列表理解方法 - 但我在多维方面遇到了麻烦。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号