京公网安备 11010802034615号
经营许可证编号:京B2-20210330
数值型数据的探索分析
数据分析过程中,往往需要对数据作基本的探索性分析,查看数据是否存在问题,如缺失值数量、是否存在明显的异常值、数据是如何分布的、数据的集中趋势和离散趋势等。
探索性分析一般包括三大部分,即数据的分布情况、数据的集中与离散趋势和数据的分布形态:
首先来看看关于数据分布情况的探索性分析。一般统计中通过5数就可以大致了解数据的分布,他们是最小值、下四分位数、中位数、上四分位数和最大值。
其次看看数据的集中趋势和离散趋势,通过集中趋势可以了解数据的中心值或代表值,通过离散趋势可以了解数据远离中心的程度。关于集中趋势,一般可使用均值、众数、中位数来衡量,离散趋势一般通过标准差、极差和四分位差来体现。
最后看看数据的分布形态,数据的分布形态无非是相比于正态分布而言,即偏度和峰度。偏度是数据分布形态呈现左偏或右偏;峰度是数据分布形态呈现尖瘦或矮胖。对于偏度和峰度需要说明的是:若偏度=0,则无偏;若偏度>0,则有偏;若偏度<0,则左偏;若峰度=0,则陡峭程度与正态分布一致;如峰度>0,则分布陡峭;若峰度<0,则分布平缓。
下面从定量和定性的角度看观察数据的探索性分析过程:
自定义函数describe_statistics,函数返回变量的观测数目、缺失值数目、最小值、下四分位数、中位数、上四分位数、最大值、均值、众数、标准差、极差、四分位差、偏度和峰度。这里的自定义函数返回结果类似于SAS的输出结果形态:
```{r}
describe_statistics <- function(x){
options(digits = 3)
require(timeDate);
N = length(x);
Nmiss = sum(is.na(x));
Min = min(x, na.rm = TRUE);
Q1 = quantile(x, probs = 0.25, na.rm = TRUE);
Median = median(x, na.rm = TRUE);
Q3 = quantile(x, probs = 0.75, na.rm = TRUE);
Max = max(x, na.rm = TRUE);
Mean = mean(x, na.rm = TRUE);
Mode = as.numeric(names(table(x)))[which.max(table(x))];
Sd = sd(x, na.rm = TRUE);
Range = abs(diff(range(x)));
QRange = IQR(x, na.rm = TRUE);
Skewness = skewness(x, na.rm = TRUE);
Kurtosis = kurtosis(x, na.rm = TRUE);
#返回函数结果
return(data.frame(N = N, Nmiss = Nmiss, Min = Min, Q1 = Q1, Median = Median, Q3 = Q3, Max = Max, Mean = Mean, Mode = Mode, Sd = Sd, Range = Range, QRange = QRange, Skewness = Skewness, Kurtosis = Kurtosis))
}
```
下面我们就用这个自定义函数来测试一下,通过上面的这些统计量值来探索数据分布、集中趋势、离散趋势和分布形态。由于本文讲解的是数值型数据的探索分析,故需要将数据框中的数值型数据挑选出来,仍然自定义函数,返回数据框中所有数值型数据的字段:
```{r}
Value_Variables <- function(df){
Vars <- names(df)[sapply(df,class) == 'integer' | sapply(df,class) == 'numeric']
return(Vars)
}
```
以R中自带的iris数据集测试:
```{r}
vars <- Value_Variables(iris)
res <- sapply(iris[,vars], describe_statistics)
res
```
上面的结果呈现了鸢尾花四个数值型变量的探索性分析。
以C50包中的churnTrain数据集测试:
```{r}
library(C50)
data(churn)
vars <- Value_Variables(churnTrain)
res <- sapply(churnTrain[,vars], describe_statistics)
res
```
很显然,当变量很多时,这样的返回结果让人看的很难受,如要使输出结果便读的话,可以将返回结果转置:
```{r}
t(res)
```
这会结果要比较整齐,好看。
以上是从定量的角度来探索数据的分布、集中趋势、离散趋势和分布形态,下面我们简单介绍一下定性的方法。
从定性角度,即通过可视化来进行数据的探索性分析,强烈推荐使用GGally包中的ggpairs()函数,该函数将绘制两两变量的相关系数、散点图,同时也绘制出单变量的密度分布图:
```{r}
library(GGally)
vars <- Value_Variables(iris)
ggpairs(iris[,vars])
```
上图不仅仅反映了数据的分布情况、还得出两两变量间的散点图和相关系数,可为下一步分析做铺垫。
数据的探索性分析过程中,通过定量和定性方法的搭配,可使分析者快速的了解数据的结构、分布及内在关系。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
CDA数据分析师 出品 作者:李诗怡 一、数据分析四大思维 1. 对比思维:没有对比就没有分析 核心观点:单独一个数字没有意义,有 ...
2026-10-05Kimball 是方法,星型模型是它产出的形状。 很多人把"Kimball vs 星型模型"当成一道选择题——这本身就是个误会:Kimball 是动词 ...
2026-10-05写在开头 老板在微信上甩来一句: "帮我看下为什么销量跌了。" ” 你回工位,打开 SQL,开始写。查订单表、拉近三个月、按 ...
2026-10-03CDA数据分析师 出品 作者:李诗怡 1. 事实表 vs 维度表 对比维度 事实表 维度表 核心问题 记录“业务发生了什么事” 描述 ...
2026-10-02做数据聚合时,PySpark的groupBy()确实能完成统计,这也是它的本职工作。但它有一个根本性局限:每一组数据,最终只能返回一行 ...
2026-10-01热力地图是数据可视化中极具辨识度与实用性的空间分析图表,结合地理空间维度与数据密度特征,通过颜色深浅、色阶渐变直观展示数 ...
2026-09-30 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-09-30同样是“银行数据岗”,在国有大行总行数据中心、在一家城商行的零售部、在银行系金融科技子公司、在保险公司,工作内容、成长节 ...
2026-09-29在数据分析与统计学研究中,数据往往不是独立存在的,不同变量之间普遍存在相互关联、相互影响的关系。相关性统计分析是挖掘变量 ...
2026-09-29 导读:大多数人只把 dataclasses 当成偷懒工具,用来少写 __init__、__repr__ 这类魔法方法。但它的能力远不止于此。本文带 ...
2026-09-29 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-09-29在MySQL数据库运维与业务开发中,行业普遍存在“数据达到千万级就必须分表”的说法。但在实际生产环境中,千万条数据并不是强制 ...
2026-09-28CDA数据分析师 出品 作者:李诗怡 1. 5W1H 分析法 定义:经典系统性思维框架,通过六个核心维度对问题进行全方位拆解与剖析,确 ...
2026-09-28 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-09-28CDA数据分析师 出品 作者:李诗怡 1. 用户标签体系 定义: 通过一系列高度精炼的特征标识,对用户属性、行为与偏好进行量化刻画 ...
2026-09-24Pandas是Python生态中用于表格数据处理的核心库,广泛应用于数据清洗、统计运算、报表输出、数据分析建模等场景。在处理极大数值 ...
2026-09-24随着数字经济快速发展,数据已成为核心生产要素,各行各业的业务沉淀、用户行为、设备运行、市场交易均产生海量数据。数据处理作 ...
2026-09-24 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-09-24在时序数据分析中,大部分业务数据并非持续平稳变化,而是会在某些时间节点出现突然抬升、断崖下跌、趋势反转、波动异变等现象, ...
2026-09-23在统计学与数据分析中,研究多组数据差异最常用的方法为单因素方差分析与事后多重比较。很多数据分析初学者容易混淆两者功能,认 ...
2026-09-23