当前位置: 首页 > news >正文

什么是描述性统计?它在数据分析中的作用是什么?

描述性统计及其在数据分析中的作用

一、什么是描述性统计

描述性统计是用几个关键数字概括一堆数据的整体特征,让数据从"不可读"变为"一目了然"。

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)标准差 ÷ 均值消除量纲影响,比较不同量级数据的离散度
IQRQ3 - 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()数据透视表快速查看,非程序员
Pythondf.describe()df.value_counts()df.groupby().agg()批量处理,可复现
SQLAVG()MEDIAN()STDDEV()PERCENTILE()直接在数据库层统计
Rsummary()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)标准差 ÷ 均值消除量纲影响,比较不同量级数据的离散度
IQRQ3 - 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()数据透视表快速查看,非程序员
Pythondf.describe()df.value_counts()df.groupby().agg()批量处理,可复现
SQLAVG()MEDIAN()STDDEV()PERCENTILE()直接在数据库层统计
Rsummary()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)),)

五、描述性统计的局限

局限说明应对
只看表面均值相同不代表分布相同(安斯库姆四重奏)配合可视化
不做因果判断相关不等于因果需要推断统计或实验设计
不做预测描述过去,不预判未来需要预测建模
受样本偏差影响抽样偏差下描述统计也偏差先检查样本代表性
整体掩盖局部总体均值可能对任何子群体都不准确拆分维度看

安斯库姆四重奏提醒:四组数据的均值、方差、相关系数、回归线完全一样,但数据长得完全不同——永远要画图,不能只看统计量。

http://www.cnnetsun.cn/news/3034798.html

相关文章:

  • 第03课:GDB 常用的调试命令概览
  • 如何分析干部队伍年龄结构,找准“盖层”和“断层”?
  • 老中青比例不是“数字游戏”,如何科学把握年轻干部选拔标准?
  • 101010旁观:芒格与巴菲特,力荐思维模型
  • Linux服务器开发通用规范
  • 2026年,普通程序员如何从0到1转型AI大模型
  • 历史对话能作为提示词吗?
  • 问题的根源:旧的 unsafe 太粗糙
  • 刮宫需要休息几天?
  • 曲线参数的实际应用解析
  • 多轮上下文记忆
  • 我把埋点测试做成了一条闭环流水线:真机自动验证、自动提 Bug、自动回归复测
  • 【Java SE】异常链
  • 【PolarCTF】铁子,来一道
  • OpenCVSharp:使用MOG进行运动物体识别
  • 别再把大模型比作马:Agent与Harness的底层工程真相
  • 前言:AI 编程的时代来了
  • Cloud Agent 开发笔记(3):Web 交互与数据持久化
  • MacOS 安装Seismic Unix
  • 洛谷 P1007 独木桥
  • Claude Code 上下文分片技巧:突破超长代码库读取限制隐藏方案
  • MyBatis 会话与事务管理深度解析:从 SqlSession 到事务隔离级别的完整指南
  • 【开源】手把手教你搭建本地IT求职面经分享平台 | Next.js + Supabase + Vercel + Cloudflare 全栈项目,国内访问友好,零成本上线
  • 激活函数的发展历程#
  • 询优化器<1>查询重写 / 逻辑优化
  • 整个过程没有引入新的线程
  • XCPC 2026 WEEK 14
  • Java毕设选题推荐:基于 SpringBoot 的剧本杀门店预约管理平台的设计与实现 基于 SpringBoot 的沉浸式剧本杀服务系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 【机器学习入门】从零到一入门机器学习
  • 合租守则第17条