首页 / 全部技能 / 文档与知识 / csv-data-summarizer
文档与知识 · coffeefuelbump/csv-data-summarizer-claude-skill

csv-data-summarizer

Analyzes CSV files, generates summary stats, and plots quick visualizations using Python and pandas.

L4 高权限 · 分级授权与审计V1 已固定执行命令安装依赖读写文件Dual-pass Audit
Author coffeefuelbumpGitHub coffeefuelbump/csv-data-summarizer-claude-skill ↗Stars 465License 仓库内无 LICENSE 文件(git ls-tree 无 LICENSE);README 自述 'MIT License - feel free to use this skill for personal or commercial projects!',GitHub API license=nullCommit 9b3affd270
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

全部能力就是一个 182 行的 pandas 函数 summarize_csv(file_path):读 CSV → 按列类型走固定分支 → 拼字符串报告,并在过程中把图直接用 plt.savefig 落到**当前工作目录**。

analyze.py
def summarize_csv(file_path): """ Comprehensively analyzes a CSV file and generates multiple visualizations. Args: file_path (str): Path to the CSV file Returns: str: Formatted comprehensive analysis of the dataset """ df = pd.read_csv(file_path)
报告是分段追加的字符串数组('summary.append(...)' 数十处),末尾 'return "\n".join(summary)';图表文件名与报告文本同为硬编码常量(correlation_heatmap.png / time_series_analysis.png / distributions.png / categorical_distributions.png)。

分支判据完全是列类型/列名子串,而非行业或数据语义:数值列统计+相关、object 列做取值频次、列名含 'date'/'time' 才做时间序列。

analyze.py
date_cols = [c for c in df.columns if 'date' in c.lower() or 'time' in c.lower()]
配套:'numeric_cols = df.select_dtypes(include='number').columns.tolist()'、'categorical_cols = df.select_dtypes(include=['object']).columns.tolist()' 且随后过滤掉名字含 'id' 的列('categorical_cols = [c for c in categorical_cols if 'id' not in c.lower()]')。

报告内容与顺序固定:数据总览(行列/列名)→ 每列 dtype → 缺失值统计 → 数值 describe → 相关系数矩阵 → 分类取值 Top10 → 时间序列区间 → 已生成图表清单。

analyze.py
summary.append("📊 DATA OVERVIEW")
缺失值部分会按列给出计数与百分比('Missing values: {missing:,} ({missing_pct:.2f}% of total data)'),无缺失时输出 '✓ No missing values - dataset is complete!'。

可视化是四类条件图:相关热力图(≥2 数值列)、时间序列折线(有日期列且有数值列,最多 3 条)、数值分布直方图(2x2,最多 4 列)、分类横向条形图(2x2,最多 4 列)。

analyze.py
plt.savefig('correlation_heatmap.png', dpi=150) plt.close() charts_created.append('correlation_heatmap.png')
一律 'plt.savefig(...)' 到相对路径 + 'plt.close()';数量上限写死在切片里(categorical_cols[:5] 文本、value_counts.head(10)、numeric_cols[:3]/[:4])。

『不要问用户』被写成最高优先级的硬性行为要求:SKILL.md 用全大写段落禁止一切提问与选项,要求立即跑完整分析并一次交付。

SKILL.md
**DO NOT ASK THE USER WHAT THEY WANT TO DO WITH THE DATA.** **DO NOT OFFER OPTIONS OR CHOICES.**
同一段还列出禁止语句('What would you like me to do with this data?'、'Here are some common options:' 等)与禁止行为(列选项、等用户指示、给部分分析)。这是本 skill 最鲜明的产品取向:以『零交互』对抗分析类助手常见的过度确认。

触发语境被明确列出(上传/引用 CSV、要求 summarize/analyze/visualize、想了解数据结构与质量),并规定缺失值、日期列等探测细节。

