第二章 数据描述与统计指标
拿到一堆原始数据,就像面对一堆杂乱的零件——你得先搞清楚每个零件的样子、功能,才能组装出有用的机器。数据描述与统计指标就是这样的“工具”:通过预处理清洗数据、用统计量刻画特征、靠可视化呈现规律,让我们从混沌的数据中找到秩序,读懂数据的"脾气"。
一、数据预处理
原始数据往往带着“瑕疵”——缺失值、错误值、格式混乱……直接用这些数据建模,就像用变质的食材做饭,结果一定糟糕。数据预处理就是给数据“体检”(发现问题)和“整容”(修复问题),让它适合后续分析。
1. 数据预处理的核心目标:提升数据质量
数据质量的好坏,看六个标准:
- 完整性:没有缺失值,所有必要数据都存在;
- 一致性:同一指标在不同数据源中定义一致(如“年龄”在A表是“周岁”,在B表也应如此);
- 准确性:数据真实反映实际情况(如“身高180米”显然错误);
- 可靠性:多次测量结果稳定(如同一用户的体重数据不应一天内从50kg跳到100kg);
- 可用性:数据格式适合分析(如日期格式统一为“YYYY-MM-DD”);
- 时效性:数据能反映当前状态(如用5年前的用户偏好数据做推荐,结果必然不准)。
预处理的所有步骤,都是为了让数据更接近这六个标准。
2. 数据清洗:给数据“挑错”和“改错”
数据清洗是预处理的核心,主要解决两类问题:缺失值和噪声。
缺失值就像拼图少了一块——可能是采集时漏掉了(如用户没填年龄),也可能是数据本身不存在(如未婚者的“配偶年龄”)。处理方法取决于缺失比例和数据特点:
-
缺失比例低(<5%):
- 数值型数据:用均值(如“身高”用平均身高)、中位数(如“收入”用中位数,避免异常值影响)填充;
- 分类型数据:用众数(如“性别”用出现次数最多的“男”)或“未知”标签填充;
- 进阶方法:用机器学习算法(如KNN)根据相似样本预测缺失值(如用同年龄段、同职业用户的消费数据预测某用户的缺失消费值)。
-
缺失比例高(>30%):
直接删除该字段(如某问卷中“月收入”90%用户未填写,这个字段已无分析价值)。 -
关键原则:不要盲目填充!如果缺失是“有规律的”(如低收入用户不愿填收入),强行填充会引入偏差,此时需单独标记缺失组分析。
(2)噪声处理:数据里的“杂音”怎么消?
噪声是数据中的“异常值”或“错误值”(如“年龄=-5”“体温300℃”),会干扰分析结果,常见处理方法有:
-
分箱(Binning):把数据分到多个区间(“箱子”),用箱子的均值/中位数替换原始值,平滑噪声。
- 例:将“年龄”分为[0-18]、[19-30]、[31-50]等箱,用“29”替换[19-30]箱中的异常值“300”,避免极端值影响。
-
回归:用模型拟合数据,用预测值修正异常值。
- 例:拟合“体重-身高”线性回归模型,若某人体重10kg但身高180cm(远低于预测值),用模型预测的65kg替换。
-
离群点检测:主动找出异常值,再决定删除或修正。
- 统计方法:用Z分数(超过±3视为异常)、IQR(超过四分位距1.5倍视为异常);
- 算法方法:用K近邻(与邻居差距太大的点)、LOF密度检测(密度远低于周围的点)。
- 例:电商交易中,某用户单次消费100万(远超平均的1000元),经检测是输入错误(多写了一个零),修正为10万。
-
主成分分析(PCA):通过降维过滤噪声——保留数据的主要特征(信号),丢弃次要成分(噪声)。
- 例:图像数据中,PCA能过滤像素噪声,保留主要轮廓。
3. 数据集成:把“零散数据”拼成“完整拼图”
现实中的数据往往来自多个源头(如电商的用户表、订单表、商品表),数据集成就是把这些零散数据“拼”起来,形成完整的数据集。
-
核心挑战:
- 实体识别:不同表中的“同一事物”可能有不同名称(如A表“用户ID”和B表“客户编号”指同一用户);
- 冗余处理:不同表中的重复字段(如A表和B表都有“用户手机号”)需去重,避免信息重复。
-
操作方法:
- 用“主键”关联表(如用“用户ID”将用户表和订单表连接);
- 统一字段格式(如将“性别”的“男/女”“1/0”统一为“男/女”)。
4. 数据归约:给数据“减肥”,保留精华
数据太多(如100万条记录、1000个特征)会拖慢分析速度,数据归约就是在不损失关键信息的前提下“瘦身”:
-
维度归约:减少特征数量(如从1000个特征减到100个)。
- 主成分分析(PCA):将相关特征合并为少数“主成分”(如用“综合成绩”代替“语文、数学、英语”成绩);
- 属性选择:删除无关特征(如用“相关性分析”删除与目标无关的字段)。
-
数值归约:用更简洁的形式表示数据。
- 抽样:用部分数据代表整体(如从100万用户中抽1万样本分析);
- 直方图:用区间频数代替原始数据(如用“20-30岁:500人”代替500个具体年龄)。
5. 数据变换:让数据“标准化”,便于比较
不同特征的“单位”和“范围”可能差异很大(如“年龄”是0-120,“收入”是0-100万),直接分析会被“大数值”带偏(如KNN算法中,收入的权重会远大于年龄)。数据变换就是消除这种差异:
-
规范化(归一化):将数据映射到固定区间(如[0,1])。
- 最小-最大规范化:xnorm=x−xminxmax−xminx_{norm} = \frac{x - x_{min}}{x_{max} - x_{min}}xnorm=xmax−xminx−xmin
例:将“收入”从[1万, 10万]映射到[0,1],则5万对应(5−1)/(10−1)=0.44(5-1)/(10-1)=0.44(5−1)/(10−1)=0.44。
- 最小-最大规范化:xnorm=x−xminxmax−xminx_{norm} = \frac{x - x_{min}}{x_{max} - x_{min}}xnorm=xmax−xminx−xmin
-
标准化(Z分数):将数据转化为“均值为0,标准差为1”的分布。
- 公式:xstd=x−xˉsx_{std} = \frac{x - \bar{x}}{s}xstd=sx−xˉ(xˉ\bar{x}xˉ是均值,sss是标准差)
- 例:某班成绩均值80,标准差10,則90分的Z分数为(90−80)/10=1(90-80)/10=1(90−80)/10=1(比均值高1个标准差)。
-
离散化:将连续数据分成离散类别(如“年龄”→“少年/青年/中年/老年”)。
- 分箱离散化:将“收入”分为[0-5万)、[5-10万)等区间;
- 聚类离散化:用K-means将数据自动分成若干簇(如将用户消费行为分为“低/中/高”三类)。
二、数据属性
数据属性是数据的“基本特征”——就像人有“性别”“年龄”,数据也有不同类型,了解类型才能选对分析方法。
1. 按数据类型分:标称、序数、数值
(1)标称属性:“分类但无顺序”
值是符号或类别,之间没有大小关系。
- 例:颜色(红/绿/蓝)、性别(男/女)、职业(教师/医生)。
- 分析方式:统计频数(如“男性占比60%”),不能做加减乘除。
(2)序数属性:“有顺序但无距离”
值有先后顺序,但差值无实际意义。
- 例:成绩等级(优/良/中/差)、满意度(1星-5星)、学历(小学/初中/高中)。
- 特点:“优>良”成立,但“优-良=1”无意义(不能说优比良好1个单位)。
(3)数值属性:“可量化,有数学意义”
可分为“区间标度”和“比率标度”:
- 区间标度:有单位,零点是人为规定的,不能做比率运算。
- 例:温度(℃)——0℃不代表“没有温度”,20℃也不是10℃的2倍;年份(2020年不是2010年的2倍)。
- 比率标度:有自然零点(表示“没有”),可做比率运算。
- 例:身高(0cm表示没有高度,180cm是90cm的2倍);体重、收入、时间(10小时是5小时的2倍)。
2. 按取值范围分:离散与连续
- 离散属性:取值有限且可枚举(通常是整数)。
- 例:学生人数(1班30人)、骰子点数(1-6)。
- 连续属性:取值无限且连续(理论上可取任意值)。
- 例:时间(1.5小时)、速度(60.5km/h)。
三、数据描述性统计:用“数字”给数据“画像”
拿到清洗好的数据,下一步是用统计量“刻画”它的特征——就像用身高、体重描述人的体型,我们用集中趋势、离散程度、分布形态描述数据的“长相”。
1. 集中趋势:数据“扎堆”在哪里?
集中趋势反映数据的“中心位置”,常用三个指标:
-
均值(Mean):所有数据的平均值,xˉ=1n∑i=1nxi\bar{x} = \frac{1}{n}\sum_{i=1}^n x_ixˉ=n1∑i=1nxi。
- 例:5个学生成绩80,85,90,95,100,均值=90。
- 优点:利用所有数据信息,反应灵敏;
- 缺点:受异常值影响大(如加入一个成绩200,均值变为110,不再代表多数人水平)。
-
中位数(Median):排序后中间的数(奇数个取中间,偶数个取中间两数平均)。
- 例:成绩80,85,90,95,100的中位数=90;80,85,90,95的中位数=(85+90)/2=87.5。
- 优点:不受异常值影响,稳健性好;
- 适用场景:描述偏态分布数据(如收入,多数人低,少数人极高,中位数更能代表“普遍水平”)。
-
众数(Mode):出现次数最多的值。
- 例:数据80,85,85,90,95的众数=85。
- 优点:可用于分类型数据(如“性别”的众数是“男”);
- 缺点:可能不存在(所有值出现次数相同)或有多个(如85和90都出现2次)。
2. 离散程度:数据“ spread”得有多开?
离散程度反映数据的“分散度”——同样是均值90的两个班级,一个班成绩集中在85-95,一个班在60-120,差异很大。
-
极差(Range):最大值-最小值,R=xmax−xminR = x_{max} - x_{min}R=xmax−xmin。
- 例:成绩80,85,90,95,100的极差=20。
- 优点:计算简单;
- 缺点:只看两端,忽略中间数据分布(如80,90,90,90,100和80,85,90,95,100的极差相同,但分散度不同)。
-
方差(Variance):各数据与均值差的平方的平均值,s2=1n−1∑i=1n(xi−xˉ)2s^2 = \frac{1}{n-1}\sum_{i=1}^n (x_i - \bar{x})^2s2=n−11∑i=1n(xi−xˉ)2。
- 例:成绩80,85,90,95,100的方差=((80-90)²+…+(100-90)²)/(5-1)=125。
- 意义:方差越大,数据越分散。
-
标准差(Standard Deviation):方差的平方根,s=s2s = \sqrt{s^2}s=s2。
- 例:上述成绩的标准差=√125≈11.18。
- 优点:单位与原始数据一致(成绩的标准差单位是“分”),更直观。
3. 分布形态:数据“长”得对称吗?陡峭吗?
(1)缺失值处理:数据“缺了一块”怎么办? 
-
偏度(Skewness):衡量分布是否对称。
- 偏度=0:对称分布(如正态分布,左右对称);
- 偏度>0:右偏(正偏)——右侧尾巴长,多数数据集中在左侧(如收入,多数人低,少数人极高);
- 偏度<0:左偏(负偏)——左侧尾巴长,多数数据集中在右侧(如考试成绩,多数人高分,少数人极低)。

