<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>数据清洗 on 老张开工了</title>
    <link>/%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97/</link>
    <description>Recent content in 数据清洗 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 05 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>数据转换（Transform）：清洗与加工</title>
      <link>/posts/2026/04/etl-transform/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/04/etl-transform/</guid>
      <description>Transform：ETL 的核心环节 如果说抽取是&amp;quot;采购食材&amp;quot;，加载是&amp;quot;摆盘上桌&amp;quot;，那么转换就是整个 ETL 流程中的&amp;quot;烹饪&amp;quot;环节。这也是数据工程师投入精力最多、代码量最大的部分。&#xA;原始数据通常充满了各种问题：字段缺失、格式不统一、存在重复记录、数值异常等等。转换环节的目标就是把这些&amp;quot;脏数据&amp;quot;变成干净、一致、可分析的高质量数据。毫不夸张地说，一个 ETL 流程的质量高低，几乎完全取决于转换环节做得怎么样。&#xA;常见的数据质量问题 在实际项目中，我们经常遇到以下几类数据质量问题：&#xA;缺失值 数据集中某些字段为空，这是最常见的问题。缺失的原因可能是源系统没有采集到、传输过程中丢失、或者该字段本身就不适用。&#xA;重复记录 同一行数据在数据集中出现了多次，通常是因为源系统没有正确的唯一约束、多次导入未去重、或者数据合并时出现了重复。&#xA;异常值 数据值明显超出正常范围。例如，年龄字段出现 200 岁、订单金额为负数、温度字段出现 9999 等。异常值可能是录入错误，也可能是正常但罕见的业务场景。&#xA;格式不一致 同一类型的数据使用了不同的表示方式。例如日期字段有的用&amp;quot;2026-04-05&amp;quot;，有的用&amp;quot;2026/04/05&amp;quot;，还有的用&amp;quot;05/04/2026&amp;quot;；电话号码有的带国家区号，有的不带。&#xA;问题类型 示例 原因 影响 缺失值 email 列为 NULL 未采集、未必填 统计分析偏差 重复记录 同一订单出现 2 次 重复导入 汇总数据翻倍 异常值 年龄=500 录入错误 平均值失真 格式不一致 日期格式混杂 多源合并 解析失败 逻辑矛盾 下单日期 &amp;gt; 发货日期 业务约束违反 数据不可信 使用 Pandas 进行数据清洗 Pandas 是 Python 生态中最强大的数据处理库，也是 ETL 转换环节的首选工具。&#xA;缺失值处理 import pandas as pd import numpy as np # 加载原始数据 df = pd.</description>
    </item>
    <item>
      <title>数据清洗与预处理</title>
      <link>/posts/2025/01/data-cleaning/</link>
      <pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/data-cleaning/</guid>
      <description>数据分析圈有一句老话：数据清洗占了数据分析工作量的 80%。这不是夸张。在实际项目中，你拿到的原始数据几乎总是有问题的——缺失值、异常值、重复记录、格式不统一、噪声数据……如果不在分析之前把这些坑填平，后面的建模和可视化都会建立在沙地上。&#xA;本文是进阶篇的第一篇，我们会系统地讲解数据清洗与预处理的完整流程，每步都配有可运行的 Pandas 和 scikit-learn 代码。&#xA;数据质量维度 在动手清洗之前，先建立一套评估数据质量的框架。通常从四个维度衡量：&#xA;维度 含义 典型问题 准确性 数据是否真实反映客观事实 录入错误、单位混淆 完整性 数据是否有缺失 空值、Null、NaN 一致性 数据格式和单位是否统一 日期格式不一、大小写混用 时效性 数据是否在有效时间范围内 过期数据、时区偏差 理解这些维度能帮你快速定位问题类型，而不是盲目地套用清洗函数。&#xA;环境准备 本文所有代码基于以下依赖：&#xA;import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler # 显示设置 pd.set_option(&amp;#39;display.max_columns&amp;#39;, None) pd.set_option(&amp;#39;display.max_rows&amp;#39;, 20) 我们用一个模拟的客户数据集来演示：&#xA;np.random.seed(42) n = 1000 df = pd.DataFrame({ &amp;#39;id&amp;#39;: range(n), &amp;#39;age&amp;#39;: np.random.randint(18, 70, n).astype(float), &amp;#39;income&amp;#39;: np.</description>
    </item>
  </channel>
</rss>