SKILL.md
Claude should use this Skill whenever the user: - Uploads or references a CSV file - Asks to summarize, analyze, or visualize tabular data
调用方式写的是『The Skill provides a Python function summarize_csv(file_path)』——即由宿主 Claude 写/跑代码调用该函数,而非脚本自带 CLI 子命令(analyze.py 只在 __main__ 里接受一个可选路径参数,默认 'resources/sample.csv')。

分发形式是给 Claude.ai Skills 上传的 zip 包,仓库同时保留同一份源码;zip 内文件与仓库工作区逐字节一致(已校验)。

README.md
2. Go to [Claude.ai](https://claude.ai) → Settings → Capabilities → Skills 3. Upload the zip file 4. Enable the skill
校验:zip 内 analyze.py / SKILL.md / requirements.txt 的 sha256 与仓库同名文件完全一致(见 verification.second_pass);zip 含 SKILL.md、analyze.py、requirements.txt、resources/{sample.csv,README.md},与工作区目录结构相同但少了 examples/。

2核心能力

01一次调用产出完整数据体检报告:行列规模、每列类型、缺失值分布、数值描述统计、相关系数矩阵
02自动条件化出图(相关热力图 / 时间序列折线 / 数值分布直方图 / 分类 Top-N 条形图)
03分类列频次剖析(前 5 个分类列、每列 Top 10 取值及占比)
04日期列自动识别与区间统计(实际判据是列名含 'date' 或 'time')
05缺失值定位到列(计数 + 百分比),作为数据质量结论的一部分
06可脱离宿主独立运行(analyze.py 自带 __main__,默认跑 resources/sample.csv)
07零交互执行纪律:禁止询问、禁止列选项、必须一次给全量结果

3外部依赖

KindDependency / Endpoint
packagepandas
packagematplotlib
packageseaborn
network无:脚本不发起任何网络请求(无 URL 取数、无遥测、无外部 API);仓库内 URL 仅出现在 README/resources 的徽章与社区链接中

4管控建议与判定依据

建议配套管控措施
面向 Agent
分级或逐次授权,建议在沙箱运行
面向管理者
审批流程、可回滚、全程审计
判定依据(文件路径与关键语句摘要)
  • scripts/: 执行本地脚本或命令: python analyze.py [csv_path](默认 resources/sample.csv)
  • scripts/ 或 SKILL.md: 声明动态安装外部语言包依赖
  • 本地工作目录: 文件读写与工件输出: **当前工作目录**下按固定文件名写 PNG:correlation_heatmap.png、time_series_analysis.png、dis
审计说明: 。按统一分档:本 skill 属『仅本地工具/本地读写』——用 pandas/matplotlib/seaborn 在本地做统计与绘图,无网络外发、无凭证读取、无子进程、无任意代码执行面;依赖为 PyPI 官方包。之所以不是绿档:它确实执行 Python 脚本、会在工作目录写固定文件名图片(可能覆盖同名文件)、并需安装三项第三方库。外发面与凭证面为零,未触及黄/橙的触发条件。

5第二遍独立确认

  • [ok] 『无网络外发/无凭证读取』结论 — analyze.py imports 仅 pandas/matplotlib.pyplot/seaborn/pathlib;全仓(排除 .git)关键词扫描 requests|urllib|socket|http|subprocess|os.system|getenv|os.environ 零命中;URL 仅出现在 README/resources/README 的徽章与社区链接。
  • [discrepancy] 日期列判据与文档不符(实测) — SKILL.md Notes 写 'Automatically detects date columns (columns containing \'date\' in name)',实际代码是 "'date' in c.lower() or 'time' in c.lower()"。实测在仓库自带演示集上命中 **customer_lifetime_value**('life**time**' 含 'time'),随后 pd.to_datetime 把 2400 一类整数按纳秒解释成 1970 年,输出 'Date range: 1970-01-01 … to 1970-01-01 …'、'Span: 0 days',并据此画出无意义的时间序列图(实测 pandas 3.0.5;该行为与 pandas 2.x 一致:to_datetime(int) 亦按纳秒)。即 README 宣称该演示集『Perfect for showcasing time-series analysis』,实际触发的是误判列。
  • [discrepancy] 『自适应/智能识别行业数据类型』的能力声明 — SKILL.md 列出 Sales/E-commerce、Customer、Financial、Operational、Survey 五类数据的『相应分析』,README 写 'Automatically detects data type (sales, customer, financial, survey, etc.) and applies relevant analysis';但 analyze.py 没有任何行业或语义分类代码,全部行为由 dtype 与列名子串决定(number→describe/corr/hist,object→value_counts/barh,含 date|time→区间)。属**能力夸大**:它确实会因列构成不同而产出不同报告,但没有『识别数据类型』这一步。
  • [discrepancy] Notes『Generates visualizations only when date columns are present』 — 实际仅 time_series_analysis.png 需要日期列;distributions.png 只需数值列、categorical_distributions.png 只需分类列、correlation_heatmap.png 只需 ≥2 数值列。该句把条件说得比实现更严,属文档描述偏差(本身不影响使用)。
  • [discrepancy] SKILL.md『Files』清单与仓库实际文件 — SKILL.md 只列 analyze.py、requirements.txt、resources/sample.csv、resources/README.md;仓库另有 examples/showcase_financial_pl_data.csv(README 重点宣传的演示集)与 csv-data-summarizer.zip(分发包)。清单不完整。
  • [ok] 分发包与源码一致性 — zip 内 analyze.py(sha256 fa217db952541d59…)、SKILL.md(1599338ac2db52ba…)、requirements.txt(3787888dbf39eb94…)与工作区同名文件哈希完全相同;zip 结构为 SKILL.md/analyze.py/requirements.txt/resources/{sample.csv,README.md}。
  • [ok] 依赖声明三重一致 — SKILL.md frontmatter metadata(python>=3.8, pandas>=2.0.0, matplotlib>=3.7.0, seaborn>=0.12.0)与 requirements.txt 三行、README Technical Details 段逐项吻合;实际运行时三项库均被 import(seaborn 用于 heatmap,matplotlib 用于绘图)。
  • [ok] 写盘行为与覆盖风险 — 四处 plt.savefig 全部使用相对文件名(correlation_heatmap.png / time_series_analysis.png / distributions.png / categorical_distributions.png)+ dpi=150 + plt.close();不创建目录、不检查同名文件、不接受输出路径参数——已在 file_writes 与 risks 记入。

6结论

  • 零门槛:拖一个 CSV 进对话就得到完整报告与多张图,不需要回答任何问题——把『分析类助手最大的摩擦』直接删掉。
  • 实现极简可读可改:单文件 182 行、无抽象层,任何懂 pandas 的人几分钟就能加自己的领域计算或改图型(resources/README 也明确给出改法)。
  • 报告结构完整且稳定:规模/类型/缺失/描述统计/相关/分类频次/时间区间/图表清单八段固定顺序,便于人快速扫读或程序化截取。
  • 输出条件化做得克制:只在数据支持时才出对应图(无日期不出时序、无多数值列不出热力图),避免生成垃圾图表。
  • 完全本地执行,无任何外发与凭证:适合处理含客户/财务字段的敏感表格(数据不出本机)。
  • 适合: 适合:快速摸底一份陌生 CSV(列名、类型、缺失、量级、初步相关与分布)的日常场景;非技术用户想『上传即得报告』;需要在本地处理敏感表格(客户/财务)而不愿外发数据的用户;以及想拿一个极简模板改造出自己领域分析脚本的开发者(单文件、易改)。
    不适合: 不适合:期望按行业做专业分析的场景(无行业逻辑,需自行扩展);需要严谨统计/因果结论或异常值检验的场合(工具只做描述性统计,不做检验与免责);超大表或流式数据(全量载入内存,无分块);要求确定输出路径/不覆盖已有文件的流水线(文件名写死);以及需要跨语言字符集/多编码鲁棒性保障的场景(pd.read_csv 默认编码假设未处理)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload csv-data-summarizer.tar.gz
    sha256: 812ec659a4b533a8…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 9b3affd270.