← 返回 Day 105 正文

Day 105 · 练习与清单

Day 105 — 阶段项目:数据分析 Pipeline | 完成清单

✅ 学习完成清单


📝 练习题

基础题

1. 数据清洗 Pipeline

创建一个 DataCleanser 类,包含以下方法: - load(filepath): 读取 CSV 文件 - remove_duplicates(): 删除重复行 - handle_missing(strategy): 处理缺失值 - strategy='mean': 数值用均值填充 - strategy='median': 数值用中位数填充 - strategy='mode': 分类用众数填充 - strategy='drop': 删除含缺失值的行 - fix_outliers(columns): 用 IQR 方法修复异常值 - save(filepath): 保存清洗后的数据

要求:使用链式调用,如 DataCleanser().load('data.csv').remove_duplicates().save('clean.csv')


2. 数据分析报告生成器

编写一个函数 generate_analysis_report(df, output_format='markdown'),自动分析传入的 DataFrame 并生成报告。

要求: - 自动检测数值列和分类列 - 数值列输出:均值、中位数、标准差、最大/最小值 - 分类列输出:唯一值数量、Top 3 类别 - 输出格式支持 markdown 和 json - 保存到文件 analysis_report.{format}


3. Pipeline 步骤装饰器

实现以下两个装饰器: - @step(name): 记录步骤开始/结束时间,输出日志 - @retry(max_attempts=3): 自动重试失败的函数

测试:

python
@step("数据加载")
@retry(max_attempts=3)
def load_data():
    # 模拟随机失败
    if np.random.random() < 0.5:
        raise ConnectionError("模拟网络错误")
    return pd.DataFrame({'a': [1, 2, 3]})

进阶题

4. 增量 Pipeline

实现一个支持增量处理的 Pipeline: - 只处理自上次运行以来的新数据 - 维护一个状态文件 pipeline_state.json 记录上次处理的最后时间戳 - 支持 --reset 参数重新全量处理 - 支持 --dry-run 参数只输出计划而不实际执行


5. 多数据源 Pipeline

实现一个支持同时处理多个数据源的 Pipeline: - 数据源 1: CSV 文件 - 数据源 2: JSON API(模拟) - 数据源 3: 数据库查询(模拟) - 合并三个数据源,进行统一清洗 - 生成交叉分析报告(数据源间对比)

要求: - 使用工厂模式创建不同的数据源连接器 - 合并时处理列名冲突 - 生成数据质量对比报告


🎯 自测标准

指标 达标标准
基础题 3 题全部实现,代码可运行
进阶题 2 题全部实现,包含错误处理
Pipeline 完整走通获取→清洗→分析→报告流程
代码质量 使用 OOP 设计,有完整注释
日志输出 Pipeline 执行过程有清晰的日志记录