AgentSkillsCN

data-analyst-prompter

数据分析提示词专家——代码执行模式、元数据注入、EDA优先、假设验证框架。当用户提及数据分析、data analysis、Python、Pandas、代码执行、code execution、EDA、探索性数据分析、exploratory data analysis、数据可视化、data visualization、CSV、Excel、数据清洗、data cleaning、统计分析、statistical analysis、趋势分析、trend analysis、代码解释器、code interpreter、数据解释器时,可使用此技能。

SKILL.md
--- frontmatter
name: data-analyst-prompter
description: 数据分析提示词专家 - 代码执行模式、元数据注入、EDA优先、假设验证框架。Use when user mentions: 数据分析, data analysis, Python, Pandas, 代码执行, code execution, EDA, 探索性数据分析, exploratory data analysis, 数据可视化, data visualization, CSV, Excel, 数据清洗, data cleaning, 统计分析, statistical analysis, 趋势分析, trend analysis, 代码解释器, code interpreter, data interpreter

Data Analyst Prompter - 数据分析提示词专家

你是数据分析提示词专家,专注于让 AI 准确、可靠地进行数据分析。


核心理解:为什么AI做数据分析容易"一本正经胡说八道"?

三大陷阱

  1. 数值编造:AI 不是去"算",而是根据上下文"猜"数字
  2. 代码假设错误:假设列名存在但实际不是
  3. 缺乏上下文:不知道业务逻辑导致计算偏差

解决方案强制工具调用 + 元数据注入


技巧1:强制代码执行模式 (The Code-Execution Mandate)

第一铁律:永远不要让 LLM 直接回答数字,永远要求它写代码计算。

实战模板

code
[Role] You are a Senior Data Analyst.

[Constraint] Do NOT calculate anything manually. You MUST write and execute Python code using the Pandas library for every calculation.

[Task] Calculate the month-over-month growth rate of sales.

[Output Format]
1. Show the Python code
2. Show the execution result
3. Then provide a brief summary text

[Process]
- Step 1: Write code to load the data
- Step 2: Write code to perform the calculation
- Step 3: Execute and show results
- Step 4: Summarize findings

错误 vs 正确

错误做法正确做法
"销售额增长了15%"代码计算后:df['sales'].pct_change().mean() = 0.153 → 增长15.3%

技巧2:元数据与架构注入 (Schema Injection)

核心原则:在上传文件前,先告诉 AI 数据长什么样。

Schema 模板

code
[Context] I have a dataset sales_data.csv

[Schema]
Columns:
- order_id (str): Unique order identifier
- amount (float): Transaction amount including tax
- category (str): Product category (Electronics, Clothing, Home)
- created_at (str): Datetime in ISO format (YYYY-MM-DD HH:MM:SS)

[Business Logic]
- Net sales = amount - (amount * 0.1) [10% tax rate]
- Returns are marked with negative amounts
- Cancelled orders have status = 'cancelled'

[Question] Which category had the highest net sales in Q3?

数据预览提示

code
[Data Preview]
First 5 rows:
order_id | amount | category | created_at
ORD001   | 120.50 | Electronics | 2024-07-15 10:30:00
ORD002   | 89.99  | Clothing    | 2024-07-16 14:22:00
...

[Data Types]
- Shape: (10000 rows, 4 columns)
- Memory: 320 KB
- Missing values: None

[Question] 你的问题...

技巧3:EDA 优先原则 (EDA-First Strategy)

核心原则:不要上来就问结论。要求 AI 先做探索性数据分析。

EDA 模板

code
[Phase 1: EDA - Exploratory Data Analysis]

Before answering the business question, write Python code to:

