关于 data-analyst
data-analyst 是用于 CSV 分析的技能,结合缺失值评估、按数据特征进行填补以及交互式 Plotly Dash 仪表板。既可用于完整的数据质量与探索分析流程,也可单独执行各项任务。
主要功能
- 01缺失值模式分析与策略建议
- 02根据数据特征填补缺失值
- 03交互式 Plotly Dash 仪表板
- 04呈现统计摘要、趋势和相关性
- 05生成填补报告和清理后的 CSV
适用场景
- 01清理数据集前评估缺失数据
- 02按列特征选择方法填补缺失值
- 03在仪表板中探索趋势和分布
- 04检查填补效果及清理后的数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ailabs-393/ ai-labs-claude-skills --skill data-analyst安装后在 Claude Code 中输入/data-analyst确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
index.jspackage.jsonrequirements.txtreferences/imputation_methods.mdscripts/analyze_missing_values.pycreate_dashboard.pyimpute_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:自定义插补策略
当用户希望查看并调整插补策略时:
-
先运行分析:
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 近邻):用于变量间存在相关性的多变量数值数据
- 向前填充:用于时间序列数据(向前填充最后一次观测值)
- 插值:用于平滑的时间趋势
- 常量值:用于高基数文本字段(例如,“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- 仪表板样式设置
最佳实践
分析方面:
- 插补前务必先运行分析,以了解数据质量
- 查看建议的插补方法——这些只是建议,并非必须遵循
- 留意缺失值百分比(超过 40% 时需要谨慎考虑)
- 检查数据类型是否符合预期(例如,将数值型 ID 识别为数值)
插补方面:
- 插补前保存原始数据集
- 查看插补报告,确认所用方法合理
- 检查插补值是否处于合理范围内
- 考虑为重要变量创建缺失指示变量
- 记录所用的插补方法,以便复现
仪表板方面:
- 使用插补后或清理后的数据,以获得最准确的可视化结果
- 如果要与非技术人员分享,请保存静态 HTML 图表
- 同时运行多个仪表板时,使用不同端口
- 对于大型数据集(超过 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 依赖项