如何按自定义非连续区间统计DataFrame列值 而非使用分箱
实现代码
首先导入所需依赖:
import pandas as pd import numpy as np
假设你已加载原始数据到变量df中,按如下步骤操作即可:
步骤1:生成带Range标签的DataFrame
使用np.select实现自定义区间匹配,逻辑更直观,后续修改规则也更灵活:
# 定义区间判断规则和对应标签 conditions = [ df['Value1'].between(1, 4, inclusive='both'), df['Value1'].between(7, 10, inclusive='both'), df['Value1'].between(13, 20, inclusive='both') ] range_labels = ['Range 1', 'Range 2', 'Range 3'] # 生成Range列,不满足所有区间条件的默认填充No_range df['Range'] = np.select(conditions, range_labels, default='No_range')
如果你更习惯分箱写法,也可以用如下等效实现:
bins = [0, 4, 6, 10, 12, 20] bin_labels = ['Range 1', pd.NA, 'Range 2', pd.NA, 'Range 3'] df['Range'] = pd.cut(df['Value1'], bins=bins, labels=bin_labels, include_lowest=True).fillna('No_range')
步骤2:生成汇总统计结果
# 过滤掉不属于自定义区间的行,统计各区间频次 stats_df = df[df['Range'] != 'No_range']['Range'].value_counts()\ .reset_index(name='Frequency')\ .sort_values('Range') # 按区间定义顺序排序,保证输出顺序符合预期
内容的提问来源于stack exchange,提问作者LostinSpatialAnalysis
相关产品推荐
相关产品推荐