-
峰度(Kurtosis):衡量分布的陡峭程度。
- 峰度=3:正态分布(中等陡峭);
- 峰度>3:尖峰分布——数据集中在均值附近,尾部较厚(如股票收益率,多数小波动,少数极端涨跌);
- 峰度<3:平峰分布——数据分散,峰部平缓(如均匀分布)。
四、数据可视化:让数据“说话”的图像语言
数字太抽象,图像更直观——可视化就是把统计量转化为图形,让数据的规律“一眼可见”。
1. 常用可视化图表:各有擅长,按需选择

(1)条形图:比大小,看类别差异
- 适用场景:比较不同类别的数值(如不同品牌销量、不同部门人数)。
- 优点:直观对比大小,类别清晰;
- 注意:类别过多时(如50个品牌),条形会挤在一起,建议合并或用其他图表。
- 例:对比A、B、C三个品牌的月销量,A柱高3000,B柱高2000,C柱高1500,一眼看出A销量最高。

(2)饼图:看占比,晓全局
-
适用场景:展示各部分占总体的比例(如市场份额、部门人数占比)。
-
优点:直观呈现“部分与整体”关系;
-
缺点:类别超过5个时,扇形太小难以区分,且无法比较不同总体的比例(如“甲公司A产品占比30%”和“乙公司A产品占比30%”,无法比较实际销量)。
-
例:某公司利润来源中,国内业务占60%,海外占30%,其他占10%,饼图中国内业务的扇形最大。

