名称: 数据分析师 描述: 此技能应用于分析CSV数据集、通过智能插补处理缺失值,并创建交互式仪表板以可视化数据趋势。适用于数据质量评估、自动缺失值检测与填充、统计分析以及为探索性数据分析生成Plotly Dash仪表板的任务。
数据分析师
概述
此技能为CSV数据集的数据分析工作流提供全面能力。它能自动分析缺失值模式,使用适当的统计方法智能插补缺失数据,并创建交互式Plotly Dash仪表板以可视化趋势和模式。该技能将自动化的缺失值处理与丰富的交互式可视化相结合,以支持端到端的探索性数据分析。
核心能力
数据分析师技能提供三种主要能力,可以独立使用或作为完整工作流使用:
1. 缺失值分析
自动检测和分析数据集中的缺失值,识别模式并建议最优插补策略。
2. 智能插补
应用针对每列数据类型和分布特征定制的复杂插补方法。
3. 交互式仪表板创建
生成包含多种可视化类型的综合Plotly Dash仪表板,用于趋势分析和探索。
完整工作流
当用户请求包含缺失值处理和可视化的完整数据分析时,请遵循此工作流:
步骤1:分析缺失值
运行缺失值分析脚本以了解数据质量:
python3 scripts/analyze_missing_values.py <输入文件.csv> <输出分析.json>
此操作的作用:
- 检测每列中的缺失值
- 识别数据类型(数值型、分类型、时间型等)
- 计算缺失值统计信息
- 为每列建议适当的插补策略
- 生成详细的JSON报告和控制台输出
查看输出以了解:
- 哪些列有缺失数据
- 缺失值的百分比
- 每列推荐的插补方法
- 推荐每种方法的原因
步骤2:插补缺失值
基于分析应用自动插补:
python3 scripts/impute_missing_values.py <输入文件.csv> <分析.json> <输出插补后.csv>
此操作的作用:
- 加载分析结果(如果未提供则执行分析)
- 对每列应用最优插补方法:
- 均值:用于正态分布的数值数据
- 中位数:用于偏态数值数据
- 众数:用于分类变量
- KNN:用于具有相关性的多元数值数据
- 前向填充:用于时间序列数据
- 常量:用于高基数文本字段
- 处理边缘情况(在适当时删除行/列)
- 生成包含前后统计信息的插补报告
- 保存清理后的数据集
脚本自动执行:
- 删除缺失值>70%的列
- 删除关键ID列缺失的行
- 对相关变量执行批量KNN插补
- 创建详细的插补日志
步骤3:创建交互式仪表板
生成交互式Plotly Dash仪表板:
python3 scripts/create_dashboard.py <插补后文件.csv> <输出目录> <端口>
示例:
python3 scripts/create_dashboard.py data_imputed.csv ./visualizations 8050
此操作的作用:
- 自动检测列类型(数值型、分类型、时间型)
- 创建全面的可视化:
- 汇总统计表:所有数值列的描述性统计
- 时间序列图:如果存在日期/时间列,则进行趋势分析
- 分布图:用于理解数据分布的直方图
- 相关性热力图:数值变量之间的关系
- 分类分析:分类变量的条形图
- 散点图矩阵:变量之间的成对关系
- 启动交互式Dash Web服务器
- 可选地保存静态HTML可视化
访问仪表板:http://127.0.0.1:8050(或指定端口)
单独使用案例
使用案例A:快速缺失值评估
当用户希望在不进行插补的情况下了解数据质量时:
python3 scripts/analyze_missing_values.py data.csv
查看控制台输出以了解缺失值模式并获取建议。
使用案例B:仅插补
当用户有一个包含缺失值的数据集并希望获得清理后的数据时:
python3 scripts/impute_missing_values.py data.csv
此操作一步完成分析和插补,生成data_imputed.csv。
使用案例C:仅可视化
当用户有一个干净的数据集并希望进行交互式可视化时:
python3 scripts/create_dashboard.py clean_data.csv ./visualizations 8050
此操作无需任何预处理即可创建完整的仪表板。
使用案例D:自定义插补策略
当用户希望审查和调整插补策略时:
-
首先运行分析:
python3 scripts/analyze_missing_values.py data.csv analysis.json -
查看
analysis.json并与用户讨论策略 -
如果需要,修改脚本中的插补逻辑或参数
-
运行插补:
python3 scripts/impute_missing_values.py data.csv analysis.json data_imputed.csv
理解插补方法
该技能基于数据特征使用智能插补策略。关键方法包括:
- 均值/中位数:用于数值数据(正态分布用均值,偏态用中位数)
- 众数:用于分类变量(最频繁的值)
- KNN(K-最近邻):用于变量相关的多元数值数据
- 前向填充:用于时间序列数据(将最后一个观测值向前传递)
- 插值:用于平滑的时间趋势
- 常量值:用于高基数文本字段(例如,“未知”)
- 删除:用于缺失值>70%的列或ID缺失的行
有关每种方法适用情况的详细信息,请参阅references/imputation_methods.md。
仪表板功能
交互式仪表板包括:
汇总统计
- 所有数值列的计数、均值、标准差、最小值、最大值、四分位数
- 缺失值计数和百分比
- 可排序的表格格式
时间序列分析
- 用于时间趋势的带标记的折线图
- 支持多个序列(最多4个主要指标)
- 带有精确值的悬停详细信息
- 用于轻松比较的统一悬停模式
分布分析
- 所有数值变量的直方图
- 30个分箱的默认值,用于精细分布视图
- 多面板布局,便于比较
相关性分析
- 显示相关系数的热力图
- 从-1(负相关)到+1(正相关)的颜色编码
- 标注确切的相关系数值
- 有助于识别关系
分类分析
- 分类变量的条形图
- 显示前10个类别(针对高基数变量)
- 显示频率计数
散点图矩阵
- 数值变量的成对散点图
- 限于5个变量以提高可读性
- 显示下三角(避免冗余)
设置和依赖项
使用该技能前,请确保已安装依赖项:
pip install -r requirements.txt
所需包:
pandas- 数据操作和分析numpy- 数值计算scikit-learn- KNN插补plotly- 交互式可视化dash- Web仪表板框架dash-bootstrap-components- 仪表板样式
最佳实践
对于分析:
- 在插补前始终运行分析以了解数据质量
- 查看建议的插补方法——它们是建议,不是强制要求
- 注意缺失值百分比(>40%需要仔细考虑)
- 检查数据类型是否符合预期(例如,数字ID被检测为数值型)
对于插补:
- 在插补前保存原始数据集
- 查看插补报告以确保方法合理
- 检查插补值是否在合理范围内
- 考虑为重要变量创建缺失指示器
- 记录使用的插补方法以确保可重复性
对于仪表板:
- 使用插补/清理后的数据进行最准确的可视化
- 如果与非技术利益相关者共享,请保存静态HTML图
- 如果同时运行多个仪表板,请使用不同的端口
- 对于大型数据集(>10万行),考虑采样以提高渲染速度
处理边缘情况
高缺失率(>50%)
脚本会自动标记缺失值>50%的列。选项:
- 如果列不重要,则删除
- 创建缺失指示器变量
- 调查数据缺失的原因(可能具有信息性)
混合数据类型
如果列包含混合类型(例如,数字和文本):
- 脚本检测主要类型
- 考虑在分析前清理列
- 对混合类型文本列使用常量插补
小型数据集
对于行数<50的数据集:
- 简单插补(均值/中位数/众数)更稳定
- 避免KNN(需要足够的邻居)
- 考虑删除行而不是插补
时间序列间隙
对于具有不规则时间戳的时间序列:
- 对短间隙使用前向填充
- 对具有平滑趋势的较长间隙使用插值
- 在选择方法时考虑采样频率
故障排除
脚本失败,提示“未找到模块”
安装依赖项:pip install -r requirements.txt
仪表板无法启动(端口被占用)
指定不同的端口:python3 scripts/create_dashboard.py data.csv ./viz 8051
KNN插补速度慢
KNN对于大型数据集计算量大。对于>5万行,考虑:
- 使用更简单的方法(均值/中位数)
- 首先对数据进行采样
- 在KNN中使用更少的列
插补值似乎不正确
- 查看分析报告——检查检测到的数据类型
- 验证列是否被正确检测(数值型与分类型)
- 考虑手动调整或使用不同的插补方法
- 检查可能影响均值/中位数计算的异常值
资源
scripts/
analyze_missing_values.py- 全面的缺失值分析,带有自动策略推荐impute_missing_values.py- 使用针对数据特征定制的多种方法进行智能插补create_dashboard.py- 交互式Plotly Dash仪表板生成器,带有多种可视化类型
references/
imputation_methods.md- 缺失值插补策略、决策框架和最佳实践的详细指南
其他文件
requirements.txt- 该技能的Python依赖项