Skip to content
Back to skills

1338 Data Analysis 79a897fa

ASecurity

> **用途**: 从数据查询到可视化报告的完整流程 ---

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
developmentjavascriptgojavasqldatabase

Works with

  • mcp

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 1338-data-analysis_79a897fa --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 1338 Data Analysis 79a897fa?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 1338 Data Analysis 79a897fa
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-1338-data-analysis-79a897fa/badge)](https://www.skillsdirectory.com/skills/tools-only-1338-data-analysis-79a897fa)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# 数据分析工作流

> **用途**: 从数据查询到可视化报告的完整流程

---

## 标准流程

```
1️⃣ 需求理解 → 明确分析目标
        ↓
2️⃣ 数据查询 → database MCP 获取数据
        ↓
3️⃣ 数据处理 → 清洗、聚合、计算
        ↓
4️⃣ 可视化 → chart MCP 生成图表
        ↓
5️⃣ 报告生成 → 总结发现和建议
```

---

## 阶段 1: 需求理解

### 明确分析目标

- 要回答什么问题?
- 需要哪些维度的数据?
- 时间范围是什么?
- 输出形式是什么?(图表/报告/数字)

### 示例对话

```
用户: 分析上个月的用户增长情况

需要明确:
- 时间范围: 2026-01-01 到 2026-01-31
- 指标: 新增用户数、日活、留存率
- 维度: 按天/按周、按渠道
- 输出: 趋势图 + 关键数字
```

---

## 阶段 2: 数据查询

### 使用 Database MCP

```javascript
// 基础查询
database_execute_sql({
  sql: `
    SELECT
      DATE(created_at) as date,
      COUNT(*) as new_users
    FROM users
    WHERE created_at >= '2026-01-01'
      AND created_at < '2026-02-01'
    GROUP BY DATE(created_at)
    ORDER BY date
  `
});
```

### SQL 最佳实践

1. **使用 CTE 预过滤**

```sql
WITH filtered_data AS (
  SELECT *
  FROM orders
  WHERE created_at >= '2026-01-01'
)
SELECT
  DATE(created_at) as date,
  SUM(amount) as total
FROM filtered_data
GROUP BY DATE(created_at);
```

2. **避免 SELECT ***

```sql
-- ❌ 错误
SELECT * FROM users;

-- ✅ 正确
SELECT id, name, email, created_at
FROM users;
```

3. **添加 LIMIT**

```sql
SELECT *
FROM large_table
LIMIT 1000;
```

---

## 阶段 3: 数据处理

### 常见处理操作

```javascript
// 数据清洗
const cleanedData = rawData
  .filter(row => row.value !== null)
  .map(row => ({
    ...row,
    date: new Date(row.date).toISOString().split('T')[0]
  }));

// 聚合计算
const aggregated = data.reduce((acc, row) => {
  const key = row.category;
  if (!acc[key]) {
    acc[key] = { count: 0, total: 0 };
  }
  acc[key].count++;
  acc[key].total += row.value;
  return acc;
}, {});

// 计算衍生指标
const withMetrics = data.map(row => ({
  ...row,
  growthRate: row.previous ? (row.current - row.previous) / row.previous : 0,
  percentage: row.value / totalValue * 100
}));
```

### 时间序列处理

```javascript
// 填充缺失日期
function fillMissingDates(data, startDate, endDate) {
  const dateMap = new Map(data.map(d => [d.date, d]));
  const result = [];

  let current = new Date(startDate);
  const end = new Date(endDate);

  while (current <= end) {
    const dateStr = current.toISOString().split('T')[0];
    result.push(dateMap.get(dateStr) || { date: dateStr, value: 0 });
    current.setDate(current.getDate() + 1);
  }

  return result;
}

// 计算移动平均
function movingAverage(data, window = 7) {
  return data.map((d, i) => {
    const start = Math.max(0, i - window + 1);
    const windowData = data.slice(start, i + 1);
    const avg = windowData.reduce((sum, d) => sum + d.value, 0) / windowData.length;
    return { ...d, movingAvg: avg };
  });
}
```

---

## 阶段 4: 可视化

### 选择合适的图表

| 分析目的 | 推荐图表 |
|---------|---------|
| 趋势分析 | 折线图 |
| 对比分析 | 柱状图 |
| 占比分析 | 饼图 |
| 转化分析 | 漏斗图 |
| 增减分析 | 瀑布图 |

### 图表生成示例

```javascript
// 折线图:趋势分析
chart_generate_line_chart({
  data: timeSeriesData.map(d => ({
    time: d.date,
    value: d.users,
    group: '新增用户'
  })),
  title: '用户增长趋势',
  axisXTitle: '日期',
  axisYTitle: '用户数',
  width: 800,
  height: 400
});

// 柱状图:分类对比
chart_generate_bar_chart({
  data: channelData.map(d => ({
    category: d.channel,
    value: d.users
  })),
  title: '各渠道用户数',
  axisXTitle: '渠道',
  axisYTitle: '用户数'
});

// 饼图:占比分析
chart_generate_pie_chart({
  data: segmentData.map(d => ({
    category: d.segment,
    value: d.count
  })),
  title: '用户分布',
  innerRadius: 0.6
});
```

---

## 阶段 5: 报告生成

### 报告结构

```markdown
# [分析主题] 分析报告

## 概要
- 分析时间范围: YYYY-MM-DD 到 YYYY-MM-DD
- 数据来源: [表名/数据集]
- 关键发现: [1-2句话总结]

## 关键指标
| 指标 | 数值 | 环比 | 同比 |
|-----|-----|------|-----|
| 指标1 | xxx | +x% | +x% |
| 指标2 | xxx | -x% | +x% |

## 趋势分析
[插入趋势图]

主要发现:
1. 发现1
2. 发现2

## 分布分析
[插入分布图]

主要发现:
1. 发现1
2. 发现2

## 结论与建议
### 结论
1. 结论1
2. 结论2

### 建议
1. 建议1
2. 建议2

## 附录
- 数据查询: [SQL 或查询描述]
- 数据处理: [处理逻辑说明]
```

---

## 常见分析场景

### 场景 1: 用户增长分析

```
查询:
- 每日新增用户
- 按渠道分布
- 留存率计算

输出:
- 用户增长趋势图
- 渠道对比柱状图
- 留存曲线
```

### 场景 2: 收入分析

```
查询:
- 每日/每月收入
- 按产品分类
- 按客户分层

输出:
- 收入趋势图
- 产品收入对比
- 客户分层饼图
```

### 场景 3: 转化漏斗

```
查询:
- 各阶段用户数
- 转化率计算
- 流失原因

输出:
- 漏斗图
- 各阶段转化率
- 优化建议
```

---

## 最佳实践

1. **数据验证** - 检查数据质量和完整性
2. **异常处理** - 识别并处理异常值
3. **可复现** - 记录查询和处理逻辑
4. **可视化清晰** - 图表标题、坐标轴、图例完整
5. **结论明确** - 基于数据给出明确结论

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.