(3)箱型图:展分布,抓异常
- 适用场景:展示数据的分布特征(中位数、四分位数、异常值),尤其适合比较多组数据。
- 图表构成:
- 箱子:中间线是中位数,上下边是上/下四分位数(包含50%数据);
- 须线:延伸至1.5倍四分位距内的最大值/最小值;
- 圆点:超出须线的异常值。
- 例:比较两个班级的成绩箱型图,班A的箱子更窄(成绩集中),无异常值;班B的箱子宽(成绩分散),有3个异常低分。

(4)直方图:看分布,找规律
- 适用场景:展示连续数据的分布形态(如身高、成绩、时间)。
- 做法:将数据分成若干区间( bins),用柱子高度表示区间内的频数。
- 例:学生成绩直方图中,50-60分的柱子矮,80-90分的柱子最高,说明多数人成绩集中在80-90分。

(5)折线图:追趋势,看变化
-
适用场景:展示数据随时间或连续变量的变化趋势(如销售额随月份变化、温度随海拔变化)。
-
优点:清晰呈现增减趋势、拐点(如销量在6月突然上升)。
-
例:某产品全年销量折线图,1-2月下降,3-6月上升,7-12月平稳,可直观发现旺季在3-6月。

(6)散点图:探关联,找关系
-
适用场景:观察两个变量的相关性(如身高与体重、广告投入与销量)。
-
模式解读:
- 点呈从左下到右上的趋势:正相关(如广告投入越多,销量越高);
- 点呈从左上到右下的趋势:负相关(如价格越高,销量越低);
- 点无规律:无明显相关。
-
例:广告投入(x轴)与销量(y轴)的散点图呈正相关,可初步判断“多投广告可能提升销量”。

