🎯 数据分析Agent概览
OpenClaw可以作为强大的数据分析平台,通过Agent能力实现数据的自动采集、处理、分析和可视化。
📥 采集
API/爬虫/文件
→
🧹 清洗
去重/格式化
→
📊 分析
统计/趋势
→
🎨 可视化
图表/看板
→
📄 报告
自动输出
📥 数据采集
Web数据采集
# 使用web_fetch获取网页数据
data = web_fetch(url="https://api.example.com/data")
# 使用web_search搜索信息
results = web_search(query="AI工具 使用数据 2026", count=10)
# 使用browser获取动态页面
browser(action="navigate", url="https://dashboard.example.com")
snapshot = browser(action="snapshot")
API数据采集
# 使用exec调用API
exec(command="""
curl -s -H "Authorization: Bearer $TOKEN" \
https://api.example.com/analytics \
| jq '.data[] | {date, visitors, revenue}'
""")
# 使用MCP工具(如有配置)
wecom_mcp(action="call", category="data", method="getAnalytics", args={
"start_date": "2026-06-01",
"end_date": "2026-06-06"
})
文件数据采集
# 读取CSV文件
exec(command="cat /data/sales.csv | head -20")
# 读取JSON文件
read(path="/data/config.json")
# 读取数据库(通过脚本)
exec(command="python3 /scripts/query_db.py --sql 'SELECT * FROM users'")
🧹 数据处理
数据清洗
# 使用Python处理数据
exec(command="""
python3 << 'EOF'
import pandas as pd
import json
# 读取数据
df = pd.read_csv('/tmp/raw_data.csv')
# 清洗
df = df.dropna() # 去除空值
df = df.drop_duplicates() # 去重
df['date'] = pd.to_datetime(df['date']) # 格式化日期
# 保存
df.to_csv('/tmp/clean_data.csv', index=False)
print(f"清洗完成,剩余 {len(df)} 条记录")
EOF
""")
数据转换
# JSON转CSV
exec(command="""
python3 -c "
import json, csv
with open('/tmp/data.json') as f:
data = json.load(f)
with open('/tmp/data.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
"
""")
# 数据聚合
exec(command="""
python3 -c "
import pandas as pd
df = pd.read_csv('/tmp/data.csv')
summary = df.groupby('category').agg({
'revenue': 'sum',
'orders': 'count',
'rating': 'mean'
}).reset_index()
summary.to_csv('/tmp/summary.csv')
"
""")
📊 统计分析
基础统计
# 使用Python进行统计分析
exec(command="""
python3 << 'EOF'
import pandas as pd
import numpy as np
df = pd.read_csv('/tmp/clean_data.csv')
# 基础统计
print("=== 基础统计 ===")
print(f"总记录数: {len(df)}")
print(f"平均值: {df['value'].mean():.2f}")
print(f"中位数: {df['value'].median():.2f}")
print(f"标准差: {df['value'].std():.2f}")
print(f"最大值: {df['value'].max()}")
print(f"最小值: {df['value'].min()}")
# 趋势分析
print("\n=== 趋势分析 ===")
df['date'] = pd.to_datetime(df['date'])
daily = df.groupby('date')['value'].sum()
print(f"日均值: {daily.mean():.2f}")
print(f"增长趋势: {'上升' if daily.iloc[-1] > daily.iloc[0] else '下降'}")
EOF
""")
高级分析
# 相关性分析
exec(command="""
python3 -c "
import pandas as pd
df = pd.read_csv('/tmp/data.csv')
correlation = df[['revenue', 'visitors', 'conversion']].corr()
print(correlation)
"
""")
# 预测分析(简单线性回归)
exec(command="""
python3 << 'EOF'
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
df = pd.read_csv('/tmp/data.csv')
X = np.arange(len(df)).reshape(-1, 1)
y = df['revenue'].values
model = LinearRegression()
model.fit(X, y)
# 预测未来7天
future = np.arange(len(df), len(df)+7).reshape(-1, 1)
predictions = model.predict(future)
print("未来7天预测:")
for i, pred in enumerate(predictions):
print(f" 第{i+1}天: {pred:.2f}")
EOF
""")
🎨 可视化看板
使用Canvas创建看板
# 使用Canvas A2UI创建数据看板
canvas(action="a2ui_push", jsonl=[
{"type": "heading", "text": "📊 数据分析看板"},
{"type": "divider"},
{"type": "metric", "label": "总访问量", "value": "12,345", "change": "+15%"},
{"type": "metric", "label": "转化率", "value": "3.2%", "change": "+0.5%"},
{"type": "metric", "label": "收入", "value": "¥45,678", "change": "+22%"},
{"type": "divider"},
{"type": "chart", "data": chart_data, "chartType": "line", "title": "趋势图"},
{"type": "table", "rows": table_data, "title": "详细数据"}
])
生成图表
# 使用Python生成图表
exec(command="""
python3 << 'EOF'
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('/tmp/data.csv')
# 折线图
plt.figure(figsize=(10, 6))
plt.plot(df['date'], df['revenue'], marker='o')
plt.title('收入趋势')
plt.xlabel('日期')
plt.ylabel('收入')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('/tmp/trend.png')
# 柱状图
plt.figure(figsize=(10, 6))
df.groupby('category')['revenue'].sum().plot(kind='bar')
plt.title('各类别收入')
plt.tight_layout()
plt.savefig('/tmp/category.png')
EOF
""")
📄 自动报告
报告生成Skill
# SKILL.md - 数据分析报告
## 执行步骤
### 1. 数据采集
从指定来源获取最新数据。
### 2. 数据处理
清洗、转换、聚合数据。
### 3. 统计分析
计算关键指标和趋势。
### 4. 生成报告
格式:
# 数据分析报告 - {日期}
## 关键指标
| 指标 | 数值 | 变化 |
|------|------|------|
| 访问量 | 12,345 | +15% |
| 转化率 | 3.2% | +0.5% |
| 收入 | ¥45,678 | +22% |
## 趋势分析
(图表和文字说明)
## 异常检测
(异常点说明)
## 建议
(基于数据的建议)
### 5. 保存和发送
- 保存到 /var/www/miaoquai/reports/
- 发送到飞书群
- 更新看板
⏰ 定时任务
# Cron配置
0 1 * * * # 01:00 数据采集
0 2 * * * # 02:00 数据处理
0 3 * * * # 03:00 统计分析
0 8 * * * # 08:00 生成日报
0 9 * * 1 # 09:00 每周报告
0 10 1 * * # 10:00 每月报告
💡 数据分析最佳实践
- 数据质量 — 清洗是分析的基础
- 指标选择 — 关注核心业务指标
- 可视化 — 图表比数字更直观
- 自动化 — 定时执行,减少人工
- 可解释性 — 报告要通俗易懂