feat: add xlsx analysis

This commit is contained in:
alan.cl
2026-03-14 17:29:18 +08:00
parent e3fc3b3809
commit 3f854ea3ec
2 changed files with 23 additions and 10 deletions

View File

@@ -1,28 +1,28 @@
---
name: csv-data-analysis
description: This skill should be used when users need to analyze CSV files, understand data patterns, generate statistical summaries, or create data visualizations. Trigger keywords include "分析CSV", "数据分析", "CSV分析", "数据统计", "生成图表", "数据可视化".
description: This skill should be used when users need to analyze CSV or Excel files, understand data patterns, generate statistical summaries, or create data visualizations. Trigger keywords include "分析CSV", "分析Excel", "数据分析", "CSV分析", "Excel分析", "数据统计", "生成图表", "数据可视化".
---
# 智能 CSV 数据深度分析工具
# 智能数据深度分析工具
CSV数据分析工具是一个基于 AI 与前端可视化技术ECharts + Tailwind CSS的深度自动化数据探索工具。它能够快速提取统计特征、数据质量、数值分布、异常值检测、分类信息、相关性、排名以及时序趋势并在后半段补充异动概述、归因线索和总结建议生成高度美观和可交互的网页分析报告。
数据分析工具是一个基于 AI 与前端可视化技术ECharts + Tailwind CSS的深度自动化数据探索工具。它能够快速提取统计特征、数据质量、数值分布、异常值检测、分类信息、相关性、排名以及时序趋势并在后半段补充异动概述、归因线索和总结建议生成高度美观和可交互的网页分析报告。支持 CSV、Excel.xlsx/.xls和 TSV 格式。
报告整体遵循“前半段基础数据分析、后半段异动与归因增强”的结构,核心章节包括:报告摘要、数据概览与质量检查、数值指标分布特征、特征分析与结构分析、关系分析与异常识别、数据异动概述、归因分析模块、分析结果与统计明细、原因推测/总结/建议。
## 核心工作流LLM 必读)
作为 AI 助手,在用户上传 CSV 并要求分析时,你需要严格按照以下两步执行:
作为 AI 助手,在用户上传 CSV 或 Excel 文件并要求分析时,你需要严格按照以下两步执行:
### 第一步:提取数据特征 (执行脚本)
使用 `execute_skill_script_file` 工具运行 `csv_analyzer.py`,将 CSV 文件路径传入。
使用 `execute_skill_script_file` 工具运行 `csv_analyzer.py`,将数据文件路径传入(支持 .csv、.xlsx、.xls、.tsv 格式)
**工具调用参数示例:**
```json
{
"skill_name": "csv-data-analysis",
"script_file_name": "csv_analyzer.py",
"args": {"input_file": "/path/to/data.csv"}
"args": {"input_file": "/path/to/data.csv or /path/to/data.xlsx"}
}
```
@@ -104,7 +104,7 @@ CSV数据分析工具是一个基于 AI 与前端可视化技术ECharts + Tai
csv-data-analysis/
├── SKILL.md # 你当前正在阅读的技能指南
├── scripts/
│ └── csv_analyzer.py # Python 分析引擎(轻量级、无图形依赖)
│ └── csv_analyzer.py # Python 分析引擎(支持 CSV/Excel/TSV轻量级、无图形依赖)
└── templates/
└── report_template.html # 响应式 ECharts 报表模板(内含完整渲染逻辑与硬编码标题)
```

View File

@@ -106,7 +106,13 @@ def analyze_csv(file_path):
"""
try:
log(f"正在读取文件: {file_path}")
df = pd.read_csv(file_path)
ext = os.path.splitext(file_path)[1].lower()
if ext in (".xls", ".xlsx"):
df = pd.read_excel(file_path)
elif ext == ".tsv":
df = pd.read_csv(file_path, sep="\t")
else:
df = pd.read_csv(file_path)
# ==========================================
# 1. 基础概览数据
@@ -961,10 +967,17 @@ def main():
print(json.dumps(result, ensure_ascii=False))
sys.exit(1)
if not csv_file.lower().endswith(".csv"):
SUPPORTED_EXTENSIONS = (".csv", ".xls", ".xlsx", ".tsv")
if not csv_file.lower().endswith(SUPPORTED_EXTENSIONS):
result = {
"chunks": [
{"output_type": "text", "content": f"文件不是CSV格式: {csv_file}"}
{
"output_type": "text",
"content": (
f"不支持的文件格式: {csv_file}"
f"支持的格式: {', '.join(SUPPORTED_EXTENSIONS)}"
),
}
]
}
print(json.dumps(result, ensure_ascii=False))