(7)气泡图:加维度,展更多信息
- 适用场景:在散点图基础上,用气泡大小表示第三个变量(如城市的人口、GDP、面积)。
- 例:x轴是城市人口,y轴是GDP,气泡大小是面积——能同时展示三个指标的关系,如“人口多、GDP高的城市,面积也较大”。
2. 可视化工具:Python的“三板斧”
- Matplotlib:Python可视化的“基石”,支持绘制各种基础图表(条形图、折线图等),灵活性高,但代码稍繁琐;
- Seaborn:基于Matplotlib的“升级版”,默认样式更美观,支持复杂图表(如热力图、小提琴图),一行代码就能画出专业图表;
- Pandas:数据处理库,内置简单可视化功能(如
df.plot()),适合快速预览数据分布。
总结:数据描述是“分析的起点”,不是“终点”
数据预处理让数据“可用”,描述性统计让数据“可懂”,可视化让数据“可见”——这三步是数据分析的“基本功”。但要记住:描述不是目的,而是为了后续的深入分析(如建模、预测)打基础。
就像医生先测体温、血压(描述性统计),再结合症状诊断病因(深入分析),我们也需要通过这些工具,从数据中找到问题、提出假设,最终解决实际问题。
1298

被折叠的 条评论
为什么被折叠?



