数据摄取、转换与探索性分析全流程解析
立即解锁
发布时间: 2025-08-21 01:26:54 阅读量: 3 订阅数: 18 


Azure数据工程与处理实战指南
# 数据摄取、转换与探索性分析全流程解析
## 1. 数据类型检查与工具介绍
在编程中,为避免运行时异常,可在变量赋值时进行类型检查。例如在 Scala 代码里,若变量 `id` 被定义为 `Int` 类型,当后续代码尝试给该变量赋字符串值时,就会触发编译时异常,代码将无法运行,直至赋给该变量的值与类型匹配。此外,有一款针对 Java 开发者的集成开发环境(IDE)——IntelliJ,它对编写和调试 Java 代码十分有用,且能轻松将 Java 代码转换为 Scala 代码。
## 2. 探索性数据分析(EDA)
### 2.1 EDA 概述
探索性数据分析(EDA)是对数据进行初步调查的过程。理想情况下,进行 EDA 时能检测到数据模式、发现异常,从而获得关于数据源的新见解。例如,找出微软股票上涨最频繁的日期和时间,或者发现演奏吉他场景下 THETA 频率脑电波读数范围相较于其他场景非常高。同时,EDA 也是检验假设和测试假说的有效方法,比如在工作场景中,BETA 频率脑电波读数不应过低,因为低 BETA 读数与白日梦相关,工作时不应出现这种情况。
### 2.2 数据集分析
在进行 EDA 练习之前,先查看以下数据集,它能为待分析的数据提供一些见解。该数据集是按场景分组的脑电波读数统计信息,如下表所示:
| SCENARIO | COUNT | MEAN | STD | MIN | 25% | 50% | 75% | MAX |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Classic... | 506125 | 29.787 | 276.99 | 0.051 | 0.872 | 1.627 | 3.625 | 9986.869 |
| FlipCha... | 580237 | 46.643 | 358.27 | 0.068 | 1.053 | 1.904 | 4.043 | 9979.206 |
| Meditat... | 634740 | 29.620 | 294.67 | 0.065 | 0.88 | 1.924 | 4.526 | 9994.849 |
| MetalMu... | 521134 | 34.959 | 305.42 | 0.031 | 0.83 | 1.671 | 4.351 | 9992.889 |
| Playing... | 685650 | 39.931 | 313.32 | 0.088 | 2.414 | 3.807 | 6.798 | 9987.880 |
| TikTok | 635986 | 15.406 | 165.33 | 0.051 | 0.976 | 1.692 | 3.482 | 9985.135 |
| WorkMee... | 253320 | 10.797 | 60.661 | 0.079 | 0.895 | 1.734 | 3.789 | 9782.769 |
| WorkNoE... | 720159 | 10.363 | 116.18 | 0.022 | 1.029 | 1.861 | 3.64 | 9985.042 |
从这个统计信息中可以发现两个重要问题:一是 MIN 和 MAX 脑电波读数之间差距巨大,这会对 MEAN 值产生很大影响;二是 MEAN(平均值)与三个分布值(25%、50% 和 75%)之间存在较大差距,这表明数据集中存在一些极端值,即离群值。为避免数据倾斜,在后续练习中会移除约 2% 的极端数据。
### 2.3 EDA 转换操作步骤
#### 2.3.1 登录并启动 SQL 池
登录 Azure 门户(https://portal.azure.com),导航到之前创建的 Azure Synapse Analytics 工作区,在概述页面点击“Open Synapse Studio”磁贴中的“Open”链接,进入管理中心,启动专用 SQL 池,再进入开发中心,创建一个新的 SQL 脚本,并执行以下 SQL 语句:
```sql
SELECT COUNT(*) FROM brainwaves.FactREADING
```
#### 2.3.2 统计离群值数量
执行以下 SQL 语法,统计脑电波读数小于 0.274 或大于 392 的记录数量:
```sql
SELECT COUNT(*)
FROM brainwaves.FactREADING
WHERE [VALUE] < 0.274 OR [VALUE] > 392
```
#### 2.3.3 创建离群值表
执行以下 SQL 语法,将离群值数据存入新表 `brainwaves.FactREADINGHighLow` 并统计数量:
```sql
SELECT * INTO brainwaves.FactREADINGHighLow
FROM brainwaves.FactREADING
WHERE [VALUE] < 0.274 OR [VALUE] > 392
SELECT COUNT(*) FROM brainwaves.FactREADINGHighLow
```
#### 2.3.4 删除离群值
执行以下 SQL 语法,从原表中删除离群值并统计剩余记录数量:
```sql
DELETE FROM brainwaves.FactREADING WHERE [VALUE] < 0.274
DELETE FROM brainwaves.FactREADING WHERE [VALUE] > 392
SELECT COUNT(*) FROM brainwaves.FactREADING
```
#### 2.3.5 重新计算统计摘要
执行 SQL 语法重新计算统计摘要,结果如下:
| SCENARIO | COUNT | MEAN | STD | MIN | 25% | 50% | 75% | MAX |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Classical... | 492799 | 9.1424 | 29.76 | 0.274 | 0.892 | 1.634 | 3.539 | 391.850 |
| FlipChart | 565591 | 9.4456 | 33.42 | 0.274 | 1.046 | 1.866 | 3.783 | 391.916 |
| Meditatio... | 611939 | 7.6830 | 27.526 | 0.274 | 0.928 | 1.959 | 4.468 | 391.992 |
| MetalMusi... | 504595 | 10.151 | 31.754 | 0.274 | 0.855 | 1.679 | 4.19 | 391.845 |
| PlayingGu... | 673387 | 11.187 | 31.741 | 0.274 | 2.395 | 3.753 | 6.501 | 391.958 |
| TikTok | 628941 | 7.7538 | 25.975 | 0.274 | 0.984 | 1.693 | 3.447 | 391.945 |
| WorkMeeti... | 248777 | 10.008 | 28.172 | 0.274 | 0.931 | 1.769 | 3.854 | 391.381 |
| WorkNoEma... | 712044 | 6.8522 | 22.656 | 0.274 | 1.047 | 1.876 | 3.648 | 391.934 |
#### 2.3.6 创建频率统计信息表
执行以下 SQL 语法,创建 `[brainwaves].[SCENARIO_FREQUENCY]` 表,可添加 `WHERE` 子句筛选特定场景(如 `SCENARIO = 'TikTok'`):
```sql
CREATE TABLE [brainwaves].[SCENARIO_FREQUENCY]
WITH
(
CLUSTERED COLUMNSTORE INDEX,
DISTRIBUTION = REPLICATE
)
AS
SELECT DISTINCT SCENARIO, FREQUENCY,
AVG([VALUE]) OVER (partition by SCENARIO, FREQUENCY) as AVERAGE,
STDEV([VALUE]) OVER (partition by SCENARIO, FREQUENCY) as STANDARDDEV,
VAR([VALUE]) OVER (partition by SCENARIO, FREQUENCY) as VARIANCE,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY [VALUE])
OVER (partition by SCENARIO, FREQUENCY) as MEDIAN,
SQRT(PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY [VALUE])
OVER (partition by SCENARIO, FREQUENCY)) AS SQUAREROOT,
SQUARE(PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY [VALUE])
OVER (partition by SCENARIO, FREQUENCY)) AS SQUARED
FROM brainwaves.FactREADING
GO
```
#### 2.3.7 导出结果
在结果选项卡中选择“Export Results”下拉菜单项,选择 CSV 格式导出结果,并记录文件存储位置,后续练习会用到。
#### 2.3.8 保存脚本
重命名 SQL 脚本(如 Ch05Ex11),点击“Commit”按钮将笔记本保存到源代码仓库。
### 2.4 脑电波频率与特征关联
每个脑电波频率都与一种特征相关联,具体如下:
- ALPHA = 放松
0
0
复制全文
相关推荐