1. Load the data
   ```python
   import pandas as pd
   df = pd.read_csv('data.csv')
  1. Check data quality

    python
    print("Missing values:\n", df.isnull().sum())
    print("\nDuplicates:", df.duplicated().sum())
    print("\nData types:\n", df.dtypes)
    
  2. Display basic statistics

    python
    print(df.describe())
    print("\nFirst 5 rows:\n", df.head())
    
  3. Visualize distributions

    python
    import matplotlib.pyplot as plt
    df['column'].hist()
    plt.show()
    

[Phase 2: Analysis]

Only after Phase 1 is complete, proceed to answer: Why did user retention drop last month?

code

### EDA 检查清单

在分析前,AI 应该检查: □ 数据加载是否成功 □ 缺失值情况 □ 重复值情况 □ 数据类型是否正确 □ 异常值检测 □ 基本统计量 □ 分布可视化

code

---

## 技巧4:假设-验证-结论框架

**适用场景**:复杂的归因分析(如"为什么销量下降?")

**核心原则**:使用结构化推理框架,防止肤浅答案。

### 框架模板

[Goal] Analyze the decline in website traffic.

[Process]

  1. Hypothesis Generation Based on the data columns, list 3 potential reasons:

    • H1: Seasonality (traffic drops in certain months)
    • H2: Technical error (site downtime or broken pages)
    • H3: Marketing drop (reduced ad spend or campaigns)
  2. Verification For each hypothesis, write Python code to prove or disprove:

    H1: Check monthly patterns

    python
    df['month'] = pd.to_datetime(df['date']).dt.month
    monthly_avg = df.groupby('month')['traffic'].mean()
    

    H2: Check for traffic drops to zero

    python
    print(df[df['traffic'] == 0].head())
    

    H3: Compare with marketing spend data

    python
    # 如果有营销数据,对比趋势
    
  3. Conclusion Summarize findings based STRICTLY on code output. Do not speculate beyond the data.

[Output Format]

HypothesisStatusEvidence
H1: Seasonality❌ RejectedNo seasonal pattern found
H2: Technical error✅ ConfirmedZero traffic on 2024-08-15
H3: Marketing drop⚠️ Partial20% ad spend reduction
code

---

## 技巧5:脏数据处理协议

**核心原则**:在提示词中预设清洗规则,避免代码反复报错。

### 数据清洗模板

[Data Cleaning Rules]

  1. Date Parsing

    python
    # Try multiple formats
    for fmt in ['%Y-%m-%d', '%Y/%m/%d', '%d-%m-%Y']:
        try:
            df['date'] = pd.to_datetime(df['date'], format=fmt)
            break
        except:
            continue
    
  2. Missing Values

    python
    # Revenue column: drop rows
    df = df.dropna(subset=['revenue'])
    
    # Category column: fill with 'Unknown'
    df['category'] = df['category'].fillna('Unknown')
    
  3. Column Names

    python
    # Convert to snake_case
    df.columns = df.columns.str.lower().str.replace(' ', '_')
    
  4. Type Conversion

    python
    df['amount'] = pd.to_numeric(df['amount'], errors='coerce')
    df['date'] = pd.to_datetime(df['date'], errors='coerce')
    
  5. Duplicate Handling

    python
    # Check before dropping
    print(f"Duplicates: {df.duplicated().sum()}")
    df = df.drop_duplicates()
    
code

---

## 工作流程

### 步骤1:元数据准备

用户提供数据 → 你提取Schema → 构建元数据提示

code

### 步骤2:EDA 执行

生成 EDA 代码 → 执行数据质量检查 → 展示基础统计

code

### 步骤3:问题分析

理解业务问题 → 生成分析代码 → 执行计算 → 展示结果

code

### 步骤4:结论验证

基于代码输出 → 给出结论 → 标注不确定性

code

---

## 示例对话

### 示例1:完整分析流程

**用户**:"分析这个销售数据,告诉我为什么上个月销售额下降了"

**你的输出**:

【Phase 1: EDA - 数据探索】

让我先进行探索性数据分析:

python
import pandas as pd
import matplotlib.pyplot as plt

# 加载数据
df = pd.read_csv('sales_data.csv')

# 检查数据质量
print("=== 数据质量检查 ===")
print(f"总行数: {len(df)}")
print(f"\n缺失值:\n{df.isnull().sum()}")
print(f"\n数据类型:\n{df.dtypes}")

# 基本统计
print("\n=== 基本统计 ===")
print(df.describe())

# 日期处理
df['date'] = pd.to_datetime(df['date'])
df['month'] = df['date'].dt.to_period('M')

【Phase 2: 假设验证】

基于数据列,我提出以下假设:

假设验证方法
H1: 某些产品类别销量下降按类别统计月度销量
H2: 客户数量减少统计活跃客户数
H3: 平均订单金额下降计算平均订单金额趋势

验证代码:

python
# H1: 按类别统计
category_monthly = df.groupby(['month', 'category'])['amount'].sum().unstack()
print(category_monthly)

# H2: 活跃客户
monthly_customers = df.groupby('month')['customer_id'].nunique()
print(monthly_customers)

# H3: 平均订单金额
monthly_avg_order = df.groupby('month')['amount'].mean()
print(monthly_avg_order)

【Phase 3: 结论】

基于代码输出结果:

  • [具体结论,基于数据]
  • [数据支持]
code

### 示例2:带元数据的分析

**用户**:"我有交易数据CSV,想知道用户的购买频率"

**你的输出**:

【数据 Schema】 在分析前,我需要了解数据结构:

请提供以下信息:

  1. 列名有哪些?
  2. 用户ID字段叫什么?
  3. 交易时间字段叫什么?
  4. 金额字段叫什么?

或者,我可以先读取文件前几行:

python
import pandas as pd
df = pd.read_csv('your_file.csv')
print(df.head())
print(df.columns.tolist())

有了这些信息后,我将进行购买频率分析:

python
# 分析购买频率
df['date'] = pd.to_datetime(df['date'])
purchase_frequency = df.groupby('user_id')['date'].count()
print(purchase_frequency.describe())
code

---

## 通用提示词模板

### 基础分析

[Role] Senior Data Analyst

[Task] [你的分析任务]

[Data Schema] [列名和类型说明]

[Constraints]

  1. Must use Python/Pandas
  2. Show all code
  3. Show execution results
  4. Base conclusions on data only
code

### 可视化

[Visualization Requirements]

  • Use matplotlib/seaborn
  • Clear labels and titles
  • Appropriate chart types
  • Color-blind friendly palette
  • Save as PNG if needed
code

### 报告生成

[Report Structure]

  1. Executive Summary (2-3 sentences)
  2. Key Findings (bullet points)
  3. Supporting Data (tables/charts)
  4. Recommendations (if applicable)
  5. Limitations (data constraints)
code

---

## 最佳实践清单

每次数据分析时: ✅ 强制使用代码执行 ✅ 先做 EDA ✅ 注入数据元数据 ✅ 验证假设 ✅ 基于数据下结论 ✅ 标注不确定性 ❌ 不要让 AI 直接计算 ❌ 不要猜测列名 ❌ 不要跳过数据检查 ❌ 不要过度推断

code

---

记住:在数据分析中,代码是你的朋友,猜测是敌人!