数据清洗与转换:使用 Power Query 进行列操作、数据类型转换、筛选排序、删除重复项
在 Power BI 的数据分析流程中,数据清洗与转换往往占据整个项目 60% 以上的时间。原始数据几乎不可能直接用于建模——它们可能包含错误的数据类型、重复的记录、无意义的列、异常值或不符合分析口径的排序方式。Power Query(在 Power BI 中称为“转换数据”编辑器)正是应对这一挑战的核心工具。它提供了一种可重复、可追溯的数据预处理机制:每一次清洗操作都会被记录为步骤,数据源刷新时这些步骤会自动重放,确保分析结果的稳定性和可维护性。本章将聚焦 Power Query 中最基础也最常用的四类操作:列操作、数据类型转换、筛选排序以及删除重复项,帮助你建立一套规范、高效的数据清洗方法论。
核心原理:Power Query 的“步骤式”数据清洗机制
Power Query 的本质是一个数据连接与转换引擎,它采用“步骤式”处理模型。当你对数据执行任何操作——无论是删除一列、更改数据类型还是筛选行——Power Query 都会在后台生成对应的 M 语言代码,并将该操作记录为一个步骤。这些步骤按顺序排列在查询设置的“已应用步骤”面板中,形成一个可追溯、可修改的数据处理流水线。这种机制带来的核心价值在于:可重复性。当源数据更新后,你只需点击“刷新”,Power Query 就会自动执行所有步骤,生成最新的清洗结果,无需手动重复操作。此外,步骤面板允许你随时回退到任意历史节点,修改中间步骤,后续步骤会自动重新计算,这为数据清洗提供了极大的灵活性和容错能力。
列操作:从“瘦身”到“整形”
列操作是数据清洗的第一步,目的是让表格结构符合分析需求。常见的列操作包括:选择列(仅保留需要的列)、删除列(移除无关或敏感字段)、重命名列(统一命名规范)、拆分列(将一列拆分为多列,如将“姓名”拆分为“姓”和“名”)、合并列(将多列合并为一列,如将“年”“月”“日”合并为日期)、透视与逆透视(在宽表和长表之间转换)。
操作路径:在 Power Query 编辑器中,选中目标列后,右键或使用“转换”选项卡下的功能按钮即可完成操作。例如,要拆分“地址”列中的省市区信息,可以选中该列,点击“拆分列” → “按分隔符”,选择“逗号”或自定义分隔符,Power Query 会自动生成多列。对于逆透视操作,选中需要保留的标识列,然后点击“逆透视其他列”,即可将宽表转换为适合分析的长表格式。
| 操作类型 | 适用场景 | 操作路径 | 注意事项 |
|---|---|---|---|
| 选择列 | 数据表包含大量无关字段 | “开始” → “选择列” → 勾选保留列 | 选择后未勾选的列会被隐藏而非删除,需右键“删除” |
| 拆分列 | 复合字段需要拆分为独立维度 | “转换” → “拆分列” → 按分隔符/字符数 | 拆分后注意检查新列的数据类型 |
| 逆透视 | 宽表转长表,便于分组聚合 | 选中标识列 → “逆透视其他列” | 确保标识列能唯一标识每一行 |
| 重命名 | 统一字段命名规范 | 双击列标题或右键重命名 | 建议使用英文或拼音,避免特殊字符 |
数据类型转换:确保数据“表里如一”
数据类型是数据分析的基石。如果“销售额”列被识别为文本类型,那么求和、平均值等聚合操作将无法正确执行。Power Query 支持的数据类型包括:文本、整数、小数、日期、时间、日期时间、布尔值(TRUE/FALSE)等。数据类型转换的核心原则是:越早越好。在数据加载的初期就明确每一列的类型,可以避免后续计算中的隐性错误。
操作流程:选中目标列,点击“开始” → “数据类型”下拉菜单,选择正确的类型。Power Query 会自动检测并转换,如果存在无法转换的值,会在该单元格显示“Error”。此时需要进一步处理,例如使用“替换错误”功能将错误值替换为 null 或默认值。对于日期列,还需注意区域设置——不同地区的日期格式(如 MM/dd/yyyy 与 dd/MM/yyyy)可能导致解析错误,可在“更改类型”时指定区域。
筛选与排序:聚焦数据子集
筛选和排序是数据清洗中最频繁的操作。筛选用于保留满足特定条件的行,排序则用于调整数据的展示顺序。Power Query 的筛选功能支持文本、数字、日期等多种条件:文本筛选支持“包含”“开头是”“结尾是”等;数字筛选支持“大于”“小于”“介于”等;日期筛选支持“在之前”“在之后”“在本月”等动态条件。
操作路径:点击列标题右侧的下拉箭头,即可展开筛选菜单。也可以使用“开始” → “筛选行” → “自定义筛选”来设置复杂条件。排序操作同样通过下拉菜单完成,支持多列排序——按住 Shift 键依次点击多个列标题的排序按钮,即可设置排序优先级。需要注意的是,Power Query 中的排序仅影响当前查询的数据展示顺序,不会改变源数据;在后续步骤中,排序结果会保留。
删除重复项:保证数据唯一性
重复数据会导致聚合结果虚高、关联关系错乱。Power Query 提供“删除重复项”功能,可以基于单列或多列判断重复。操作路径:选中需要判断重复的列(可多选),点击“开始” → “删除行” → “删除重复项”。Power Query 会保留每组重复值中的第一行,删除其余行。
关键决策点:基于哪些列判断重复。例如,在客户表中,如果“客户ID”是唯一标识,则基于该列删除重复项;如果“客户ID”可能为空,则需要结合“姓名+电话”等多列判断。此外,删除重复项前应确认业务逻辑——某些场景下重复记录可能代表不同的业务事件(如多次购买),此时不应删除,而应保留并添加序号列。
案例拆解:电商订单数据清洗实战
假设你是一名数据分析师,需要从电商平台导出一份包含 10 万行记录的订单明细表,用于分析各品类的销售趋势。原始数据存在以下问题:包含 15 列但只有 8 列与分析相关;订单日期列为文本格式;存在重复订单记录;部分订单金额为负数(退款订单)需要单独处理。
清洗步骤:
- 列操作:删除“备注”“内部编码”“物流单号”等 7 列无关字段,仅保留订单号、订单日期、客户ID、品类、数量、单价、金额、订单状态。
- 数据类型转换:将“订单日期”从文本转换为日期类型(注意区域设置为“中文(简体)”);将“数量”“单价”“金额”转换为小数类型;将“订单状态”转换为文本。
- 筛选:筛选“订单状态”为“已完成”的记录,排除“已取消”和“待付款”订单;筛选“金额”大于 0 的记录,排除退款订单。
- 排序:按“订单日期”升序排序,便于后续按时间序列分析。
- 删除重复项:基于“订单号”列删除重复项,确保每笔订单只保留一条记录。
结果对比:清洗前数据量为 100,000 行,清洗后为 82,350 行,减少了约 17.65% 的无效数据。清洗后的数据可直接用于创建“品类销售额趋势图”和“客户购买频次分析”。
复盘经验:本次清洗中,删除重复项是最关键的一步——原始数据中约有 3,200 条重复订单,如果不处理,销售额汇总将虚高约 4%。此外,日期格式的转换需要特别注意区域设置,否则会出现“1/2/2025”被解析为 1 月 2 日还是 2 月 1 日的歧义。
常见误区与总结复盘
在实际操作中,初学者常犯以下错误:误区一:在 Excel 中手动清洗后再导入 Power BI,失去了 Power Query 的自动化能力;误区二:忽略步骤命名,导致后期维护时无法理解每个步骤的意图;误区三:在数据源中直接修改数据,而不是在 Power Query 中处理,破坏了数据可追溯性;误区四:删除重复项时未考虑业务语义,误删了有效数据。
总结本章要点:Power Query 的数据清洗应遵循“先列后行、先类型后筛选、先筛选后去重”的操作顺序。列操作减少数据宽度,行操作减少数据深度,类型转换确保计算正确性,删除重复项保证数据唯一性。每一步操作都应命名清晰,并定期检查“已应用步骤”面板,确保逻辑连贯。掌握这些基础操作后,你将能够应对大多数常见的数据清洗场景,为后续的数据建模和可视化分析打下坚实基础。