【报表高效制作】:用Power Query提升数据呈现,专家级数据处理技巧大公开
发布时间: 2024-12-14 07:26:27 阅读量: 3 订阅数: 2
数据分析工具-PowerBI学习文档和案例资料
5星 · 资源好评率100%
![【报表高效制作】:用Power Query提升数据呈现,专家级数据处理技巧大公开](https://media.licdn.com/dms/image/C4E12AQEMZqRdvvZ23Q/article-cover_image-shrink_600_2000/0/1601483108388?e=2147483647&v=beta&t=ZuBF7zbm5mBj6ezpXAdEJQKBm7X4VxAfkg84nHZmrFY)
参考资源链接:[Power Query教程:从入门到深度开发](https://wenku.csdn.net/doc/6412b75bbe7fbd1778d4a016?spm=1055.2635.3001.10343)
# 1. Power Query简介与核心功能
## 简介
Power Query是Microsoft推出的一个数据连接和数据准备工具,它是Excel和Power BI的重要组成部分。通过Power Query,用户可以轻松地连接、合并、清洗和转换来自不同源的数据,为数据分析和报告提供准确、可靠的输入数据。
## 核心功能
### 数据连接与导入
Power Query提供了强大的数据源连接功能,包括但不限于CSV、Excel、数据库和网页数据等。用户可以根据需求选择数据源并将其导入到Power Query中进行预处理。
### 数据预处理
预处理是数据分析过程中的关键步骤。Power Query支持数据筛选、排序、分组聚合等操作,并提供了缺失值处理、异常值处理以及数据类型转换等功能,以确保数据质量。
### 数据合并与重塑
数据合并是将多个数据表根据关键字段进行关联,而数据重塑则包括数据的透视、展开和重构等操作,为后续的数据分析工作提供了便利。
在了解Power Query的基础知识和核心功能后,我们将进一步深入到数据预处理技巧中,看看如何利用Power Query简化和优化我们的数据工作流程。
# 2. ```
# 第二章:数据预处理技巧
## 2.1 数据连接与导入
### 2.1.1 连接不同数据源
在数据处理的初期阶段,连接不同数据源是一项基本而重要的任务。Power Query 允许用户从多种类型的数据源导入数据,比如 Excel、CSV、数据库和 Web 数据。在连接过程中,选择正确的数据源类型至关重要,因为这将影响后续数据处理的效率和质量。
#### 实际操作
- 打开 Power Query 编辑器。
- 点击“主页”选项卡下的“从其他源”或者“从数据库”按钮,根据实际需要选择合适的数据源类型。
- 输入连接所需的所有参数,例如服务器地址、数据库名、认证信息等。
#### 代码示例
```m
let
// 连接到 SQL Server 数据库
Source = Sql.Database("ServerName", "DatabaseName", [Query="SELECT * FROM TableName"]),
// 选择表的列
SelectedColumns = Table.SelectColumns(Source, {"ColumnName1", "ColumnName2"})
in
SelectedColumns
```
在上述代码块中,首先通过 `Sql.Database` 函数连接到 SQL Server 数据库,并指定要查询的表。然后使用 `Table.SelectColumns` 函数选择需要导入的列。
### 2.1.2 数据源导入的优化策略
导入数据时,应考虑性能优化策略以提升效率。这包括使用查询折叠(Query Folding)来减少数据加载过程中的处理量,以及应用适当的筛选和转换来减少不必要的数据传输。
#### 优化方法
- **查询折叠**: 尽可能在数据源层面进行数据筛选、排序和聚合操作,而不是在数据加载到 Power Query 后。
- **减少数据量**: 避免导入不必要的列和行,只选择与分析相关的数据。
- **延迟加载**: 当不立即需要处理数据时,可以使用延迟加载(Load to)功能,仅将数据加载到缓存中。
#### 代码示例
```m
let
// 从远程数据源获取数据,并应用查询折叠
Source = Sql.Database("ServerName", "DatabaseName", [Query="SELECT * FROM TableName WHERE Condition"]),
// 删除不必要的列
RemovedColumns = Table.RemoveColumns(Source, {"UnnecessaryColumnName"}),
// 仅导入前1000条记录进行测试
FilteredRows = Table.FirstN(RemovedColumns, 1000)
in
FilteredRows
```
上述代码中,通过 `Table.RemoveColumns` 删除了不必要的列,并通过 `Table.FirstN` 减少了数据集的大小。
## 2.2 数据清洗与转换
### 2.2.1 缺失值处理
在数据导入到 Power Query 之后,缺失值处理是下一个重要的步骤。Power Query 提供了多种方法来处理缺失值,包括替换为空字符串、替换为0、使用平均值填充或者删除整行。
#### 实际操作
- 在 Power Query 编辑器中,选择含有缺失值的列。
- 点击“转换”选项卡下的“填充”或者“删除”按钮,根据实际需求选择合适的方法。
#### 代码示例
```m
let
// 从数据源导入数据
Source = Excel.Workbook(File.Contents("C:\path\to\your\file.xlsx"), null, true),
// 删除含有缺失值的行
CleanedRows = Table.DeleteRows(Source{[Item="Sheet1",Kind="Sheet"]}{[Data]}, each List.NonNullCount(_) = 0)
in
CleanedRows
```
在上述代码块中,使用 `Table.DeleteRows` 函数删除了含有缺失值的行。
### 2.2.2 异常值的识别与处理
异常值是数据集中显著偏离其它观测值的那些数据点,它们可能是由于错误或极端情况造成的。在数据清洗过程中,正确识别和处理这些异常值是至关重要的。
#### 实际操作
- 使用标准差、四分位数间距或箱型图等统计方法识别异常值。
- 对于检测到的异常值,根据业务需求选择替换、修改或删除。
#### 代码示例
```m
let
// 加载数据集
Source = Excel.Workbook(File.Contents("C:\path\to\your\file.xlsx"), null, true),
// 计算数值列的描述性统计信息
DescriptiveStats = Table.TransformColumns(Source{[Item="Sheet1",Kind="Sheet"]}{[Data]}, {"ColumnName", each List.Distinct(_)}),
// 定义上下四分位数
Quartiles = Table.Group(DescriptiveStats, {"ColumnName"}, {{"UpperQuartile", each List.Max(_), type number}, {"LowerQuartile", each List.Min(_), type number}}),
// 识别异常值
IsOutlier = List.Zip({List.Generate(() => [Index = 0], each [Index] < Table.ColumnCount(Quartiles), each [Index] + 1), List.Transform(Table.ColumnNames(Quartiles), (each "Outlier"))}),
// 替换异常值为平均值
ReplaceOutliers = Table.ReplaceValue(Source{[Item="Sheet1",Kind="Sheet"]}{[Data]}, each List.Average(_), each List.Median(_), Replacer.ReplaceValue, {"ColumnName"})
in
ReplaceOutliers
```
在这个代码块中,首先使用 `Table.TransformColumns` 计算了列的描述性统计信息。接着通过 `Table.Group` 和 `List.Zip` 方法定义了上下四分位数,并利用 `List.Generate` 遍历数据集中的每个值。最后,使用 `Table.ReplaceValue` 函数将异常值替换为每列的中位数。
### 2.2.3 数据类型转换与规范化
数据类型转换是将数据从一种格式转换为另一种格式的过程,而规范化则是确保数据格式一致性的重要步骤。比如,日期和时
```
0
0