mcpField
D
data-analyst

data-analyst

github.com/ailabs-393数据与数据库4601.2k 次安装50 周前更新
代码仓库

关于 data-analyst

data-analyst 是用于 CSV 分析的技能,结合缺失值评估、按数据特征进行填补以及交互式 Plotly Dash 仪表板。既可用于完整的数据质量与探索分析流程,也可单独执行各项任务。

主要功能

  1. 01缺失值模式分析与策略建议
  2. 02根据数据特征填补缺失值
  3. 03交互式 Plotly Dash 仪表板
  4. 04呈现统计摘要、趋势和相关性
  5. 05生成填补报告和清理后的 CSV

适用场景

  1. 01清理数据集前评估缺失数据
  2. 02按列特征选择方法填补缺失值
  3. 03在仪表板中探索趋势和分布
  4. 04检查填补效果及清理后的数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ailabs-393/ai-labs-claude-skills --skill data-analyst

安装后在 Claude Code 中输入/data-analyst确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

index.js
package.json
requirements.txt
references/
imputation_methods.md
scripts/
analyze_missing_values.py
create_dashboard.py
impute_missing_values.py

详细介绍

数据分析师

概述

此技能为 CSV 数据集上的数据分析工作流提供全面的功能。它会自动分析缺失值模式,使用适当的统计方法智能填补缺失数据,并创建交互式 Plotly Dash 仪表板来可视化趋势和模式。此技能将自动处理缺失值与丰富的交互式可视化相结合,支持端到端的探索性数据分析。

核心功能

data-analyst 技能提供三项主要功能,可单独使用,也可组成完整工作流:

1. 缺失值分析

自动检测并分析数据集中的缺失值,识别模式并推荐最佳填补策略。

2. 智能填补

根据各列的数据类型和分布特征,应用高级填补方法。

3. 创建交互式仪表板

生成包含多种可视化类型的综合 Plotly Dash 仪表板,用于趋势分析和探索。

完整工作流

当用户请求对数据进行完整分析,并处理缺失值和创建可视化时,请遵循此工作流:

第 1 步:分析缺失值

运行缺失值分析脚本,了解数据质量:

python3 scripts/analyze_missing_values.py <input_file.csv> <output_analysis.json>

此操作会:

  • 检测每列中的缺失值
  • 识别数据类型(数值型、分类型、时间型等)
  • 计算缺失值统计信息
  • 为每列推荐适当的填补策略
  • 生成详细的 JSON 报告和控制台输出

查看输出,了解:

  • 哪些列存在缺失数据
  • 缺失值的百分比
  • 每列推荐使用的填补方法
  • 推荐每种方法的原因
第 2 步:填补缺失值

根据分析结果自动填补缺失值:

python3 scripts/impute_missing_values.py <input_file.csv> <analysis.json> <output_imputed.csv>

此操作会:

  • 加载分析结果(如果未提供,则执行分析)
  • 对每列应用最佳填补方法:
    • 均值:适用于正态分布的数值型数据
    • 中位数:适用于偏斜的数值型数据
    • 众数:适用于分类变量
    • KNN:适用于存在相关性的多变量数值型数据
    • 向前填充:适用于时间序列数据
    • 常量:适用于高基数文本字段
  • 处理边缘情况(适当时删除行或列)
  • 生成包含填补前后统计信息的填补报告
  • 保存清理后的数据集

此脚本会自动:

  • 删除缺失值超过 70% 的列
  • 删除关键 ID 列存在缺失值的行
  • 对相关变量执行批量 KNN 填补
  • 创建详细的填补日志
第 3 步:创建交互式仪表板

生成交互式 Plotly Dash 仪表板:

python3 scripts/create_dashboard.py <imputed_file.csv> <output_dir> <port>

示例:

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:自定义插补策略

当用户希望查看并调整插补策略时:

  1. 先运行分析:

    python3 scripts/analyze_missing_values.py data.csv analysis.json
    
  2. 查看 analysis.json,并与用户讨论策略

  3. 如有需要,修改脚本中的插补逻辑或参数

  4. 运行插补:

    python3 scripts/impute_missing_values.py data.csv analysis.json data_imputed.csv
    

了解插补方法

该技能会根据数据特征采用智能插补策略。主要方法包括:

  • 均值/中位数:用于数值数据(正态分布使用均值,偏斜分布使用中位数)
  • 众数:用于分类变量(出现频率最高的值)
  • KNN(K 近邻):用于变量间存在相关性的多变量数值数据
  • 向前填充:用于时间序列数据(向前填充最后一次观测值)
  • 插值:用于平滑的时间趋势
  • 常量值:用于高基数文本字段(例如,“Unknown”)
  • 删除:用于缺失值超过 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 - 仪表板样式设置

最佳实践

分析方面:
  1. 插补前务必先运行分析,以了解数据质量
  2. 查看建议的插补方法——这些只是建议,并非必须遵循
  3. 留意缺失值百分比(超过 40% 时需要谨慎考虑)
  4. 检查数据类型是否符合预期(例如,将数值型 ID 识别为数值)
插补方面:
  1. 插补前保存原始数据集
  2. 查看插补报告,确认所用方法合理
  3. 检查插补值是否处于合理范围内
  4. 考虑为重要变量创建缺失指示变量
  5. 记录所用的插补方法,以便复现
仪表板方面:
  1. 使用插补后或清理后的数据,以获得最准确的可视化结果
  2. 如果要与非技术人员分享,请保存静态 HTML 图表
  3. 同时运行多个仪表板时,使用不同端口
  4. 对于大型数据集(超过 100k 行),可考虑抽样,以加快渲染速度

处理边缘情况

高缺失率(超过 50%)

脚本会自动标记缺失值超过 50% 的列。可选方案:

  • 如果该列并非关键列,则将其删除
  • 创建缺失指示变量
  • 调查数据缺失的原因(缺失本身可能包含信息)
混合数据类型

如果某列包含混合类型(例如,数字和文本):

  • 脚本会检测主要类型
  • 考虑在分析前清理该列
  • 对混合类型的文本列使用常量填补
小型数据集

对于行数少于 50 的数据集:

  • 简单填补(均值/中位数/众数)更稳定
  • 避免使用 KNN(需要足够的邻居)
  • 考虑删除行,而不是进行填补
时间序列缺口

对于时间戳不规则的时间序列:

  • 对短缺口使用前向填充
  • 对趋势平滑的较长缺口使用插值
  • 选择方法时考虑采样频率

故障排除

脚本因“找不到模块”而失败

安装依赖项:pip install -r requirements.txt

仪表板无法启动(端口被占用)

指定其他端口:python3 scripts/create_dashboard.py data.csv ./viz 8051

KNN 填补速度慢

对于大型数据集,KNN 的计算开销较大。对于超过 50k 行的数据集,可考虑:

  • 使用更简单的方法(均值/中位数)
  • 先对数据进行采样
  • 在 KNN 中使用更少的列
填补后的值似乎不正确
  • 查看分析报告,检查检测到的数据类型
  • 确认列被正确识别(数值型还是分类型)
  • 考虑手动调整或使用其他填补方法
  • 检查可能影响均值/中位数计算的异常值

资源

scripts/
  • analyze_missing_values.py - 全面的缺失值分析,并自动推荐策略
  • impute_missing_values.py - 根据数据特征,使用多种方法进行智能填补
  • create_dashboard.py - 交互式 Plotly Dash 仪表板生成器,支持多种可视化类型
references/
  • imputation_methods.md - 关于缺失值填补策略、决策框架和最佳实践的详细指南
其他文件
  • requirements.txt - 此技能的 Python 依赖项

评论

支持 Markdown