Claude Code实战教程(18):数据分析自动化流水线——从Excel到洞察
《从零开始的 Claude Code 实战系列教程》第 18 篇 · 公众号「麒麟剑的AI自动化Lab」连载
▲ 数据分析是商业决策的核心,AI 让这个过程变得前所未有的简单
一、数据分析的痛点
传统的数据分析流程存在诸多问题:
手动数据处理流程:
下载数据 → 打开 Excel → 清洗数据 → 分析 → 制作图表 → 写报告
每个步骤都可能出错:
• 复制粘贴遗漏
• 公式错误
• 图表误解
• 报告不一致真实场景:每周一早上,分析师要花 3 小时处理上周的销售数据,生成报表。如果数据源发生变化,整个流程都要重做。
二、自动化流水线设计
整体架构
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 数据源 │ → │ 数据清洗 │ → │ 数据分析 │
│ (CSV/API) │ │ (Pandas) │ │ (统计/ML) │
└─────────────┘ └─────────────┘ └──────┬──────┘
│
┌─────────────┐ ┌─────────────┐ │
│ 报告生成 │ ← │ 可视化 │ ←─────────┘
│ (PDF/HTML) │ │ (图表) │
└─────────────┘ └─────────────┘三、实战:构建销售数据分析流水线
Step 1:数据导入与清洗
import pandas as pd
import anthropic
client = anthropic.Anthropic()
# 读取原始数据
df = pd.read_csv('sales_data.csv')
# Claude 帮助识别问题
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": f"""
分析以下销售数据的常见问题:
{df.head(20).to_string()}
请指出:
1. 缺失值的位置和比例
2. 异常值
3. 数据类型问题
"""
}]
)
print(message.content[0].text)Step 2:数据清洗
def clean_sales_data(df):
"""
数据清洗流程
"""
# 1. 处理缺失值
df['customer_id'].fillna(df['customer_id'].mode()[0], inplace=True)
# 2. 转换日期
df['order_date'] = pd.to_datetime(df['order_date'])
# 3. 移除异常值
df = df[df['amount'] < df['amount'].quantile(0.99)]
# 4. 标准化格式
df['product_category'] = df['product_category'].str.lower().str.strip()
return dfStep 3:数据分析
def analyze_sales(df):
"""
多维度分析
"""
analysis = {
'total_sales': df['amount'].sum(),
'avg_order_value': df['amount'].mean(),
'top_products': df.groupby('product')['amount'].sum().nlargest(10),
'monthly_trend': df.resample('M', on='order_date')['amount'].sum(),
'region_performance': df.groupby('region')['amount'].agg(['sum', 'mean'])
}
return analysisStep 4:可视化
import matplotlib.pyplot as plt
import seaborn as sns
def create_visualizations(analysis):
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 月度趋势
axes[0, 0].plot(analysis['monthly_trend'])
axes[0, 0].set_title('Monthly Sales Trend')
# Top 产品
axes[0, 1].barh(analysis['top_products'].index,
analysis['top_products'].values)
axes[0, 1].set_title('Top 10 Products by Sales')
# 地区表现
axes[1, 0].bar(analysis['region_performance'].index,
analysis['region_performance']['sum'])
axes[1, 0].setTitle('Sales by Region')
# 分布
axes[1, 1].hist(analysis['df']['amount'], bins=30)
axes[1, 1].set_title('Order Amount Distribution')
plt.tight_layout()
plt.savefig('sales_report.png')Step 5:报告生成
def generate_report(analysis):
"""
生成分析报告
"""
report = f"""
# 销售数据分析报告
## 概述
- 总销售额:${analysis['total_sales']:,.2f}
- 平均订单价值:${analysis['avg_order_value']:,.2f}
## 月度趋势
[月度趋势图]
## 热门产品
{analysis['top_products'].to_string()}
## 地区表现
{analysis['region_performance'].to_string()}
## 结论与建议
1. Q4 季度销售增长明显,建议增加库存
2. 地区 A 表现最佳,可考虑扩张
3. 产品 X、Y、Z 是主力产品,应重点维护
"""
with open('sales_report.md', 'w') as f:
f.write(report)四、自动化调度
使用 cron 定时执行
# 编辑 crontab
crontab -e
# 每天早上 9 点执行分析
0 9 * * * cd /path/to/project && python analyze.py或使用 Python schedule
import schedule
import time
def job():
df = pd.read_csv('sales_data.csv')
df = clean_sales_data(df)
analysis = analyze_sales(df)
create_visualizations(analysis)
generate_report(analysis)
# 每天 9 点执行
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(60)五、进阶:交互式分析
使用 Streamlit 构建 Dashboard
import streamlit as st
import pandas as pd
st.title('销售数据分析仪表盘')
# 上传文件
uploaded_file = st.file_uploader("上传销售数据", type=['csv'])
if uploaded_file is not None:
df = pd.read_csv(uploaded_file)
# 筛选器
region = st.sidebar.selectbox('选择地区', df['region'].unique())
start_date = st.sidebar.date_input('开始日期')
end_date = st.sidebar.date_input('结束日期')
# 过滤数据
filtered_df = df[(df['region'] == region) &
(df['order_date'] >= start_date) &
(df['order_date'] <= end_date)]
# 展示指标
col1, col2, col3 = st.columns(3)
col1.metric('总销售额', f"${filtered_df['amount'].sum():,.2f}")
col2.metric('订单数', len(filtered_df))
col3.metric('平均订单', f"${filtered_df['amount'].mean():.2f}")
# 图表
st.line_chart(filtered_df.resample('M', on='order_date')['amount'].sum())六、本章小结
| 组件 | 工具 | 用途 |
|---|---|---|
| 数据导入 | Pandas | 读取 CSV/Excel/数据库 |
| 数据清洗 | Pandas + Claude | 处理缺失值、异常值 |
| 数据分析 | Pandas + Claude | 统计分析和洞察 |
| 可视化 | Matplotlib/Seaborn | 生成图表 |
| 报告生成 | Markdown + Claude | 自动生成报告 |
| 自动化调度 | cron/Schedule | 定时执行 |
| 交互界面 | Streamlit | 构建 Dashboard |
下期预告(第 19 篇):内容创作生产力革命——用AI加速你的写作、设计和发布流程
关注本系列,从入门到专家,系统掌握 Claude Code 的全部技能。