描述性统计
问题
描述性统计有哪些常用指标?均值和中位数什么时候用哪个?标准差的含义是什么?
答案
描述性统计是数据分析的起点——在做任何深入分析前,你需要用描述性统计"摸清数据长什么样"。
三大核心维度
集中趋势
| 指标 | 公式 | 特点 | 适用场景 |
|---|---|---|---|
| 均值 | 受异常值影响大 | 正态分布、无明显异常值 | |
| 中位数 | 排序后取中间值 | 稳健,不受异常值影响 | 有异常值、偏态分布 |
| 众数 | 出现次数最多的值 | 用于分类数据 | 分类变量、两极分布 |
面试高频问题
"均值和中位数什么时候用哪个?"
- 薪资、房价、收入等右偏分布数据 → 用中位数(少数极高值会拉高均值)
- 考试成绩、身高等近似正态数据 → 用均值
- 快速判断:如果 均值 > 中位数,说明数据右偏,应报告中位数
Python 计算
import pandas as pd
import numpy as np
df = pd.DataFrame({'salary': [5000, 6000, 7000, 8000, 100000]})
df['salary'].mean() # 均值: 25200(被 100000 拉高)
df['salary'].median() # 中位数: 7000(更能代表典型值)
df['salary'].mode() # 众数(此例无重复值)
离散程度
| 指标 | 定义 | Python |
|---|---|---|
| 极差 | 最大值 - 最小值 | df['col'].max() - df['col'].min() |
| 方差 | 偏差平方的平均值 | df['col'].var() |
| 标准差 | 方差的平方根 | df['col'].std() |
| IQR | Q3 - Q1(四分位距) | df['col'].quantile(0.75) - df['col'].quantile(0.25) |
| 变异系数 | (标准化离散度) | df['col'].std() / df['col'].mean() |
标准差的直觉理解
标准差 = "数据平均偏离均值的距离"。
- 标准差越小,数据越聚集在均值附近
- 标准差越大,数据越分散
- 对于正态分布:68% 数据在 ±1σ 内,95% 在 ±2σ 内,99.7% 在 ±3σ 内
分位数与箱线图
分位数
# 常用分位数
df['salary'].quantile(0.25) # Q1(25%分位)
df['salary'].quantile(0.50) # Q2(中位数)
df['salary'].quantile(0.75) # Q3(75%分位)
# 百分位
df['salary'].quantile(0.90) # P90
df['salary'].quantile(0.99) # P99
# 五数概括
df['salary'].describe()
# count, mean, std, min, 25%, 50%, 75%, max
分布形态
| 指标 | 值 | 含义 |
|---|---|---|
| 偏度 = 0 | 对称分布 | 正态 |
| 偏度 > 0 | 右偏(右尾长) | 收入、房价 |
| 偏度 < 0 | 左偏(左尾长) | 考试分数(满分人多) |
| 峰度 = 3 | 正态峰度 | 标准 |
| 峰度 > 3 | 尖峰厚尾 | 金融收益率 |
| 峰度 < 3 | 平坦 | 均匀分布 |
偏度和峰度
df['salary'].skew() # 偏度
df['salary'].kurtosis() # 峰度(Pandas 默认为超额峰度,正态=0)
常见面试问题
Q1: 什么时候用均值,什么时候用中位数?
答案:
- 均值:数据近似对称、无极端异常值、需要后续数学运算(如 t 检验)
- 中位数:数据偏态、有极端值(如收入、房价)、需要稳健的"典型值"
- 经验法则:如果
|均值 - 中位数| / 标准差 > 0.5,数据偏态明显,应报告中位数
Q2: 标准差和方差的区别?
答案:
- 方差 = 偏差平方的平均值,单位是原始数据的平方(如万元²)
- 标准差 = 方差的平方根,单位与原始数据相同(如万元)
- 实际业务中几乎只用标准差,因为单位可解释
- 方差在数学推导中更方便(具有可加性)
Q3: 变异系数(CV)什么时候用?
答案: 变异系数 ,用于比较不同量纲/量级数据的离散程度:
- 比较"收入的波动"和"年龄的波动"时,标准差不可比(单位不同),但 CV 可比
- CV > 1 说明数据离散度非常大
Q4: P90、P99 在数据分析中怎么用?
答案:
- P50(中位数):反映中等水平
- P90:90% 用户的接口响应时间 < P90 值,常用于 SLA 监控
- P99:极端情况的阈值,用于发现尾部异常
- 电商:P90 的客单价 → 高价值用户的门槛
Q5: describe() 输出的指标分别是什么意思?
答案:
| 指标 | 含义 |
|---|---|
| count | 非空值数量 |
| mean | 均值 |
| std | 标准差 |
| min | 最小值 |
| 25% | Q1(第一四分位数) |
| 50% | Q2(中位数) |
| 75% | Q3(第三四分位数) |
| max | 最大值 |