<?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%E5%88%86%E6%9E%90%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/</link>
    <description>Recent content in 数据分析从入门到精通 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 24 Jan 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>持续学习路径</title>
      <link>/posts/2025/01/learning-path/</link>
      <pubDate>Fri, 24 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/learning-path/</guid>
      <description>旅程回顾 欢迎来到本系列的最后一篇文章。在过去 24 篇文章中，我们一起走过了从零基础到能够独立完成数据项目的完整旅程。&#xA;基础篇（第 1-6 篇） 你学会了 Python 基础、NumPy、Pandas 和 Matplotlib。这些是数据分析的&amp;quot;手脚&amp;quot;，让你能动手操作数据。&#xA;进阶篇（第 7-12 篇） 你掌握了数据清洗、探索性分析、统计学基础和可视化进阶。你开始能从数据中发现故事。&#xA;高级篇（第 13-18 篇） 你学会了 A/B 测试、机器学习建模、特征工程和模型评估。你具备了用数据预测未来的能力。&#xA;实战篇（第 19-24 篇） 你用完整的项目把前面的知识串联起来：电商分析、用户行为分析、数据管道、大数据、数据产品化，以及本篇的学习路径。&#xA;# 本系列核心技能一览 skills_covered = { &amp;#34;编程基础&amp;#34;: [&amp;#34;Python&amp;#34;, &amp;#34;NumPy&amp;#34;, &amp;#34;Pandas&amp;#34;, &amp;#34;Jupyter&amp;#34;], &amp;#34;数据操作&amp;#34;: [&amp;#34;加载&amp;#34;, &amp;#34;清洗&amp;#34;, &amp;#34;转换&amp;#34;, &amp;#34;合并&amp;#34;, &amp;#34;分组聚合&amp;#34;], &amp;#34;可视化&amp;#34;: [&amp;#34;Matplotlib&amp;#34;, &amp;#34;Seaborn&amp;#34;, &amp;#34;Plotly&amp;#34;, &amp;#34;Streamlit&amp;#34;], &amp;#34;统计分析&amp;#34;: [&amp;#34;描述统计&amp;#34;, &amp;#34;假设检验&amp;#34;, &amp;#34;AB测试&amp;#34;, &amp;#34;回归分析&amp;#34;], &amp;#34;机器学习&amp;#34;: [&amp;#34;Scikit-learn&amp;#34;, &amp;#34;特征工程&amp;#34;, &amp;#34;模型评估&amp;#34;, &amp;#34;调参&amp;#34;], &amp;#34;工程化&amp;#34;: [&amp;#34;ETL管道&amp;#34;, &amp;#34;Airflow&amp;#34;, &amp;#34;PySpark&amp;#34;, &amp;#34;FastAPI&amp;#34;], &amp;#34;产品化&amp;#34;: [&amp;#34;Streamlit仪表盘&amp;#34;, &amp;#34;模型API&amp;#34;, &amp;#34;自动化报告&amp;#34;, &amp;#34;MLOps&amp;#34;], } for category, skills in skills_covered.</description>
    </item>
    <item>
      <title>数据产品化</title>
      <link>/posts/2025/01/data-productization/</link>
      <pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/data-productization/</guid>
      <description>从分析到产品 在前面的文章中，我们做了大量分析工作：清洗数据、可视化趋势、建立模型、挖掘洞察。但这些分析的产出大多是 Jupyter Notebook 或 PDF 报告，业务团队无法直接交互使用。&#xA;数据产品化就是把分析成果转化为可交互、可复用、可部署的工具。典型的数据产品包括：&#xA;交互式仪表盘：业务人员可以自助查看指标 API 服务：其他系统可以调用模型预测 自动化报告：定时生成并分发 数据目录：帮助团队理解和发现数据 用 Streamlit 构建交互式仪表盘 Streamlit 是 Python 生态中最流行的数据应用框架。它让你用纯 Python 写出漂亮的 Web 应用，不需要 HTML/CSS/JS。&#xA;安装 pip install streamlit pandas matplotlib plotly 基础仪表盘示例 # dashboard.py import streamlit as st import pandas as pd import plotly.express as px import plotly.graph_objects as go from datetime import datetime, timedelta # 页面配置 st.set_page_config( page_title=&amp;#34;电商销售仪表盘&amp;#34;, page_icon=&amp;#34;📊&amp;#34;, layout=&amp;#34;wide&amp;#34; ) st.title(&amp;#34;📊 电商销售实时仪表盘&amp;#34;) st.markdown(&amp;#34;---&amp;#34;) # 缓存数据加载（避免每次交互都重读） @st.cache_data def load_data(): df = pd.</description>
    </item>
    <item>
      <title>大数据入门</title>
      <link>/posts/2025/01/big-data-intro/</link>
      <pubDate>Wed, 22 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/big-data-intro/</guid>
      <description>什么时候需要大数据？ 在前面的文章中，我们一直用 Pandas 处理数据。对于百万级的数据集，Pandas 表现良好。但当数据量达到千万、亿级时，你会遇到以下问题：&#xA;内存不足：Pandas 需要把所有数据加载到内存中。10GB 的 CSV 文件需要至少 10GB 内存来进行处理。 计算时间过长：groupby 或 join 操作可能需要几分钟甚至几小时。 单机资源瓶颈：一台机器的 CPU 核心数有限，无法并行处理大量数据。 这就是大数据技术介入的时刻。&#xA;大数据 4V 特征 特征 英文 说明 体量 Volume 数据量巨大，TB 甚至 PB 级别 速度 Velocity 数据生产和处理速度快，实时流数据 多样 Variety 数据类型多样：结构化、半结构化、非结构化 真实 Veracity 数据质量和真实性不一致，需要验证 分布式计算基础 大数据的核心理念是分布式计算：把大任务拆成小块，在多台机器上并行执行。&#xA;MapReduce 思想 MapReduce 是分布式计算的经典范式，包含两个阶段：&#xA;Map（映射）：把数据分片，每个分片独立处理，产生键值对 Reduce（归约）：将相同键的结果聚合起来 输入: [A, B, C, D, E, F] | | | | | | Map Map Map Map Map Map (并行处理) | | | | | | \ / \ / \ / Reduce Reduce Reduce (聚合结果) | | | [结果1] [结果2] [结果3] Apache Spark 概述 Spark 是目前最流行的大数据处理框架。它比传统的 Hadoop MapReduce 快 10-100 倍，因为它利用内存计算，避免了频繁的磁盘读写。</description>
    </item>
    <item>
      <title>数据管道与自动化</title>
      <link>/posts/2025/01/data-pipeline/</link>
      <pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/data-pipeline/</guid>
      <description>为什么要构建数据管道？ 在前两篇文章中，我们手动加载数据、做清洗、分析、可视化。但如果这个过程需要每天重复做一次呢？比如每天早上都要给业务团队发一份昨天的销售报告。&#xA;手动做几件事很麻烦：&#xA;每天从不同系统导出数据 重复执行相同的清洗和分析代码 把结果发给不同的人 一旦某个环节出错，整个流程中断 数据管道（Data Pipeline）就是为了解决这些问题。它把数据处理流程自动化、标准化、可重复化。&#xA;ETL 与 ELT 架构 在构建数据管道前，需要了解两种主流架构。&#xA;ETL（Extract, Transform, Load） 数据先提取到中间层做转换，再加载到目标系统。&#xA;数据源 → 提取 → 转换 → 加载 → 数据仓库 适合场景：&#xA;目标系统对数据格式有严格要求 需要在加载前清洗和标准化数据 传统数据仓库场景 ELT（Extract, Load, Transform） 数据先原始加载到目标系统，在目标系统内做转换。&#xA;数据源 → 提取 → 加载 → 数据湖/仓库 → 按需转换 适合场景：&#xA;目标系统计算能力强（如云数据仓库） 需要保留原始数据以备后续重新处理 分析需求经常变化 # ETL 示例：提取 → 转换 → 加载 # Extract def extract_from_csv(filepath): return pd.read_csv(filepath) def extract_from_api(api_url, api_key): import requests headers = {&amp;#39;Authorization&amp;#39;: f&amp;#39;Bearer {api_key}&amp;#39;} response = requests.</description>
    </item>
    <item>
      <title>用户行为分析实战</title>
      <link>/posts/2025/01/user-behavior-analysis/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/user-behavior-analysis/</guid>
      <description>项目背景 上一篇文章我们分析了电商订单数据，得到了&amp;quot;是什么&amp;quot;的答案。但订单只是用户行为的终点。要真正理解用户，我们需要追踪和分析用户的完整行为路径：他们从哪来，在站内做了什么，为什么最终选择购买或离开。&#xA;本实战项目使用用户事件日志数据，涵盖页面浏览、点击、加购、支付等行为。我们将围绕以下几个核心问题展开分析：&#xA;用户的留存情况如何？不同渠道获取的用户留存有无差异？ 从访看到购买的转化漏斗中，哪个环节流失最严重？ 用户的日活跃度、使用深度如何？ 如何用 AARRR 框架系统评估用户生命周期？ 不同用户群体的行为模式有何差异？ 用户的终身价值该如何估算？ 数据加载与预处理 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from datetime import datetime, timedelta import warnings warnings.filterwarnings(&amp;#39;ignore&amp;#39;) plt.rcParams[&amp;#39;font.sans-serif&amp;#39;] = [&amp;#39;SimHei&amp;#39;] plt.rcParams[&amp;#39;axes.unicode_minus&amp;#39;] = False # 事件日志数据 events = pd.read_csv(&amp;#39;user_events.csv&amp;#39;) print(f&amp;#39;事件总数: {len(events):,}&amp;#39;) print(f&amp;#39;唯一用户数: {events[&amp;#34;user_id&amp;#34;].nunique():,}&amp;#39;) events.head() 事件日志数据通常包含以下字段：&#xA;字段 含义 示例 event_id 事件编号 唯一标识 user_id 用户编号 匿名字段 event_type 事件类型 page_view, click, add_to_cart, purchase page_url 页面地址 /products/123 timestamp 事件时间 2025-01-15 14:30:00 session_id 会话编号 区分不同访问会话 channel 来源渠道 organic, paid, referral, social device 设备类型 mobile, desktop, tablet # 时间字段处理 events[&amp;#39;timestamp&amp;#39;] = pd.</description>
    </item>
    <item>
      <title>电商销售分析实战</title>
      <link>/posts/2025/01/ecommerce-analysis/</link>
      <pubDate>Sun, 19 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/ecommerce-analysis/</guid>
      <description>项目背景 电商销售数据是数据分析入门最经典的真实场景之一。每一笔订单背后都藏着用户行为、市场趋势和运营机会。在这个实战项目中，我们将扮演一家电商公司的数据分析师，从原始订单数据出发，完成一个完整的数据分析闭环。&#xA;业务问题定义 分析开始之前，我们要先明确业务方关心的问题：&#xA;销售额的整体趋势如何？有没有季节性规律？ 哪些产品和品类贡献了主要收入？ 客户的地域分布是怎样的？ 哪些客户是高价值用户？如何区分不同价值的客户群体？ 未来一个月销售额大概会是多少？ 这些问题将指导我们后续的每一步分析。&#xA;数据加载与初始探索 我们先加载数据并了解基本情况。&#xA;import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from datetime import datetime import warnings warnings.filterwarnings(&amp;#39;ignore&amp;#39;) plt.rcParams[&amp;#39;font.sans-serif&amp;#39;] = [&amp;#39;SimHei&amp;#39;] plt.rcParams[&amp;#39;axes.unicode_minus&amp;#39;] = False df = pd.read_csv(&amp;#39;ecommerce_orders.csv&amp;#39;) print(f&amp;#39;数据集大小: {df.shape}&amp;#39;) print(f&amp;#39;列名: {df.columns.tolist()}&amp;#39;) df.head() 假设我们的数据包含以下字段：&#xA;字段 含义 类型 order_id 订单编号 字符串 customer_id 客户编号 字符串 product_id 产品编号 字符串 category 产品类别 字符串 price 单价 浮点数 quantity 数量 整数 order_date 订单日期 日期 shipping_address 收货地址 字符串 payment_method 支付方式 字符串 status 订单状态 字符串 df.</description>
    </item>
    <item>
      <title>模型评估与调优</title>
      <link>/posts/2025/01/model-evaluation/</link>
      <pubDate>Sat, 18 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/model-evaluation/</guid>
      <description>训练一个模型只是第一步。如何可靠地评估模型的表现，如何找到最好的参数组合，如何比较不同模型哪个更优，这些才是机器学习实践中的核心挑战。本文将全面介绍模型评估和调优的方法论。&#xA;交叉验证：更可靠的评估 单次划分训练集和测试集存在一个问题：结果可能因为随机划分而产生很大波动。交叉验证通过多次划分取平均值，提供更稳定的评估结果。&#xA;K-Fold 交叉验证 将数据平均分为 K 份，轮流用 K-1 份训练、1 份验证。&#xA;import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_diabetes from sklearn.model_selection import (cross_val_score, cross_validate, KFold, StratifiedKFold, LeaveOneOut, TimeSeriesSplit, learning_curve, validation_curve, GridSearchCV, RandomizedSearchCV) from sklearn.linear_model import Ridge, Lasso from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor from sklearn.metrics import mean_squared_error, r2_score, make_scorer import warnings warnings.filterwarnings(&amp;#39;ignore&amp;#39;) # 加载数据 diabetes = load_diabetes() X, y = diabetes.data, diabetes.target # 5 折交叉验证 kfold = KFold(n_splits=5, shuffle=True, random_state=42) scores = cross_val_score(Ridge(alpha=1.</description>
    </item>
    <item>
      <title>特征工程</title>
      <link>/posts/2025/01/feature-engineering/</link>
      <pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/feature-engineering/</guid>
      <description>在机器学习领域，有一个广为流传的说法：&amp;ldquo;数据和特征决定了机器学习的上限，而模型和算法只是逼近这个上限。&amp;rdquo; 特征工程就是将原始数据转化为最能代表问题的特征的过程。它往往是机器学习项目中最耗时但也是最有价值的部分。&#xA;为什么特征工程如此重要？ 优秀特征带来的提升往往比换一个复杂模型更为显著。特征工程能：&#xA;提升模型精度：好的特征让模式更容易被模型捕捉 降低数据需求：好的特征可以用更简单的模型达到同等的效果 提升可解释性：有意义的特征让模型决策更容易理解 减少过拟合：去除噪音特征，让模型聚焦于真正的信号 特征编码 机器学习模型通常只能处理数值数据。原始数据中的类别、文本等信息需要转换为数值形式。&#xA;One-Hot 编码 最常用的类别编码方式。将 K 个类别的特征转换为 K 个二进制特征。&#xA;import pandas as pd import numpy as np from sklearn.preprocessing import OneHotEncoder, LabelEncoder, OrdinalEncoder from sklearn.feature_extraction import FeatureHasher # 示例数据 data = pd.DataFrame({ &amp;#39;color&amp;#39;: [&amp;#39;red&amp;#39;, &amp;#39;blue&amp;#39;, &amp;#39;green&amp;#39;, &amp;#39;blue&amp;#39;, &amp;#39;red&amp;#39;], &amp;#39;size&amp;#39;: [&amp;#39;S&amp;#39;, &amp;#39;M&amp;#39;, &amp;#39;L&amp;#39;, &amp;#39;XL&amp;#39;, &amp;#39;M&amp;#39;], &amp;#39;price&amp;#39;: [100, 150, 200, 250, 180] }) # One-Hot 编码 onehot = OneHotEncoder(sparse_output=False, drop=&amp;#39;first&amp;#39;) # drop=&amp;#39;first&amp;#39; 避免多重共线性 encoded = onehot.</description>
    </item>
    <item>
      <title>聚类分析</title>
      <link>/posts/2025/01/clustering-analysis/</link>
      <pubDate>Thu, 16 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/clustering-analysis/</guid>
      <description>前两篇文章我们学习了监督学习中的回归和分类算法。但真实世界中，大量数据是没有标签的。当数据没有标准答案时，我们如何从中发现规律？这就是无监督学习的用武之地，而聚类分析是无监督学习中最核心的任务之一。&#xA;什么是聚类分析？ 聚类分析的目标是将数据划分为若干个组（簇），使得同一簇内的样本尽可能相似，不同簇的样本尽可能不同。聚类与分类的根本区别在于：分类有标签可学，聚类完全靠数据自身的结构。&#xA;聚类的主要应用 客户分群：将用户按消费行为分组，制定差异化营销策略 图像压缩：将相似颜色聚为一类，减少颜色数量 异常检测：远离所有簇的样本可能是异常值 文档分类：自动将新闻文章按主题分组 生物信息学：基因表达数据分析，发现功能相似的基因 K-Means 聚类 K-Means 是最经典、最常用的聚类算法，简单高效。&#xA;算法原理 K-Means 的迭代过程如下：&#xA;随机选择 K 个点作为初始簇中心 计算每个样本到 K 个中心的距离，分配到最近的中心 对每个簇，重新计算中心（簇内所有点的均值） 重复 2-3 步直到中心不再变化或达到最大迭代次数 Python 实现 import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from sklearn.cluster import KMeans # 生成模拟数据：3 个簇 X, y_true = make_blobs(n_samples=300, centers=3, cluster_std=1.0, random_state=42) # 可视化数据 plt.figure(figsize=(10, 6)) plt.scatter(X[:, 0], X[:, 1], s=50, alpha=0.7) plt.title(&amp;#39;原始数据（无标签）&amp;#39;) plt.xlabel(&amp;#39;特征 1&amp;#39;) plt.ylabel(&amp;#39;特征 2&amp;#39;) plt.show() # 应用 K-Means kmeans = KMeans(n_clusters=3, random_state=42, n_init=10) kmeans.</description>
    </item>
    <item>
      <title>分类算法</title>
      <link>/posts/2025/01/classification-algorithms/</link>
      <pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/classification-algorithms/</guid>
      <description>分类是机器学习中最常见的问题类型之一。不管是识别垃圾邮件、诊断疾病、检测欺诈交易还是人脸识别，背后都是分类算法在起作用。本文将深入介绍几种最核心的分类算法，从原理到实战带你全面掌握。&#xA;分类问题概述 分类问题的目标是根据输入特征预测一个离散的类别标签。根据类别数量分为：&#xA;二分类：只有两个类别，如垃圾邮件/非垃圾邮件 多分类：有三个或以上类别，如手写数字识别（0-9） 多标签分类：每个样本可以属于多个类别，如图片标签 本文我们将重点介绍二分类和多分类场景。&#xA;逻辑回归 逻辑回归虽然名字里有&amp;quot;回归&amp;quot;，但它实际上是一种分类算法。它通过 Sigmoid 函数将线性回归的输出映射到 0 到 1 之间的概率值。&#xA;Sigmoid 函数 Sigmoid 函数的数学形式：&#xA;$$\sigma(z) = \frac{1}{1 + e^{-z}}$$ 它把任意实数压缩到 (0, 1) 区间，非常适合表示概率。&#xA;import numpy as np import matplotlib.pyplot as plt def sigmoid(z): return 1 / (1 + np.exp(-z)) z = np.linspace(-10, 10, 100) s = sigmoid(z) plt.figure(figsize=(10, 6)) plt.plot(z, s, &amp;#39;b-&amp;#39;, linewidth=2) plt.axhline(y=0.5, color=&amp;#39;gray&amp;#39;, linestyle=&amp;#39;--&amp;#39;, alpha=0.5) plt.axvline(x=0, color=&amp;#39;gray&amp;#39;, linestyle=&amp;#39;--&amp;#39;, alpha=0.5) plt.xlabel(&amp;#39;z&amp;#39;) plt.ylabel(&amp;#39;σ(z)&amp;#39;) plt.title(&amp;#39;Sigmoid 函数&amp;#39;) plt.</description>
    </item>
    <item>
      <title>回归分析</title>
      <link>/posts/2025/01/regression-analysis/</link>
      <pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/regression-analysis/</guid>
      <description>回归分析是机器学习中最基础也最强大的工具之一。它用来预测连续数值型目标变量，比如房价、温度、销售额。虽然概念简单，但回归分析包含了机器学习中许多核心思想，是理解更复杂模型的重要基石。&#xA;什么是回归分析？ 回归分析研究的是自变量（特征）与因变量（目标）之间的定量关系。它的核心目标是找到一个函数，能够根据输入特征预测输出值。&#xA;简单线性回归 只有一个自变量的线性回归称为简单线性回归。它的数学形式是：&#xA;$$y = \beta_0 + \beta_1 x + \varepsilon$$ 其中 $\beta_0$ 是截距，$\beta_1$ 是斜率（系数），$\varepsilon$ 是误差项。&#xA;最小二乘法是最常用的参数估计方法。它的目标是最小化所有数据点的预测值与真实值之间的平方差之和：&#xA;$$\min \sum_{i=1}^{n} (y_i - \hat{y}_i)^2$$ import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression # 生成模拟数据 np.random.seed(42) X = np.random.rand(50, 1) * 10 # 0-10之间的随机数 y = 2.5 * X.squeeze() + 1 + np.random.randn(50) * 1.5 # y = 2.5x + 1 + 噪声 # 训练模型 model = LinearRegression() model.</description>
    </item>
    <item>
      <title>机器学习概览</title>
      <link>/posts/2025/01/ml-overview/</link>
      <pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/ml-overview/</guid>
      <description>经过前面十二篇文章的学习，我们已经掌握了数据分析的核心技能：从数据采集、清洗、探索性分析到可视化。但数据分析的终极目标不仅是描述过去，更是预测未来。这就是机器学习登场的时刻。&#xA;什么是机器学习？ 机器学习是一门让计算机从数据中自动学习规律和模式的学科，无需人为显式编程。传统编程中，我们输入规则和数据，得到答案。而在机器学习中，我们输入数据和答案，让计算机自己总结出规则。&#xA;传统编程: 规则 + 数据 → 答案 机器学习: 数据 + 答案 → 规则 这个能力让机器学习能够处理传统编程难以解决的问题：识别图片中的猫、理解语音命令、预测股票走势、推荐你可能喜欢的电影。&#xA;机器学习与数据分析的关系 很多人会问：机器学习和数据分析有什么区别？&#xA;简单来说，数据分析重在描述和诊断，而机器学习重在预测和决策。&#xA;描述性分析（前几篇文章的重点）：回答&amp;quot;发生了什么？&amp;quot;——如销售额同比下降了15%。 诊断性分析：回答&amp;quot;为什么发生？&amp;quot;——如是因为用户流失还是客单价下降。 预测性分析（机器学习的强项）：回答&amp;quot;未来会发生什么？&amp;quot;——如下个月预计销售额。 规范性分析：回答&amp;quot;我们应该怎么做？&amp;quot;——如应该给哪些用户发放优惠券。 机器学习和数据分析并非割裂的。实际上，机器学习是数据分析的自然延伸。你掌握的数据清洗、可视化、统计检验等技能，在机器学习项目中同样至关重要。&#xA;三大学习范式 机器学习按照学习方式可以分为三大类。&#xA;监督学习 监督学习使用带有标签的数据进行训练。就像老师带着标准答案教学生一样，模型学习输入到输出之间的映射关系。&#xA;回归任务：预测连续值（如房价、温度） 分类任务：预测类别标签（如垃圾邮件检测、疾病诊断） 常见的监督学习算法包括线性回归、决策树、随机森林、支持向量机、神经网络等。&#xA;无监督学习 无监督学习处理没有标签的数据，模型需要自己发现数据中的结构和模式。&#xA;聚类任务：将相似的数据点分组（如客户分群） 降维任务：压缩数据维度同时保留关键信息（如数据可视化） 常见的无监督学习算法包括 K-Means、DBSCAN、主成分分析（PCA）等。&#xA;强化学习 强化学习通过智能体与环境交互，根据奖励信号学习最优策略。它在游戏、机器人控制、自动驾驶等领域表现出色。&#xA;强化学习与传统监督学习的区别在于：没有现成的&amp;quot;正确答案&amp;quot;，智能体需要通过试错来学习。AlphaGo 击败李世石、OpenAI 的 Dota 2 机器人，都是强化学习的经典案例。&#xA;算法分类一览 下面这张表格帮你快速建立机器学习算法的全局认知：&#xA;类别 算法 典型应用 线性回归 普通最小二乘、Ridge、Lasso 价格预测、趋势分析 基于树的模型 决策树、随机森林、梯度提升树 分类、回归、特征重要性分析 支持向量机 SVC、SVR 文本分类、图像识别 基于距离的模型 KNN（K近邻） 推荐系统、模式识别 神经网络 MLP、CNN、RNN、Transformer 图像、语音、自然语言处理 聚类算法 K-Means、DBSCAN、层次聚类 客户分群、异常检测 降维算法 PCA、t-SNE、UMAP 数据可视化、特征压缩 集成方法 Bagging、Boosting、Stacking 提升预测精度 机器学习工作流 一个完整的机器学习项目通常包含以下步骤。</description>
    </item>
    <item>
      <title>时间序列分析</title>
      <link>/posts/2025/01/time-series-analysis/</link>
      <pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/time-series-analysis/</guid>
      <description>时间序列数据无处不在——股价、气温、网站流量、销售额、传感器读数……任何按时间顺序记录的数据都是时间序列。&#xA;时间序列分析和其他分析最大的不同在于：数据点之间不是独立的。今天的股价和昨天的股价有关，这个月的销量受上个月的影响。这种时序依赖性既是挑战也是机会——它让我们能做预测。&#xA;环境准备 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from statsmodels.tsa.stattools import adfuller, acf, pacf from statsmodels.tsa.seasonal import seasonal_decompose from statsmodels.tsa.holtwinters import ExponentialSmoothing, SimpleExpSmoothing from statsmodels.tsa.arima.model import ARIMA from statsmodels.graphics.tsaplots import plot_acf, plot_pacf import warnings warnings.filterwarnings(&amp;#39;ignore&amp;#39;) plt.rcParams[&amp;#39;font.sans-serif&amp;#39;] = [&amp;#39;SimHei&amp;#39;] plt.rcParams[&amp;#39;axes.unicode_minus&amp;#39;] = False sns.set_theme(style=&amp;#39;whitegrid&amp;#39;) 时间序列基础操作 创建和转换时间索引 # 从列创建日期时间 dates = pd.date_range(start=&amp;#39;2023-01-01&amp;#39;, periods=365, freq=&amp;#39;D&amp;#39;) ts = pd.Series(np.random.randn(365), index=dates) print(ts.head()) print(f&amp;#39;索引类型: {ts.index.dtype}&amp;#39;) # 字符串转 datetime df = pd.</description>
    </item>
    <item>
      <title>SQL 数据分析</title>
      <link>/posts/2025/01/sql-for-data-analysis/</link>
      <pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/sql-for-data-analysis/</guid>
      <description>Pandas 很强大，但现实世界中大部分数据都存放在关系型数据库里。无论你是从数据仓库取数、查询业务系统，还是做报表，SQL 都是数据分析师最核心的技能之一。&#xA;这篇文章不讲 DBA 那一套（建表、索引优化、事务管理），而是聚焦于数据分析师最常用的 SQL 操作，并用 SQLite 作为实践环境，配合 Python 打通数据链路。&#xA;环境准备 import sqlite3 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns # 创建内存数据库 conn = sqlite3.connect(&amp;#39;:memory:&amp;#39;) cursor = conn.cursor() 我们创建三张模拟的业务表：&#xA;# 用户表 cursor.execute(&amp;#39;&amp;#39;&amp;#39; CREATE TABLE users ( user_id INTEGER PRIMARY KEY, name TEXT, age INTEGER, city TEXT, signup_date TEXT ) &amp;#39;&amp;#39;&amp;#39;) # 订单表 cursor.execute(&amp;#39;&amp;#39;&amp;#39; CREATE TABLE orders ( order_id INTEGER PRIMARY KEY, user_id INTEGER, product TEXT, amount REAL, quantity INTEGER, order_date TEXT, status TEXT ) &amp;#39;&amp;#39;&amp;#39;) # 产品表 cursor.</description>
    </item>
    <item>
      <title>统计学基础</title>
      <link>/posts/2025/01/statistics-basics/</link>
      <pubDate>Fri, 10 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/statistics-basics/</guid>
      <description>数据分析的第三只眼睛是统计学。没有统计学，你看到的只是数字的堆砌；有了统计学，你才能判断这些差异是否显著、这些趋势是否可靠。&#xA;本文的目标不是让你成为统计学家，而是让你掌握数据分析中最常用的统计工具——能看懂统计指标，能做假设检验，能判断什么时候该用什么方法。&#xA;环境准备 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from scipy import stats from scipy.stats import (norm, t, chi2, f, ttest_ind, ttest_rel, chisquare, f_oneway, pearsonr, spearmanr) import statsmodels.api as sm import warnings warnings.filterwarnings(&amp;#39;ignore&amp;#39;) plt.rcParams[&amp;#39;font.sans-serif&amp;#39;] = [&amp;#39;SimHei&amp;#39;] plt.rcParams[&amp;#39;axes.unicode_minus&amp;#39;] = False sns.set_theme(style=&amp;#39;whitegrid&amp;#39;) 描述性统计回顾 在动手之前，先快速温习基础篇学过的描述性统计。&#xA;data = np.random.normal(loc=50, scale=15, size=1000) # 集中趋势 mean = np.mean(data) median = np.median(data) mode = stats.mode(data, keepdims=True).mode[0] # 离散程度 variance = np.</description>
    </item>
    <item>
      <title>数据可视化进阶</title>
      <link>/posts/2025/01/data-viz-advanced/</link>
      <pubDate>Thu, 09 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/data-viz-advanced/</guid>
      <description>基础篇里我们学会了用 Matplotlib 画简单的折线图和柱状图。但到了进阶阶段，你需要更多——更丰富的图表类型、更美观的视觉风格、更直观的交互效果。&#xA;本文会深入讲解 Seaborn 的高级用法，再带你进入 Plotly 的交互式可视化世界，最后总结一套可视化设计的实用原则。&#xA;环境准备 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import plotly.express as px import plotly.graph_objects as go from plotly.subplots import make_subplots import warnings warnings.filterwarnings(&amp;#39;ignore&amp;#39;) plt.rcParams[&amp;#39;font.sans-serif&amp;#39;] = [&amp;#39;SimHei&amp;#39;] plt.rcParams[&amp;#39;axes.unicode_minus&amp;#39;] = False # Seaborn 主题 sns.set_theme(style=&amp;#39;whitegrid&amp;#39;, palette=&amp;#39;muted&amp;#39;, font=&amp;#39;SimHei&amp;#39;) 我们主要使用 Seaborn 内置数据集和 Plotly Express 示例数据来演示。&#xA;Seaborn 深度探索 基础篇我们用了 sns.histplot 和 sns.boxplot。Seaborn 的真正威力在于它的关系型绘图函数族。&#xA;relplot——关系图的统一入口 relplot 是一个 figure-level 函数，同时覆盖散点图和线图，并且天然支持分面：</description>
    </item>
    <item>
      <title>探索性数据分析（EDA）</title>
      <link>/posts/2025/01/exploratory-data-analysis/</link>
      <pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/exploratory-data-analysis/</guid>
      <description>拿到一份干净的数据后，你的第一反应是什么？很多人会立刻跑模型、调参数，但这是本末倒置。在建模之前，你需要先回答两个问题：这些数据长什么样？里面有什么规律？&#xA;探索性数据分析（EDA）就是回答这两个问题的过程。它不是一次性的步骤，而是一个反复提问、画图、计算、再提问的循环。好的 EDA 能帮你发现数据质量问题、验证假设、指导特征工程，甚至直接决定选什么模型。&#xA;EDA 的核心方法论 EDA 没有固定脚本，但有一个可循的工作流：&#xA;概览：数据有多大？每列是什么类型？有没有明显的缺失和异常？ 单变量分析：每个变量各自的分布如何？ 双变量分析：两个变量之间有什么关系？ 多变量分析：多个变量综合起来能发现什么？ 总结与假设：形成分析假设，进入建模阶段。 我们以 Kaggle 的 Titanic 数据集为例，一步步走完 EDA 流程。&#xA;环境与数据加载 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings(&amp;#39;ignore&amp;#39;) # 设置中文字体 plt.rcParams[&amp;#39;font.sans-serif&amp;#39;] = [&amp;#39;SimHei&amp;#39;] plt.rcParams[&amp;#39;axes.unicode_minus&amp;#39;] = False sns.set_theme(style=&amp;#39;whitegrid&amp;#39;, palette=&amp;#39;muted&amp;#39;) 我们直接加载 Titanic 数据集：&#xA;# 从 seaborn 加载 df = sns.load_dataset(&amp;#39;titanic&amp;#39;) print(&amp;#39;数据集大小:&amp;#39;, df.shape) print(&amp;#39;\n前 5 行:&amp;#39;) print(df.head()) 第一步：快速概览 # 基本信息 print(df.info()) # 数值统计 print(df.</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>
    <item>
      <title>数据可视化入门</title>
      <link>/posts/2025/01/data-viz-intro/</link>
      <pubDate>Mon, 06 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/data-viz-intro/</guid>
      <description>数据可视化是数据分析中最重要的环节之一。一张好的图表能抵过千言万语——它能让复杂的数据模式一目了然，让隐藏在数字背后的故事变得清晰可见。本篇文章将介绍 Matplotlib 的核心用法，以及如何用 Python 创建专业的数据可视化图表。&#xA;Matplotlib 核心概念 Matplotlib 是 Python 中最经典的数据可视化库。虽然它的默认样式偏保守，但通过自定义可以制作出高质量的图表。&#xA;import matplotlib.pyplot as plt import numpy as np import pandas as pd # Matplotlib 的核心是分层结构： # - Figure: 画布（整个图表窗口） # - Axes: 坐标系（实际绘制图表的地方） # - Axis: 坐标轴（x 轴和 y 轴） # - Artist: 所有可见元素（线条、文字、标记等） # 最基本的绘图模式 plt.figure(figsize=(8, 5)) # 创建画布 plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) # 绘制折线 plt.xlabel(&amp;#34;x 轴&amp;#34;) plt.ylabel(&amp;#34;y 轴&amp;#34;) plt.title(&amp;#34;最简单的折线图&amp;#34;) plt.show() Figure 和 Axes（面向对象方式） 推荐使用面向对象的方式绘图，它更加灵活可控：</description>
    </item>
    <item>
      <title>Pandas 基础</title>
      <link>/posts/2025/01/pandas-basics/</link>
      <pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/pandas-basics/</guid>
      <description>Pandas 是 Python 数据分析的核心库。它提供了两种主要的数据结构——Series（一维）和 DataFrame（二维），让数据操作变得直观而高效。如果说 NumPy 是&amp;quot;Python 中的数组&amp;quot;，那 Pandas 就是&amp;quot;Python 中的 Excel&amp;quot;。&#xA;Series：一维数据结构 Series 是带标签的一维数组，可以存储任何数据类型：&#xA;import pandas as pd import numpy as np # 从列表创建 Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) print(s) # 0 1.0 # 1 3.0 # 2 5.0 # 3 NaN # 4 6.0 # 5 8.0 # dtype: float64 # 指定索引 s = pd.Series([1, 3, 5, 7], index=[&amp;#34;a&amp;#34;, &amp;#34;b&amp;#34;, &amp;#34;c&amp;#34;, &amp;#34;d&amp;#34;]) print(s) # a 1 # b 3 # c 5 # d 7 # dtype: int64 # 从字典创建 Series population = pd.</description>
    </item>
    <item>
      <title>NumPy 入门</title>
      <link>/posts/2025/01/numpy-intro/</link>
      <pubDate>Sat, 04 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/numpy-intro/</guid>
      <description>NumPy（Numerical Python）是 Python 科学计算的基石。几乎所有的数据科学工具（Pandas、Scikit-learn、Matplotlib）都建立在 NumPy 之上。它的核心是高性能的多维数组对象 ndarray，以及丰富的数组运算函数。&#xA;为什么需要 NumPy？ Python 内置的列表虽然灵活，但在数值计算方面存在明显短板：&#xA;import numpy as np import time # 对比 Python 列表和 NumPy 数组的性能 size = 1_000_000 # Python 列表 py_list = list(range(size)) start = time.time() py_result = [x * 2 for x in py_list] print(f&amp;#34;Python 列表用时: {time.time() - start:.4f} 秒&amp;#34;) # NumPy 数组 np_array = np.arange(size) start = time.time() np_result = np_array * 2 print(f&amp;#34;NumPy 数组用时: {time.time() - start:.4f} 秒&amp;#34;) 在我的机器上，NumPy 的运算速度快了 50 倍以上。这是因为：</description>
    </item>
    <item>
      <title>Python 基础速览</title>
      <link>/posts/2025/01/python-basics/</link>
      <pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/python-basics/</guid>
      <description>Python 是数据分析领域最流行的编程语言。它的语法简洁清晰，学习曲线平缓，配合丰富的第三方库，可以高效地完成从数据采集到可视化呈现的全流程工作。&#xA;这篇文章不是 Python 的完整教程，而是针对数据分析场景的速览。如果你完全没有编程经验，建议结合官方教程或在线课程一起学习。&#xA;基本数据类型 Python 有几种基本数据类型，你在数据分析中会频繁用到：&#xA;# 整数 (int) age = 25 count = -100 large_number = 1_000_000 # Python 3.6+ 支持下划线分隔符 # 浮点数 (float) price = 29.99 pi = 3.14159 scientific = 1.5e-4 # 科学计数法，等于 0.00015 # 字符串 (str) name = &amp;#34;数据分析&amp;#34; description = &amp;#39;Python 入门&amp;#39; multiline = &amp;#34;&amp;#34;&amp;#34;这是多行字符串 可以跨越多行 非常方便&amp;#34;&amp;#34;&amp;#34; # 布尔值 (bool) is_active = True is_finished = False # None 类型 result = None # 表示&amp;#34;没有值&amp;#34;，类似于其他语言的 null 类型转换 # 字符串转整数 int(&amp;#34;123&amp;#34;) # 123 # 整数转字符串 str(456) # &amp;#34;456&amp;#34; # 字符串转浮点数 float(&amp;#34;3.</description>
    </item>
    <item>
      <title>开发环境搭建</title>
      <link>/posts/2025/01/setup-environment/</link>
      <pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/setup-environment/</guid>
      <description>在开始数据分析之前，我们需要搭建一个稳定的开发环境。一个配置得当的环境能让你事半功倍。本文将手把手带你从零开始配置 Python 数据分析环境。&#xA;选择 Python 版本管理工具 Python 有多个版本，不同项目可能依赖不同版本。为了避免版本冲突，我们推荐使用版本管理工具。&#xA;方案一：Miniconda（推荐初学者） Miniconda 是 Anaconda 的精简版，它包含了 conda 包管理器和 Python，但不预装大量科学计算包。你只需要安装需要的包，避免了臃肿的环境。&#xA;下载和安装 Miniconda：&#xA;访问 Miniconda 官网，选择 Python 3.10 或更高版本的 Windows 安装包。运行安装程序，建议勾选&amp;quot;Add Miniconda to my PATH environment variable&amp;quot;（或安装后手动配置）。&#xA;安装完成后，打开终端（PowerShell 或 cmd），验证安装：&#xA;conda --version 你应该能看到类似 conda 24.x.x 的输出。&#xA;方案二：pyenv（进阶用户） 如果你更喜欢原生 Python 工具链，pyenv 是另一个不错的选择。在 Windows 上可以使用 pyenv-win：&#xA;# 使用 pip 安装 pyenv-win pip install pyenv-win --target $env:USERPROFILE\.pyenv 然后配置环境变量，就可以使用 pyenv install 3.11.0 安装指定版本的 Python 了。&#xA;创建虚拟环境 虚拟环境是 Python 开发的最佳实践。它让你为每个项目隔离依赖包，避免不同项目之间的包版本冲突。</description>
    </item>
    <item>
      <title>数据分析导论</title>
      <link>/posts/2025/01/data-analysis-intro/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/data-analysis-intro/</guid>
      <description>什么是数据分析？ 数据分析是指通过适当的统计方法和工具，对收集来的大量数据进行检查、清洗、转换和建模的过程，目的是发现有用的信息、得出结论并支持决策。简单来说，就是从数据中提取价值。&#xA;我们生活在一个数据爆炸的时代。每天互联网产生约 2.5 万亿字节的数据。从社交媒体上的点赞到电商平台的订单，从传感器采集的工业数据到基因测序的生物信息，数据无处不在。但原始数据本身并没有太大价值，真正有价值的是我们从数据中获得的洞察。这就是数据分析的用武之地。&#xA;数据分析的四种类型 根据分析的目标和复杂度，数据分析通常分为四个层次，由浅入深形成一个金字塔结构。&#xA;描述性分析 (Descriptive Analytics) 描述性分析回答&amp;quot;发生了什么&amp;quot;的问题。它是最基础也是最常见的分析类型，通过对历史数据的汇总和可视化，帮助我们了解已经发生的情况。&#xA;典型例子包括：&#xA;月度销售报表，展示各区域的销售额和增长率 网站流量仪表盘，显示页面浏览量、独立访客数和跳出率 社交媒体数据统计，展示粉丝增长趋势和互动情况 描述性分析使用的工具和方法包括：汇总统计（均值、中位数、标准差）、数据可视化（柱状图、折线图、饼图）、数据透视表等。&#xA;诊断性分析 (Diagnostic Analytics) 诊断性分析回答&amp;quot;为什么发生&amp;quot;的问题。当描述性分析告诉我们某个指标变化后，我们需要找出背后的原因。&#xA;举个例子：描述性分析发现某季度销售额下降了 15%。诊断性分析就要深入挖掘原因——是因为竞争对手降价？是某个产品线出问题？还是营销活动没有达到预期效果？&#xA;常用的方法包括：下钻分析、相关性分析、因果分析、假设检验等。&#xA;预测性分析 (Predictive Analytics) 预测性分析回答&amp;quot;未来会发生什么&amp;quot;的问题。它利用历史数据和机器学习算法，对未来事件进行预测。&#xA;应用场景非常广泛：&#xA;电商平台预测用户可能购买的商品，用于推荐系统 银行预测贷款申请人的违约风险 制造商预测设备何时需要维护，减少停机时间 零售商预测下季度的库存需求 常用技术包括：回归分析、时间序列预测、分类和回归树、神经网络等。&#xA;规范性分析 (Prescriptive Analytics) 规范性分析回答&amp;quot;应该怎么做&amp;quot;的问题，是最高层次的分析。它不仅预测未来，还提供具体的行动建议，帮助决策者选择最优方案。&#xA;典型应用包括：&#xA;供应链优化：在满足客户需求的前提下，最小化运输成本和库存成本 动态定价：根据市场需求、竞争对手价格和库存水平，实时调整价格 广告投放优化：在预算约束下，最大化广告的投资回报率 规范性分析通常结合运筹学、优化算法和模拟技术来实现。&#xA;数据分析的工作流程 虽然每个数据分析项目都有其独特性，但大多数项目都遵循一个通用的流程：&#xA;1. 明确问题和目标 这是最重要的步骤。在开始分析之前，必须清楚地了解业务问题和分析目标。和利益相关者沟通，将模糊的问题转化为具体、可衡量的分析目标。&#xA;2. 数据采集 确定需要哪些数据，以及从何处获取。数据来源可能包括：&#xA;内部数据库（SQL、数据仓库） API 接口 公开数据集 网络爬虫 调查问卷 3. 数据清洗和预处理 现实世界的数据很少是干净整洁的。这一步骤通常占用整个分析项目 60% 到 80% 的时间，包括：&#xA;处理缺失值 纠正错误数据 去除重复记录 统一数据格式 处理异常值 4. 探索性数据分析 (EDA) 通过统计摘要和可视化手段，深入了解数据的特征和模式。EDA 帮助我们：</description>
    </item>
  </channel>
</rss>
