如何将Pandas中ROI列分箱后统计对应HIT列的计数?
解决Pandas分箱后统计HIT列计数的问题
嘿,我来帮你搞定这个问题!你已经完成了ROI列的分箱操作,接下来只需要把分箱结果和原始数据结合,再做分组统计就能得到每个箱里HIT(0/1)的数量啦,步骤超清晰:
步骤1:把分箱结果添加回原始DataFrame
首先,我们把生成的分箱标签binned_rois作为新列加到raw_df里,这样每一行数据都能对应到自己所属的ROI箱:
raw_df['ROI_bin'] = binned_rois
步骤2:分组统计HIT列的计数
这里给你两种常用的统计方式,按需选择:
方式一:直接统计每个箱内0和1的数量(直观展示)
用groupby结合value_counts,再通过unstack把结果转成更易读的列形式,fill_value=0避免某些箱没有0/1时出现空值:
hit_counts = raw_df.groupby('ROI_bin')['HIT'].value_counts().unstack(fill_value=0) print(hit_counts)
示例输出:
HIT 0 1 ROI_bin (0.999, 2.0] 5 3 (2.0, 4.0] 4 6 (4.0, 6.0] 7 2 (6.0, 8.0] 3 7 (8.0, 10.0] 6 4
方式二:自定义统计指标(比如单独统计1的数量、0的数量、总条数)
如果需要更灵活的统计项,可以用agg方法自定义聚合函数:
hit_summary = raw_df.groupby('ROI_bin').agg( hit_count=('HIT', lambda x: (x == 1).sum()), # 统计HIT=1的数量 non_hit_count=('HIT', lambda x: (x == 0).sum()), # 统计HIT=0的数量 total_records=('HIT', 'count') # 统计每个箱的总记录数 ) print(hit_summary)
示例输出:
hit_count non_hit_count total_records ROI_bin (0.999, 2.0] 3 5 8 (2.0, 4.0] 6 4 10 (4.0, 6.0] 2 7 9 (6.0, 8.0] 7 3 10 (8.0, 10.0] 4 6 10
这样就能完美关联每个ROI箱和对应的HIT计数啦,是不是很简单😉
内容的提问来源于stack exchange,提问作者arsenal88
相关产品推荐
相关产品推荐

