用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/OpenSenseNova/SenseNova-Skills --skill pie-chart-data-analysis命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | pie-chart-data-analysis |
| description | 对多Sheet Excel或CSV数据进行分类汇总统计,自动识别关键字段并生成包含占比、数值及美化饼图的可下载分析报告。 |
Step1 读取文件并统计所有 Sheet 的行数,确认数据规模以决定处理策略。
import pandas as pd
file_path = input_file
total_rows = 0
sheet_names = []
try:
if file_path.endswith('.xlsx'):
excel_file = pd.ExcelFile(file_path)
sheet_names = excel_file.sheet_names
# 统计所有工作表总行数
for sheet in sheet_names:
df_tmp = pd.read_excel(file_path, sheet_name=sheet)
total_rows += len(df_tmp)
elif file_path.endswith('.csv'):
df = pd.read_csv(file_path)
total_rows = len(df)
else:
raise ValueError("不支持的文件格式,仅支持 .xlsx 或 .csv")
except Exception as e:
raise RuntimeError(f"文件读取失败: {e}")
is_large_file = total_rows >= 10000
Step2 自动识别分类列与数值列,执行数据清洗与格式转换。
import re
# 加载首个有效数据集
if file_path.endswith('.xlsx'):
df = pd.read_excel(file_path, sheet_name=sheet_names[0])
else:
df = pd.read_csv(file_path)
# 1. 识别数值目标列(如:金额、支出、得分、数量)
target_keywords = ['金额', '支出', '造价', '经费', '数量', '得分']
target_cols = [col for col in df.columns if any(k in col for k in target_keywords)]
target_col = target_cols[0] if target_cols else df.select_dtypes(include=['number']).columns[0]
# 2. 识别分类列(支持正则匹配中文序号或特定分类标识)
category_pattern = re.compile(r'[一二三四五六七八九十百]+|地区|类别|类型|状态')
category_cols = [col for col in df.columns if category_pattern.search(col)]
category_col = category_cols[0] if category_cols else df.select_dtypes(include=['object']).columns[0]
# 3. 数据清洗:处理合并单元格填充、缺失值及类型转换
df[category_col] = df[category_col].ffill() # 处理 Excel 合并单元格
df[target_col] = pd.to_numeric(df[target_col], errors='coerce')
clean_df = df[[category_col, target_col]].dropna()
clean_df.columns = ['category', 'value']
Step3 执行多维度聚合分析,计算占比及汇总统计。
# 分类汇总
summary_df = clean_df.groupby('category', as_index=False)['value'].sum()
total_val = summary_df['value'].sum()
# 计算占比并格式化
summary_df['percentage'] = (summary_df['value'] / total_val * 100).round(2)
summary_df = summary_df.sort_values(by='value', ascending=False)
# 构造总计行(可选)
total_row = pd.DataFrame([['总计', total_val, 100.0]], columns=summary_df.columns)
display_df = pd.concat([summary_df, total_row], ignore_index=True)
Step4 生成美化饼图并导出包含图表的 Excel 报告。
import matplotlib.pyplot as plt
from io import BytesIO
import base64
from openpyxl.drawing.image import Image
# 配置中英文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots(figsize=(10, 7), dpi=120)
colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7', '#DDA0DD']
# 突出显示最大占比项
explode = [0.05 if i == 0 else 0 for i in range(len(summary_df))]
wedges, texts, autotexts = ax.pie(
summary_df['value'],
labels=summary_df['category'],
autopct='%1.1f%%',
startangle=140,
colors=colors,
explode=explode,
shadow=True,
pctdistance=0.85
)
# 添加中心白圈(环形图效果)
centre_circle = plt.Circle((0,0), 0.70, fc='white')
fig.gca().add_artist(centre_circle)
plt.title(f'{target_col} 分布分析', fontsize=15, pad=20)
ax.legend(wedges, summary_df['category'], title="分类明细", loc=, bbox_to_anchor=(, , , ))
img_buffer = BytesIO()
plt.savefig(img_buffer, =, bbox_inches=)
plt.close()
output_path =
pd.ExcelWriter(output_path, engine=) writer:
display_df.to_excel(writer, sheet_name=, index=)
ws = writer.book[]
img_buffer.seek()
img = Image(img_buffer)
ws.add_image(img, )
(output_path, ) f:
b64 = base64.b64encode(f.read()).decode()
download_url =
()
Base-layer skill for the SenseNova-Skills project, providing low-level APIs for image generation, recognition (VLM), and text optimization (LLM). This skill does not preprocess inputs; it only calls backend services and returns results. This skill is not user-facing and is intended for upper-layer skills only.
Standard and fast PPT pipeline. All LLM / VLM / T2I calls are wrapped in a single CLI entry (scripts/run_stage.py). The main agent's job is simple: emit ONE shell command per stage, never write loops, never write prompts. Standard mode plans thoroughly with a three-sample deck preview checkpoint (three concatenated deck images plus a preview URL), web research, image search, and user-selected final output format (PPTX or PDF) for polished, delivery-ready presentations. Fast mode builds a complete draft immediately with autonomous decisions, then provides structured refinement suggestions so the user can iterate quickly. Supports AI-generated infographics (U1) for diagrams and flowcharts, web image search (Serper) for real photos, and ECharts for data charts.
用于用户请求深度研究、系统性研究、竞品分析、方案对比、趋势分析或事实核查时。**遇到以下任一情况就主动使用本 skill,不要自行搜几条就回答**:①用户出现触发词:深度研究 / 深度调研 / 深入研究 / 全面研究 / 系统研究 / 调研 / 调查 / 尽调 / 行业研究 / 市场研究 / 竞品分析 / 政策研究 / 技术研究 / 趋势研究 / 事实核查 / 写一份研究报告 / 调研报告 / 深度报告 / research / deep research;②请求需要跨多来源取证、多维度对比、交叉验证才能给出可靠结论;③用户要求产出报告、白皮书、行业分析或尽调文档;④话题涉及最新政策/市场/产品/价格/法规,需要系统核查。明确要求核验来源的单点事实可走 quick;无核验要求的简单常识问答不使用。模糊或宽泛的"研究/了解一下 X"也优先触发。仅不用于:一句话摘要、已给定单一来源的整理、纯文字润色改写。
基于 SOC 职业分类