Power Query数据清洗实战:别再手动删行删列了,这几个隐藏功能效率翻倍

张开发
2026/4/21 17:03:43 15 分钟阅读

分享文章

Power Query数据清洗实战:别再手动删行删列了,这几个隐藏功能效率翻倍
Power Query数据清洗实战别再手动删行删列了这几个隐藏功能效率翻倍每次打开从业务系统导出的Excel报表时那些多余的表头、混乱的合并单元格和随机出现的空行是否让你头疼作为每天与数据打交道的分析师我深知手工清理数据的痛苦——不仅耗时费力还容易出错。直到深度掌握了Power Query的几项核心数据清洗功能才真正体会到什么叫降维打击。本文将带你用真实案例拆解如何组合使用删除行、填充和替换值功能把杂乱数据快速变成标准表格。1. 从混乱到规范删除行的进阶用法面对包含多余表头和注释的原始数据多数人第一反应是手动删除行。但Power Query的删除行功能远不止选中-右键-删除这么简单。1.1 精准清除干扰行当处理系统导出的报表时前两行往往是公司Logo和导出日期真正的数据从第3行开始。传统做法是手动选中删除但下次数据更新时又得重复操作。用Power Query只需一步 Table.Skip(源, 2) // 跳过前2行保留后续内容更智能的做法是结合条件删除。比如一份销售数据中每隔5行就有一个分页小计需要清除原始行内容处理方式分页小计(1-100)删除间隔行实际销售记录保留...... Table.AlternateRows(源, 1, 3, 1) // 从第1行开始每隔3行保留1行1.2 动态处理数据尾部财务系统导出的数据末尾常带有合计行和页码。用删除最后几行功能时如果每次导出的行数不固定怎么办可以先用Table.RowCount获取总行数 let 总行数 Table.RowCount(源), 保留行数 总行数 - 3 // 假设最后3行是汇总 in Table.FirstN(源, 保留行数)提示处理银行流水等数据时先用Table.SelectRows筛选出有效行会更可靠2. 填充功能的妙用拯救合并单元格灾难合并单元格是Excel报表的常见设计但却是数据分析的噩梦。当这样的数据进入Power Query时会出现大量null值。传统的向下填充只能处理简单情况这些技巧能解决更复杂场景2.1 多列联动填充当省份-城市-区域三级合并单元格需要同时填充时先对省份列执行向下填充添加自定义列判断城市列是否为空 if [城市] null then 待填充 else [城市]筛选出待填充行用Table.ReplaceValue批量替换2.2 条件填充替代值库存报表中部分商品名称显示为同上。处理步骤添加索引列标记原始行号创建辅助列识别同上 if [商品名称] 同上 then null else [商品名称]对辅助列执行向下填充用Table.Join合并回原始表3. 替换值的隐藏技巧不只是简单的字符替换系统导出的数据常包含需要统一清洗的内容比如日期格式不一致、产品编码版本号需要更新等。3.1 正则表达式替换当需要将2023年Q1改为2023-Q1格式时 Table.ReplaceValue( 源, each [时期], each Text.Replace([时期], 年, -), Replacer.ReplaceText, {时期} )更复杂的场景如清理电话号码格式原始数据替换模式结果13800138000(\d{3})(\d{4})(\d{4})138-0013-8000138-00138000\D138001380003.2 基于参照表的批量替换产品名称变更时可以维护一个映射表 Table.ReplaceValue( 源, each [产品], each 映射表{[旧名称[产品]]}[新名称], Replacer.ReplaceValue, {产品} )4. 组合拳实战处理真实业务数据某电商促销活动数据清洗案例删除多余行前3行是活动说明每隔20行有分页统计末尾2行是总计填充合并单元格活动分会场名称商品分类层级促销时间段统一数据格式价格字段去除¥符号日期统一为YYYY-MM-DD商品SKU去除多余空格完整处理流程代码示例let 源 Excel.CurrentWorkbook(){[Name原始数据]}[Content], 去表头 Table.Skip(源, 3), 去分页 Table.AlternateRows(去表头, 0, 19, 19), 去总计 Table.RemoveLastN(去分页, 2), 填充会场 Table.FillDown(去总计,{分会场}), 清理价格 Table.TransformColumns(填充会场, { 价格, each Text.Replace(_, ¥, ), type number }), 标准化日期 Table.TransformColumns(清理价格, { 下单时间, each DateTime.From(_), type datetime }) in 标准化日期注意实际处理时应分步骤验证每步结果可使用Table.View函数创建中间检查点5. 效率提升的终极心法经过上百份报表的实战我总结出三个关键原则操作可逆每个重要步骤都保留元数据或创建检查点模式识别建立常见问题的标准处理流程库参数化处理对行数、关键词等变量使用参数代替固定值比如创建一个动态处理模板(删除前几行 as number, 删除后几行 as number, 填充列 as list) let 源 Excel.CurrentWorkbook(){[Name原始数据]}[Content], 去表头 Table.Skip(源, 删除前几行), 去页脚 Table.RemoveLastN(去表头, 删除后几行), 填充操作 Table.FillDown(去页脚, 填充列) in 填充操作把这个函数保存为查询以后处理同类报表时只需输入参数即可。

更多文章