数据清洗与转换:使用 Power Query 进行列操作、数据类型转换、筛选排序、删除重复项

在 Power BI 的数据分析流程中,数据清洗与转换往往占据整个项目 60% 以上的时间。原始数据几乎不可能直接用于建模——它们可能包含错误的数据类型、重复的记录、无意义的列、异常值或不符合分析口径的排序方式。Power Query(在 Power BI 中称为“转换数据”编辑器)正是应对这一挑战的核心工具。它提供了一种可重复、可追溯的数据预处理机制:每一次清洗操作都会被记录为步骤,数据源刷新时这些步骤会自动重放,确保分析结果的稳定性和可维护性。本章将聚焦 Power Query 中最基础也最常用的四类操作:列操作、数据类型转换、筛选排序以及删除重复项,帮助你建立一套规范、高效的数据清洗方法论。

Power Query 数据清洗核心操作链路 原始数据源 Excel / CSV / SQL / Web ① 列操作 选择/删除/重命名/拆分 合并/透视/逆透视 ② 数据类型转换 文本/数字/日期/布尔 区域设置/本地化 ③ 筛选排序 条件筛选 多级排序 ④ 删除重复项 基于单列/多列 保留首项/末项 清洗后数据模型 可直接用于建模与可视化 查询步骤面板 1. 源 2. 删除列 3. 更改类型 4. 筛选行 5. 删除重复项 6. 排序 7. 关闭并应用 关键原则 • 每一步操作自动记录为步骤 • 步骤可重命名、删除、调整顺序 • 数据刷新时自动重放所有步骤 • 建议先做列操作再做行操作 • 数据类型转换越早越好 • 删除重复项前确认业务逻辑 • 每一步命名清晰便于维护

核心原理: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)可能导致解析错误,可在“更改类型”时指定区域。

风险提示:数据类型转换不可逆。一旦将文本转换为数字,原始文本格式将丢失。建议在转换前复制一份原始列,或确保源数据可重新获取。另外,当列中包含“1,200”这类带千分位分隔符的文本时,直接转换为整数会失败,需先使用“替换值”功能移除逗号。

筛选与排序:聚焦数据子集

筛选和排序是数据清洗中最频繁的操作。筛选用于保留满足特定条件的行,排序则用于调整数据的展示顺序。Power Query 的筛选功能支持文本、数字、日期等多种条件:文本筛选支持“包含”“开头是”“结尾是”等;数字筛选支持“大于”“小于”“介于”等;日期筛选支持“在之前”“在之后”“在本月”等动态条件。

操作路径:点击列标题右侧的下拉箭头,即可展开筛选菜单。也可以使用“开始” → “筛选行” → “自定义筛选”来设置复杂条件。排序操作同样通过下拉菜单完成,支持多列排序——按住 Shift 键依次点击多个列标题的排序按钮,即可设置排序优先级。需要注意的是,Power Query 中的排序仅影响当前查询的数据展示顺序,不会改变源数据;在后续步骤中,排序结果会保留。

实战技巧:当需要筛选“销售额排名前 10”的记录时,可以先按销售额降序排序,然后使用“保留行” → “保留最前面几行”功能,输入 10 即可。这种方法比手动筛选更高效,且步骤可复用。

删除重复项:保证数据唯一性

重复数据会导致聚合结果虚高、关联关系错乱。Power Query 提供“删除重复项”功能,可以基于单列或多列判断重复。操作路径:选中需要判断重复的列(可多选),点击“开始” → “删除行” → “删除重复项”。Power Query 会保留每组重复值中的第一行,删除其余行。

关键决策点:基于哪些列判断重复。例如,在客户表中,如果“客户ID”是唯一标识,则基于该列删除重复项;如果“客户ID”可能为空,则需要结合“姓名+电话”等多列判断。此外,删除重复项前应确认业务逻辑——某些场景下重复记录可能代表不同的业务事件(如多次购买),此时不应删除,而应保留并添加序号列。

案例拆解:电商订单数据清洗实战

假设你是一名数据分析师,需要从电商平台导出一份包含 10 万行记录的订单明细表,用于分析各品类的销售趋势。原始数据存在以下问题:包含 15 列但只有 8 列与分析相关;订单日期列为文本格式;存在重复订单记录;部分订单金额为负数(退款订单)需要单独处理。

清洗步骤:

  1. 列操作:删除“备注”“内部编码”“物流单号”等 7 列无关字段,仅保留订单号、订单日期、客户ID、品类、数量、单价、金额、订单状态。
  2. 数据类型转换:将“订单日期”从文本转换为日期类型(注意区域设置为“中文(简体)”);将“数量”“单价”“金额”转换为小数类型;将“订单状态”转换为文本。
  3. 筛选:筛选“订单状态”为“已完成”的记录,排除“已取消”和“待付款”订单;筛选“金额”大于 0 的记录,排除退款订单。
  4. 排序:按“订单日期”升序排序,便于后续按时间序列分析。
  5. 删除重复项:基于“订单号”列删除重复项,确保每笔订单只保留一条记录。

结果对比:清洗前数据量为 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 的数据清洗应遵循“先列后行、先类型后筛选、先筛选后去重”的操作顺序。列操作减少数据宽度,行操作减少数据深度,类型转换确保计算正确性,删除重复项保证数据唯一性。每一步操作都应命名清晰,并定期检查“已应用步骤”面板,确保逻辑连贯。掌握这些基础操作后,你将能够应对大多数常见的数据清洗场景,为后续的数据建模和可视化分析打下坚实基础。