SKILL.md
readonly只读
name
report-generator
description
生成包含图表、表格和可视化内容的专业数据报告
version
1.0
报告生成器技能
概述
该技能能够自动生成专业的数据报告。根据您的数据创建仪表盘、KPI摘要以及包含图表、表格和分析洞察的报告。
使用方法
- 提供数据(CSV、Excel、JSON或直接描述)
- 指定所需的报告类型
- 我将生成带有可视化内容的格式化报告
示例提示:
- "根据这些数据生成一份销售报告"
- "创建月度KPI仪表盘"
- "制作一份包含图表的执行摘要"
- "生成一份数据分析报告"
领域知识
报告组件
# 报告结构
report = {
'title': '月度销售报告',
'period': '2024年1月',
'sections': [
'executive_summary',
'kpi_dashboard',
'detailed_analysis',
'charts',
'recommendations'
]
}
使用Python生成报告
import pandas as pd
import matplotlib.pyplot as plt
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def generate_report(data, output_path):
# 加载数据
df = pd.read_csv(data)
# 计算KPI
total_revenue = df['revenue'].sum()
avg_order = df['revenue'].mean()
growth = df['revenue'].pct_change().mean()
# 创建图表
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
df.plot(kind='bar', ax=axes[0,0], title='月度收入')
df.plot(kind='line', ax=axes[0,1], title='趋势')
plt.savefig('charts.png')
# 生成PDF
# ... PDF生成代码
return output_path
HTML报告模板
def generate_html_report(data, title):
html = f'''
<!DOCTYPE html>
<html>
<head>
<title>{title}</title>
<style>
body {{ font-family: Arial; margin: 40px; }}
.kpi {{ display: flex; gap: 20px; }}
.kpi-card {{ background: #f5f5f5; padding: 20px; border-radius: 8px; }}
.metric {{ font-size: 2em; font-weight: bold; color: #2563eb; }}
table {{ border-collapse: collapse; width: 100%; }}
th, td {{ border: 1px solid #ddd; padding: 12px; text-align: left; }}
</style>
</head>
<body>
<h1>{title}</h1>
<div class="kpi">
<div class="kpi-card">
<div class="metric">${data['revenue']:,.0f}</div>
<div>总收入</div>
</div>
<div class="kpi-card">
<div class="metric">{data['growth']:.1%}</div>
<div>增长率</div>
</div>
</div>
<!-- 更多内容 -->
</body>
</html>
'''
return html
示例:销售报告
import pandas as pd
import matplotlib.pyplot as plt
def create_sales_report(csv_path, output_path):
# 读取数据
df = pd.read_csv(csv_path)
# 计算指标
metrics = {
'total_revenue': df['amount'].sum(),
'total_orders': len(df),
'avg_order': df['amount'].mean(),
'top_product': df.groupby('product')['amount'].sum().idxmax()
}
# 创建可视化
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 按产品收入
df.groupby('product')['amount'].sum().plot(
kind='bar', ax=axes[0,0], title='各产品收入'
)
# 月度趋势
df.groupby('month')['amount'].sum().plot(
kind='line', ax=axes[0,1], title='月度收入'
)
plt.tight_layout()
plt.savefig(output_path.replace('.html', '_charts.png'))
# 生成HTML报告
html = generate_html_report(metrics, '销售报告')
with open(output_path, 'w') as f:
f.write(html)
return output_path
create_sales_report('sales_data.csv', 'sales_report.html')






