本文介绍如何将不规范的年龄分组(如“up to 25”“65 and older”)标准化为统一的数值区间,再通过计算区间中位数生成代表年龄的连续变量,最终使用皮尔逊相关系数评估其与总体评分之间的线性关系。
本文介绍如何将不规范的年龄分组(如“up to 25”“65 and older”)标准化为统一的数值区间,再通过计算区间中位数生成代表年龄的连续变量,最终使用皮尔逊相关系数评估其与总体评分之间的线性关系。
在进行相关性分析时,原始数据中的分类变量(如年龄区间)无法直接参与统计计算——Pearson 相关系数要求两个变量均为数值型。因此,关键步骤是将语义化的年龄分组(例如 'up to 25'、'65 and older')系统性地映射为可量化的数值表达,并合理估算每个区间的代表性年龄值(通常采用区间中点)。
✅ 标准化年龄字符串格式
首先需统一所有年龄区间的文本结构,便于后续解析:
- 'up to 25' → '0-25'(隐含下界为 0 岁)
- '65 and older' → '65-100'(上界需根据业务背景设定;100 是常见默认上限,若实际人群最大年龄为 90,则应调整为 '65-90')
其他标准格式(如 '25-34'、'45-54')可直接保留。
✅ 提取上下界并计算中位年龄
对每个标准化后的 'X-Y' 字符串,用 split('-') 分离上下界,转为整数后计算中点:
df['Mean_Age'] = (df['Lower_Age'] + df['Upper_Age']) / 2
该中位年龄作为该组的代理数值,既保留了区间顺序信息,又满足相关性分析的数值要求。
✅ 排序与相关性计算
为确保逻辑一致性,建议按 Lower_Age 升序排列数据(避免因原始顺序混乱影响解读)。随后调用 scipy.stats.pearsonr 计算皮尔逊相关系数:
from scipy.stats import pearsonr
corr_coef, p_value = pearsonr(df['Mean_Age'], df['Overal_Rating'])
print(f"r = {corr_coef:.4f}, p = {p_value:.4f}")示例输出 r = -0.4489, p = 0.3718 表明:当前样本中年龄与评分呈中等负相关趋势,但未达统计显著性(p > 0.05),需谨慎推断总体关系。
⚠️ 注意事项
- 边界合理性:'25-34' 实际覆盖 25–34 岁(含 25,不含 35),若原始定义为闭区间(含 34 和 35),应修正为 '25-35'。
- 极端组处理:'65 and older' 的上界设定直接影响 Mean_Age(如 65-100 → 82.5;65-90 → 77.5),建议结合数据分布或领域知识校准。
- 样本量限制:仅 6 组数据计算相关系数统计效力较低,结果宜作为探索性参考,不可替代回归建模或分组检验(如 ANOVA)。
- 相关 ≠ 因果:即使获得显著相关性,也不能推断年龄变化导致评分改变,需控制混杂变量并设计因果分析。
通过上述流程,你可稳健地将非数值年龄分组转化为可用于统计建模的连续指标,为后续深入分析奠定基础。

















