想知道当列类型为分类(特别是h2o enum
类型)时,对h2o数据框GroupBy对象中的列求和时会发生什么。
已将熊猫数据帧转换为H2o数据帧。然后将行按某个列分组,然后对其他列求和,例如。
location_id price store
------------------
1 10 JCP
1 15 SBUX
3 20 HOL
then after grouping and summing; df.group_by('location_id').sum(['price', 'store'])
location_id price store
------------------
1 25 <some number>
3 20 <some number>
在将分类列值加在一起时,想知道这里表面下发生了什么,并且似乎无法在h2o docs中找到GroupBy对象的sum()源代码。
答案 0 :(得分:0)
我们看到了h2o文档中的分类编码(http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/categorical_encoding.html),enum
类型(我在h2o数据框中使用的分类类型)
枚举或枚举:保留数据集不变,内部将字符串映射到 整数,并使用这些整数进行拆分-通过序数 nbins_cats太小而无法解析所有级别或通过 位组可以完美地进行分组拆分。每个类别都是单独的 类别; 其名称(或号码)无关。例如, 字符串被映射为Enum的整数,您可以拆分{0,1,2,3,4, 5}分别为{0,4,5}和{1,2,3}。
因此,如果我正确解释了这一点(有人请告诉我这是否不正确),那么发生的是,当将pandas框架转换为h2o时,它会通过指定为{ {1}}类型并为该标签分配内部唯一的ID整数值(用于训练和预测等,但通常看不到)。因此,当在这些enum
列上进行df.group_by(.).sum(.)
时,我们只是将数据帧转换为H2o时分配给这些列的所有内部映射的整数值 h2o数据框。
再次,如果这不是对这里发生的事情的最完整的解释,请让我知道。