什么是描述性统计?它在数据分析中的作用是什么?
描述性统计及其在数据分析中的作用
一、什么是描述性统计
描述性统计是用几个关键数字概括一堆数据的整体特征,让数据从"不可读"变为"一目了然"。
10,000 条薪资记录 → 均值 12,800 / 中位数 9,500 / 标准差 8,200一万行数字看不完,但三个数就能建立基本认知:大部分人在 1 万左右,但少数高薪把均值拉高了,分布偏右。
描述性统计不做推断、不做预测,只回答"数据长什么样"。
二、三大核心维度
1. 集中趋势 — 数据聚集在哪里
| 指标 | 计算方式 | 特点 | 适用场景 |
|---|---|---|---|
| 均值 | 所有值求和 ÷ 个数 | 受极端值影响大 | 近似正态分布的数值 |
| 中位数 | 排序后取中间值 | 不受极端值影响 | 偏态分布、有异常值 |
| 众数 | 出现频率最高的值 | 可能有多个或没有 | 分类变量 |
| 截尾均值 | 去掉两端各5%后求均值 | 兼顾均值和中位数优点 | 有少量极端值但想用均值 |
均值 vs 中位数的经典场景:
某部门 8 人月薪: 6K, 7K, 7K, 8K, 8K, 9K, 10K, 85K 均值 = 17.5K → 看起来大家薪资很高 中位数 = 8K → 更接近大多数人的真实水平 原因: 1 个 85K(总监)把均值拉高了 2 倍多结论:数据偏态时,报告中位数比均值更诚实。
2. 离散程度 — 数据散得多开
| 指标 | 含义 | 解读 |
|---|---|---|
| 极差 | 最大值 - 最小值 | 简单粗糙,只看两端 |
| 方差 | 各值与均值之差的平方的均值 | 值越大越分散,单位是原单位的平方 |
| 标准差 | 方差的平方根 | 最常用,与原数据同单位 |
| 变异系数(CV) | 标准差 ÷ 均值 | 消除量纲影响,比较不同量级数据的离散度 |
| IQR | Q3 - Q1 | 只看中间50%的离散度,不受极端值影响 |
离散程度的直觉理解:
A 组薪资: 8K, 8K, 8K, 8K, 8K 标准差 = 0 → 人人一样 B 组薪资: 4K, 6K, 8K, 10K, 12K 标准差 = 2.8K → 拉开差距 C 组薪资: 3K, 5K, 8K, 15K, 35K 标准差 = 11K → 差距悬殊 均值都是 8K,但离散度天差地别IQR 与箱线图配合:
┌──────────────┐ ──┤ │ ┌──┐ │ ├── min Q1 中位数 Q3 max ├──── IQR ────┤ < Q1-1.5×IQR 或 > Q3+1.5×IQR = 异常值3. 分布形态 — 数据的形状
| 指标 | 含义 | 取值 | 解读 |
|---|---|---|---|
| 偏度(Skewness) | 分布的不对称程度 | 0 | 完全对称(正态) |
| >0 | 右偏(正偏):长尾在右侧,均值 > 中位数 | ||
| <0 | 左偏(负偏):长尾在左侧,均值 < 中位数 | ||
| 峰度(Kurtosis) | 分布的尖峭/平坦程度 | 0 (超额峰度) | 与正态相同 |
| >0 | 尖峰:比正态更集中,厚尾 | ||
| <0 | 平峰:比正态更分散,薄尾 |
右偏是业务数据中最常见的形态:
频率 │ ██ │ ██ ██ │ ██ ██ ██ │ ██ ██ ██ ██ │ ██ ██ ██ ██ ██ ██ │ ██ ██ ██ ██ ██ ██ ██ ██ ─ ─ ─ ─ ─ ─ → 薪资 │ 低薪人多 高薪人少但拉得很远 均值(12K) > 中位数(9K) > 众数(7K)典型右偏数据:薪资、房价、订单金额、网页浏览量、用户活跃天数。
三、在数据分析中的作用
1. 数据摸底 — 第一步必做
拿到数据的第一件事不是建模,而是描述统计,建立对数据的"手感"。
importpandasaspd df=pd.read_csv("orders.csv")# 一行搞定基本描述print(df.describe())输出:
amount quantity discount count 10000.000000 10000.000000 9820.000000 mean 258.300000 3.200000 0.080000 std 890.500000 5.100000 0.120000 min 0.010000 1.000000 0.000000 25% 45.000000 1.000000 0.000000 50% 120.000000 2.000000 0.050000 75% 280.000000 4.000000 0.100000 max 58000.000000 200.000000 0.800000从这幅"数字快照"中能立刻发现:
- amount 均值 258 但中位数 120 → 右偏严重
- amount 最大值 58000 远超 Q3 的 280 → 有极端大额订单
- discount 只有 9820 条非空 → 约 1.8% 缺失
- quantity 最大值 200 → 可能是批量采购或异常
2. 数据质量筛查 — 发现异常的雷达
| 信号 | 可能的问题 |
|---|---|
| 均值远大于中位数 | 右偏,或存在极端异常值 |
| 标准差极大 | 数据离散度高,混合了不同群体 |
| 极值超出业务常理 | 录入错误或单位错误 |
| count 不一致 | 有缺失值 |
| 众数为异常值 | 数据采集/录入可能有系统性问题 |
3. 指标体系构建 — 定义"看什么"
日常经营监控的核心指标本质上就是描述性统计的汇总:
| 业务场景 | 集中趋势指标 | 离散程度指标 |
|---|---|---|
| 电商 | 日均 GMV、客单价 | 订单金额标准差、转化率波动 |
| 电信 | 日均话务量、ARPU | 流量使用变异系数 |
| 制造 | 平均良率、平均产出 | 缺陷率标准差、批次间差异 |
| 人力 | 平均薪资、平均在职年限 | 薪资基比(P90/P10) |
4. 分组对比 — 发现差异的起点
描述性统计最强大的应用不是看整体,而是拆开看:
# 按渠道分组描述print(df.groupby("channel")["amount"].describe())channel count mean std min 25% 50% 75% max 线上 6000 310 950 1 55 145 340 58000 线下 3000 180 420 5 40 100 210 12000 电话 1000 150 280 2 35 85 180 8000一眼看出:线上渠道均值高但方差大,有大单拉动的特征。
5. 为建模做准备
| 建模前检查 | 用到的描述统计 |
|---|---|
| 特征是否有区分度 | 标准差≈0 的特征对模型无用 |
| 是否需要标准化 | 量级差异大的特征需标准化 |
| 是否需要处理偏态 | 右偏严重的特征可做 log 变换 |
| 样本是否均衡 | 分类标签的频数统计 |
| 是否需要分箱 | 连续变量与目标变量的关系 |
四、常用工具速查
| 工具 | 操作 | 适合 |
|---|---|---|
| Excel | =AVERAGE()=MEDIAN()=STDEV()数据透视表 | 快速查看,非程序员 |
| Python | df.describe()df.value_counts()df.groupby().agg() | 批量处理,可复现 |
| SQL | AVG()MEDIAN()STDDEV()PERCENTILE() | 直接在数据库层统计 |
| R | summary()psych::describe() | 学术研究 |
Python 常用代码片段:
# 基本描述df.describe(include="all")# 单列分位数df["amount"].quantile([0.01,0.05,0.25,0.5,0.75,0.95,0.99])# 偏度、峰度df["amount"].skew(),df["amount"].kurtosis()# 分组聚合df.groupby("dept").agg(人数=("salary","count"),均值=("salary","mean"),中位数=("salary","median"),标准差=("salary","std"),P10=("salary",lambdax:x.quantile(0.1)),P90=("salary",lambdax:x.quantile(0.9)),)五、描述性统计的局限
| 局限 | 说明 | 应对 |
|---|---|---|
| 只看表面 | 均值相同不代表分布相同(安斯库姆四重奏) | 配合可视化 |
| 不做因果判断 | 相关不等于因果 | 需要推断统计或实验设计 |
| 不做预测 | 描述过去,不预判未来 | 需要预测建模 |
| 受样本偏差影响 | 抽样偏差下描述统计也偏差 | 先检查样本代表性 |
| 整体掩盖局部 | 总体均值可能对任何子群体都不准确 | 拆分维度看 |
安斯库姆四重奏提醒:四组数据的均值、方差、相关系数、回归线完全一样,但数据长得完全不同——永远要画图,不能只看统计量。## 描述性统计及其在数据分析中的作用
一、什么是描述性统计
描述性统计是用几个关键数字概括一堆数据的整体特征,让数据从"不可读"变为"一目了然"。
10,000 条薪资记录 → 均值 12,800 / 中位数 9,500 / 标准差 8,200一万行数字看不完,但三个数就能建立基本认知:大部分人在 1 万左右,但少数高薪把均值拉高了,分布偏右。
描述性统计不做推断、不做预测,只回答"数据长什么样"。
二、三大核心维度
1. 集中趋势 — 数据聚集在哪里
| 指标 | 计算方式 | 特点 | 适用场景 |
|---|---|---|---|
| 均值 | 所有值求和 ÷ 个数 | 受极端值影响大 | 近似正态分布的数值 |
| 中位数 | 排序后取中间值 | 不受极端值影响 | 偏态分布、有异常值 |
| 众数 | 出现频率最高的值 | 可能有多个或没有 | 分类变量 |
| 截尾均值 | 去掉两端各5%后求均值 | 兼顾均值和中位数优点 | 有少量极端值但想用均值 |
均值 vs 中位数的经典场景:
某部门 8 人月薪: 6K, 7K, 7K, 8K, 8K, 9K, 10K, 85K 均值 = 17.5K → 看起来大家薪资很高 中位数 = 8K → 更接近大多数人的真实水平 原因: 1 个 85K(总监)把均值拉高了 2 倍多结论:数据偏态时,报告中位数比均值更诚实。
2. 离散程度 — 数据散得多开
| 指标 | 含义 | 解读 |
|---|---|---|
| 极差 | 最大值 - 最小值 | 简单粗糙,只看两端 |
| 方差 | 各值与均值之差的平方的均值 | 值越大越分散,单位是原单位的平方 |
| 标准差 | 方差的平方根 | 最常用,与原数据同单位 |
| 变异系数(CV) | 标准差 ÷ 均值 | 消除量纲影响,比较不同量级数据的离散度 |
| IQR | Q3 - Q1 | 只看中间50%的离散度,不受极端值影响 |
离散程度的直觉理解:
A 组薪资: 8K, 8K, 8K, 8K, 8K 标准差 = 0 → 人人一样 B 组薪资: 4K, 6K, 8K, 10K, 12K 标准差 = 2.8K → 拉开差距 C 组薪资: 3K, 5K, 8K, 15K, 35K 标准差 = 11K → 差距悬殊 均值都是 8K,但离散度天差地别IQR 与箱线图配合:
┌──────────────┐ ──┤ │ ┌──┐ │ ├── min Q1 中位数 Q3 max ├──── IQR ────┤ < Q1-1.5×IQR 或 > Q3+1.5×IQR = 异常值3. 分布形态 — 数据的形状
| 指标 | 含义 | 取值 | 解读 |
|---|---|---|---|
| 偏度(Skewness) | 分布的不对称程度 | 0 | 完全对称(正态) |
| >0 | 右偏(正偏):长尾在右侧,均值 > 中位数 | ||
| <0 | 左偏(负偏):长尾在左侧,均值 < 中位数 | ||
| 峰度(Kurtosis) | 分布的尖峭/平坦程度 | 0 (超额峰度) | 与正态相同 |
| >0 | 尖峰:比正态更集中,厚尾 | ||
| <0 | 平峰:比正态更分散,薄尾 |
右偏是业务数据中最常见的形态:
频率 │ ██ │ ██ ██ │ ██ ██ ██ │ ██ ██ ██ ██ │ ██ ██ ██ ██ ██ ██ │ ██ ██ ██ ██ ██ ██ ██ ██ ─ ─ ─ ─ ─ ─ → 薪资 │ 低薪人多 高薪人少但拉得很远 均值(12K) > 中位数(9K) > 众数(7K)典型右偏数据:薪资、房价、订单金额、网页浏览量、用户活跃天数。
三、在数据分析中的作用
1. 数据摸底 — 第一步必做
拿到数据的第一件事不是建模,而是描述统计,建立对数据的"手感"。
importpandasaspd df=pd.read_csv("orders.csv")# 一行搞定基本描述print(df.describe())输出:
amount quantity discount count 10000.000000 10000.000000 9820.000000 mean 258.300000 3.200000 0.080000 std 890.500000 5.100000 0.120000 min 0.010000 1.000000 0.000000 25% 45.000000 1.000000 0.000000 50% 120.000000 2.000000 0.050000 75% 280.000000 4.000000 0.100000 max 58000.000000 200.000000 0.800000从这幅"数字快照"中能立刻发现:
- amount 均值 258 但中位数 120 → 右偏严重
- amount 最大值 58000 远超 Q3 的 280 → 有极端大额订单
- discount 只有 9820 条非空 → 约 1.8% 缺失
- quantity 最大值 200 → 可能是批量采购或异常
2. 数据质量筛查 — 发现异常的雷达
| 信号 | 可能的问题 |
|---|---|
| 均值远大于中位数 | 右偏,或存在极端异常值 |
| 标准差极大 | 数据离散度高,混合了不同群体 |
| 极值超出业务常理 | 录入错误或单位错误 |
| count 不一致 | 有缺失值 |
| 众数为异常值 | 数据采集/录入可能有系统性问题 |
3. 指标体系构建 — 定义"看什么"
日常经营监控的核心指标本质上就是描述性统计的汇总:
| 业务场景 | 集中趋势指标 | 离散程度指标 |
|---|---|---|
| 电商 | 日均 GMV、客单价 | 订单金额标准差、转化率波动 |
| 电信 | 日均话务量、ARPU | 流量使用变异系数 |
| 制造 | 平均良率、平均产出 | 缺陷率标准差、批次间差异 |
| 人力 | 平均薪资、平均在职年限 | 薪资基比(P90/P10) |
4. 分组对比 — 发现差异的起点
描述性统计最强大的应用不是看整体,而是拆开看:
# 按渠道分组描述print(df.groupby("channel")["amount"].describe())channel count mean std min 25% 50% 75% max 线上 6000 310 950 1 55 145 340 58000 线下 3000 180 420 5 40 100 210 12000 电话 1000 150 280 2 35 85 180 8000一眼看出:线上渠道均值高但方差大,有大单拉动的特征。
5. 为建模做准备
| 建模前检查 | 用到的描述统计 |
|---|---|
| 特征是否有区分度 | 标准差≈0 的特征对模型无用 |
| 是否需要标准化 | 量级差异大的特征需标准化 |
| 是否需要处理偏态 | 右偏严重的特征可做 log 变换 |
| 样本是否均衡 | 分类标签的频数统计 |
| 是否需要分箱 | 连续变量与目标变量的关系 |
四、常用工具速查
| 工具 | 操作 | 适合 |
|---|---|---|
| Excel | =AVERAGE()=MEDIAN()=STDEV()数据透视表 | 快速查看,非程序员 |
| Python | df.describe()df.value_counts()df.groupby().agg() | 批量处理,可复现 |
| SQL | AVG()MEDIAN()STDDEV()PERCENTILE() | 直接在数据库层统计 |
| R | summary()psych::describe() | 学术研究 |
Python 常用代码片段:
# 基本描述df.describe(include="all")# 单列分位数df["amount"].quantile([0.01,0.05,0.25,0.5,0.75,0.95,0.99])# 偏度、峰度df["amount"].skew(),df["amount"].kurtosis()# 分组聚合df.groupby("dept").agg(人数=("salary","count"),均值=("salary","mean"),中位数=("salary","median"),标准差=("salary","std"),P10=("salary",lambdax:x.quantile(0.1)),P90=("salary",lambdax:x.quantile(0.9)),)五、描述性统计的局限
| 局限 | 说明 | 应对 |
|---|---|---|
| 只看表面 | 均值相同不代表分布相同(安斯库姆四重奏) | 配合可视化 |
| 不做因果判断 | 相关不等于因果 | 需要推断统计或实验设计 |
| 不做预测 | 描述过去,不预判未来 | 需要预测建模 |
| 受样本偏差影响 | 抽样偏差下描述统计也偏差 | 先检查样本代表性 |
| 整体掩盖局部 | 总体均值可能对任何子群体都不准确 | 拆分维度看 |
安斯库姆四重奏提醒:四组数据的均值、方差、相关系数、回归线完全一样,但数据长得完全不同——永远要画图,不能只看统计量。
