Token导航 LogoToken导航

Agent Skill · 研究检索

yz6214589-hash-data-analysis(yz6214589 哈希数据分析)

用于辅助数据整理、表格处理、CSV/Excel 分析、指标计算和图表准备。它适合让 Agent 清洗字段、汇总数据、发现异常、生成统计口径或把分析结果转成可读说明。使用时需要确认数据来源、字段含义和时间范围,避免把样本数据当全量事实;涉及敏感数据、导出文件或批量写回时,应先确认权限和脱敏边界。

yz6214589-hash-data-analysis 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为只读;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 21,803。

总安装 4,749周安装 194GitHub Stars 公开资料未说明下载 1,521核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:yz6214589-hash-data-analysis(yz6214589 哈希数据分析)
来源仓库:https://github.com/yz6214589-hash/yz6214589-hash-data-analysis
安装命令:
openclaw skills install yz6214589-hash-data-analysis
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install yz6214589-hash-data-analysis

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

yz6214589-hash-data-analysis 针对 CSV 文件提供交互式数据分析流程,支持清洗、汇总与异常检测。它可生成统计口径与可视化建议,辅助快速洞察数据特征。

通过 openclaw skills install yz6214589-hash-data-analysis 安装后,上传文件并按提示逐步操作。使用时需明确字段含义与时间范围,防止将样本结论误判为总体事实。建议导出分析过程记录,便于追溯判断依据与计算逻辑。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install yz6214589-hash-data-analysis;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

yz6214589-hash-data-analysis 怎么安装?

在终端执行 openclaw skills install yz6214589-hash-data-analysis。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

yz6214589-hash-data-analysis 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

yz6214589-hash-data-analysis 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

yz6214589-hash-data-analysis 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

yz6214589-hash-data-analysis 用的人多吗?

公开数据是累计安装 4,749 次,近一周安装 194 次,下载 1,521 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

yz6214589-hash-data-analysis 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
yz6214589-hash-data-analysis

yz6214589 哈希数据分析 · 本页

4,749—只读MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
data-analysis
version
1.0.0
description
|
metadata
openclaw
emoji
📊
tags
["data", "analysis", "csv", "visualization", "insights", "dashboard"]

Data Analysis Skill

A comprehensive, interactive data analysis workflow that transforms CSV data into actionable business insights. This skill guides you through professional data analysis from initial exploration to final deliverable, with quality gates and user confirmations at key decision points.

Core Workflow

This skill follows a 7-step methodology with 3 interaction points:

Input → Business Understanding → Data Inspection → Cleaning Strategy → EDA → Deep Analysis → Insights → Output
  ↓           ↓                      ↓                ↓                ↓           ↓          ↓
Required   Interaction 1        Quality Gate     Interaction 2    Auto-run    Auto-run   Interaction 3

Input Requirements

Required:

  • CSV file path (absolute or relative)
  • Business question or analysis goal

Optional:

  • Data dictionary (field descriptions)
  • Analysis depth: --quick (basic stats), --standard (default), or --deep (advanced modeling)
  • Auto mode: --auto (skip interactions, use recommended strategies)
  • Output preference: --format=markdown|html|dashboard

Usage examples:

"Analyze sales_data.csv - I want to know which channels have the best conversion rates"
"Help me understand customer_behavior.csv, specifically looking at retention patterns"
"Quick analysis of Q4_results.csv --quick --auto"

Step 1: Business Understanding (Interaction Point 1)

Your Actions

  1. Parse the business question and identify:

- Key metrics mentioned (revenue, conversion rate, churn, etc.) - Analysis type needed (trend analysis, comparison, attribution, prediction) - Expected dimensions (time, geography, customer segments, channels) - Chart types that would best illustrate the answer

  1. Generate an analysis plan in this format:
   ## Analysis Plan

   **Core Question:** [Restate the user's goal in one sentence]

   **Key Metrics to Calculate:**
   - [Metric 1: e.g., Monthly conversion rate by channel]
   - [Metric 2: e.g., Average order value trend]

   **Analysis Dimensions:**
   - [e.g., Channel, Time period, Customer segment]

   **Expected Deliverables:**
   - [e.g., Comparison chart showing channel performance]
   - [e.g., Trend line with annotations for key events]

Interaction Point 1

Present your analysis plan and ask:

Does this match what you're looking for?
If you'd like me to focus on different aspects or add something, let me know.

If the business goal is unclear, offer templates:

I can help with common scenarios:
1. Sales Analysis (channel comparison, trend forecasting, top products)
2. User Behavior (funnel analysis, retention cohorts, churn prediction)
3. Operations (ROI calculation, campaign effectiveness, resource allocation)

Which best describes what you need, or would you like to describe it differently?

Wait for user confirmation before proceeding.


Step 2: Data Inspection (Auto-run with Quality Gate)

Your Actions

  1. Load the CSV file:
   import pandas as pd
   import numpy as np

   # Try UTF-8 first, fall back to other encodings if needed
   try:
       df = pd.read_csv(file_path, encoding='utf-8')
   except UnicodeDecodeError:
       df = pd.read_csv(file_path, encoding='latin-1')
  1. Generate a data overview report:
   ## Data Overview

   📊 Dimensions: {rows:,} rows × {cols} columns
   💾 Memory: {size} MB

   📋 Columns:
   | Column Name | Data Type | Sample Value |
   |-------------|-----------|--------------|
   | ...         | ...       | ...          |

   🔍 Preview (first 5 rows):
   [Display formatted table]
  1. Perform quality checks:

- Missing values: Count and percentage per column - Duplicates: Check for fully duplicate rows - Data types: Verify numeric columns aren't stored as strings, dates are parseable - Outliers (quick check): Flag columns with extreme values using IQR method

  1. Calculate a data quality score (0-100):
   Score = 100 - (missing_penalty + duplicate_penalty + type_mismatch_penalty)

   Where:
   - missing_penalty = min(40, missing_rate * 100)
   - duplicate_penalty = min(20, duplicate_rate * 100)
   - type_mismatch_penalty = 10 per column with wrong type

Quality Gate 1

Based on the quality score, present findings:

Score ≥ 80 (Good):

✅ Data quality looks good (Score: {score}/100)
Minor issues found: [list if any]
Proceeding to analysis...

Score 60-79 (Fair):

⚠️ Data has some quality issues (Score: {score}/100)
Issues found: [list]
I can still analyze this, but results may be limited. Continue?

Score < 60 (Poor):

🚨 Data quality is concerning (Score: {score}/100)
Major issues:
- [Issue 1 with impact]
- [Issue 2 with impact]

Recommendation: Contact the data provider or provide a data dictionary.
Would you like me to proceed with limited analysis, or should we address these issues first?

Step 3: Data Cleaning Strategy (Interaction Point 2)

Your Actions

If quality score ≥ 80 and issues are minor, apply automatic fixes and report:

🧹 Applied automatic cleaning:
- Standardized date format in 'OrderDate' column
- Trimmed whitespace from text fields
Ready to analyze!

If quality score < 80, present issues with specific strategy options:

## Data Cleaning Recommendations

### Issue 1: Missing Values in 'Age' Column (20% missing)
**Strategy options:**
A. Delete rows with missing Age (lose 20% of data) ← Recommended if Age is critical
B. Fill with median age (35 years)
C. Fill with group average (median by Gender)
D. Keep as-is and exclude Age from analysis

### Issue 2: Outliers in 'Price' Column (3 negative values)
**Strategy options:**
A. Remove the 3 rows ← Recommended
B. Set negative values to 0
C. Set to the minimum valid price

### Issue 3: Date Format Inconsistency in 'PurchaseDate'
**Strategy options:**
A. Standardize to YYYY-MM-DD format ← Recommended (automatic)

Interaction Point 2

Ask the user:

Please choose a strategy for each issue (e.g., "1A, 2A, 3A"),
or type "recommended" to use all recommended strategies,
or type "auto" to let me decide.

In auto mode (--auto flag): Skip this interaction and use all recommended strategies.

Execute Cleaning

  1. Apply the chosen strategies
  2. Log all changes made
  3. Report the results:
   ✅ Cleaning completed:
   - Age: Filled 1,234 missing values with median (35)
   - Price: Removed 3 rows with negative values
   - PurchaseDate: Standardized format for all 6,000 rows

   📊 Final dataset: {final_rows:,} rows × {cols} columns (was {original_rows:,} rows)
  1. Save the cleaned data:
   cleaned_path = output_dir / 'cleaned_data.csv'
   df_clean.to_csv(cleaned_path, index=False)

Step 4: Exploratory Data Analysis (Auto-run)

Your Actions

  1. Descriptive statistics:

- For numeric columns: mean, median, std, min, max, quartiles - For categorical columns: value counts, unique values, mode

  1. Single-variable analysis:

- Numeric: Generate histograms, identify distribution shape (normal, skewed, multimodal) - Categorical: Generate bar charts showing frequency distribution

  1. Multi-variable analysis:

- Correlation matrix: For all numeric columns (use heatmap visualization) - Cross-tabulation: For key categorical dimensions from Step 1 - Scatter plots: For top 3 correlated pairs related to the business question

  1. Generate initial insights:

Extract Top 3-5 preliminary findings, such as: - "Channel A has 3x the conversion rate of Channel B" - "Sales show a strong upward trend since March" - "Age and purchase amount have a weak negative correlation (-0.23)"

Output

Save all visualizations as PNG files:

import matplotlib.pyplot as plt
import seaborn as sns

# Example
fig, ax = plt.subplots(figsize=(10, 6))
sns.histplot(data=df, x='Age', bins=30, ax=ax)
plt.title('Age Distribution')
plt.savefig(output_dir / 'age_distribution.png', dpi=300, bbox_inches='tight')
plt.close()

Report the findings in a structured format:

## Exploratory Findings

### Distribution Overview
- [Key observation about data distribution]

### Preliminary Insights
1. **[Insight 1]:** [Data supporting it]
2. **[Insight 2]:** [Data supporting it]
3. **[Insight 3]:** [Data supporting it]

📊 Visualizations saved: age_distribution.png, correlation_heatmap.png, channel_comparison.png

Step 5: Deep Analysis (Auto-run)

Your Actions

Based on the business question type identified in Step 1, automatically choose and apply the appropriate analysis method:

Business Question TypeAnalysis Method
Trend over timeTime series analysis with moving averages, seasonality detection
Attribution/causeGrouped comparison, contribution breakdown (e.g., which factor drives 80% of variance)
User behaviorFunnel analysis (conversion at each step), cohort retention analysis
Customer valueRFM model (Recency, Frequency, Monetary), clustering into segments
ForecastingSimple linear regression or exponential smoothing for trend extrapolation

Example: Trend Analysis

# Time series with moving average
df['Date'] = pd.to_datetime(df['Date'])
df = df.sort_values('Date')
df['7d_MA'] = df['Revenue'].rolling(window=7).mean()

# Detect trend
from scipy.stats import linregress
slope, intercept, r_value, p_value, std_err = linregress(
    df['Date'].map(pd.Timestamp.toordinal),
    df['Revenue']
)

if p_value < 0.05:
    trend = "increasing" if slope > 0 else "decreasing"
    print(f"Statistically significant {trend} trend detected (p={p_value:.4f})")

Example: RFM Analysis

# Calculate RFM scores
current_date = df['PurchaseDate'].max()
rfm = df.groupby('CustomerID').agg({
    'PurchaseDate': lambda x: (current_date - x.max()).days,  # Recency
    'OrderID': 'count',  # Frequency
    'Amount': 'sum'  # Monetary
}).rename(columns={
    'PurchaseDate': 'Recency',
    'OrderID': 'Frequency',
    'Amount': 'Monetary'
})

# Score customers (1-5 scale)
rfm['R_Score'] = pd.qcut(rfm['Recency'], 5, labels=[5, 4, 3, 2, 1])
rfm['F_Score'] = pd.qcut(rfm['Frequency'].rank(method='first'), 5, labels=[1, 2, 3, 4, 5])
rfm['M_Score'] = pd.qcut(rfm['Monetary'], 5, labels=[1, 2, 3, 4, 5])

# Segment customers
rfm['Segment'] = rfm['R_Score'].astype(str) + rfm['F_Score'].astype(str) + rfm['M_Score'].astype(str)

Output

Report deep analysis results with specific numbers:

## Deep Analysis Results

### [Analysis Type: e.g., "Channel Performance Attribution"]

**Key Metric Calculated:** [e.g., Conversion Rate by Channel]

| Channel | Orders | Conversion Rate | Contribution to Revenue |
|---------|--------|-----------------|-------------------------|
| A       | 5,234  | 8.5%            | 45%                     |
| B       | 3,102  | 3.7%            | 28%                     |
| C       | 1,876  | 2.1%            | 27%                     |

**Statistical Finding:**
Channel A's conversion rate is 2.3x higher than Channel B (p < 0.001), indicating significantly better targeting or user experience.

📊 Visualization saved: channel_performance.png

Step 6: Insights Generation (Auto-run)

Your Actions

Synthesize all findings into a structured narrative following the What → So What → Now What framework:

## Analysis Report

### 🔍 Core Findings (What)
Objective facts from the data:
1. **[Finding 1]:** [Specific numbers and context]
2. **[Finding 2]:** [Specific numbers and context]
3. **[Finding 3]:** [Specific numbers and context]

### 💡 Business Insights (So What)
Interpretation and implications:
1. **[Insight 1]:** Why this matters for the business
   - Impact: [Quantify if possible: e.g., "Could increase revenue by 15%"]
   - Root cause hypothesis: [Why you think this is happening]

2. **[Insight 2]:** Why this matters for the business
   - Impact: [...]
   - Root cause hypothesis: [...]

### 🎯 Action Recommendations (Now What)
Prioritized next steps:
1. **[Action 1 - High Priority]:** What to do, expected outcome
   - Timeline: [Immediate / This quarter / Long-term]
   - Owner: [Which team should handle this]

2. **[Action 2 - Medium Priority]:** What to do, expected outcome
   - Timeline: [...]
   - Owner: [...]

Chart Selection

For each finding, choose the most effective visualization:

  • Trend over time → Line chart with annotations
  • Comparison → Bar chart (horizontal if many categories)
  • Part-to-whole → Pie chart or stacked bar
  • Correlation → Scatter plot with trendline
  • Distribution → Histogram or box plot

Ensure all charts have:

  • Clear title stating the main message (not just "Sales Chart")
  • Labeled axes with units
  • Legend if multiple series
  • Data labels for key points

Step 7: Output Delivery (Interaction Point 3)

Interaction Point 3

If user specified format in initial request (e.g., --format=html), skip this and use that format.

Otherwise, present options:

## Analysis Complete! 🎉

Your analysis is ready. Please choose an output format:

1. **Quick Report** - Markdown document with embedded PNG charts
   - Best for: Sharing via email, documentation, GitHub
   - Generation time: ~10 seconds

2. **Interactive Report** - Single-page HTML with embedded Chart.js
   - Best for: Presentations, exploring data interactively
   - Generation time: ~30 seconds

3. **Full Dashboard** - Multi-page web application (Tailwind CSS + Chart.js)
   - Best for: Sharing with stakeholders, ongoing monitoring
   - Generation time: ~2 minutes

Enter 1, 2, or 3:

Generate Output

Option 1: Quick Report (Markdown)
import shutil

report_path = output_dir / 'analysis_report.md'

with open(report_path, 'w', encoding='utf-8') as f:
    f.write(f"# Data Analysis Report\
\
")
    f.write(f"**Dataset:** {csv_filename}\
")
    f.write(f"**Analysis Date:** {datetime.now().strftime('%Y-%m-%d')}\
\
")
    f.write(f"---\
\
")
    f.write(f"## Business Question\
\
{business_question}\
\
")
    f.write(f"## Data Overview\
\
{data_overview}\
\
")
    f.write(f"## Findings\
\
{findings}\
\
")
    f.write(f"## Insights\
\
{insights}\
\
")
    f.write(f"## Recommendations\
\
{recommendations}\
\
")
    f.write(f"---\
\
")
    f.write(f"## Appendix: Visualizations\
\
")
    for chart in chart_files:
        f.write(f"![{chart.stem}]({chart.name})\
\
")

# Copy all chart PNGs to the output directory
for chart in chart_files:
    shutil.copy(chart, output_dir)
Option 2: Interactive Report (Single HTML)

Use this template structure:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Data Analysis Report</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
    <script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-50 p-8">
    <div class="max-w-6xl mx-auto bg-white shadow-lg rounded-lg p-8">
        <h1 class="text-3xl font-bold text-gray-800 mb-4">Data Analysis Report</h1>

        <!-- Business Question Section -->
        <section class="mb-8">
            <h2 class="text-2xl font-semibold text-gray-700 mb-3">Business Question</h2>
            <p class="text-gray-600">[Insert question]</p>
        </section>

        <!-- Key Findings Section -->
        <section class="mb-8">
            <h2 class="text-2xl font-semibold text-gray-700 mb-3">🔍 Key Findings</h2>
            <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
                <div class="bg-blue-50 p-4 rounded-lg">
                    <div class="text-3xl font-bold text-blue-600">[Metric 1]</div>
                    <div class="text-sm text-gray-600">[Description]</div>
                </div>
                <!-- Repeat for other metrics -->
            </div>
        </section>

        <!-- Charts Section -->
        <section class="mb-8">
            <h2 class="text-2xl font-semibold text-gray-700 mb-3">📊 Visualizations</h2>
            <div class="mb-6">
                <canvas id="chart1"></canvas>
            </div>
            <!-- Repeat for other charts -->
        </section>

        <!-- Recommendations Section -->
        <section class="mb-8">
            <h2 class="text-2xl font-semibold text-gray-700 mb-3">🎯 Recommendations</h2>
            <ol class="list-decimal list-inside space-y-2 text-gray-700">
                <li>[Recommendation 1]</li>
                <li>[Recommendation 2]</li>
            </ol>
        </section>
    </div>

    <script>
        // Chart.js configurations
        const ctx1 = document.getElementById('chart1').getContext('2d');
        new Chart(ctx1, {
            type: 'bar',
            data: {
                labels: [labels_from_analysis],
                datasets: [{
                    label: 'Metric Name',
                    data: [data_from_analysis],
                    backgroundColor: 'rgba(59, 130, 246, 0.5)',
                    borderColor: 'rgb(59, 130, 246)',
                    borderWidth: 1
                }]
            },
            options: {
                responsive: true,
                plugins: {
                    title: {
                        display: true,
                        text: 'Chart Title'
                    }
                }
            }
        });
    </script>
</body>
</html>
Option 3: Full Dashboard (Multi-page)

Create a file structure:

dashboard/
├── index.html (overview page)
├── data.html (detailed data explorer)
├── insights.html (findings and recommendations)
└── assets/
    ├── data.json (exported data for interactivity)
    └── styles.css (custom styling)

Final Delivery

Present the deliverables to the user:

## ✅ Analysis Complete!

Your analysis has been saved to: `{output_directory}`

### Deliverables:
- 📄 Analysis Report: `analysis_report.{md|html}`
- 📊 Visualizations: {list of chart files}
- 🧹 Cleaned Data: `cleaned_data.csv`
- 💾 Analysis Code: `analysis_notebook.ipynb` (optional)

### Key Takeaways:
1. [One-sentence summary of finding 1]
2. [One-sentence summary of finding 2]
3. [One-sentence summary of finding 3]

[If HTML/Dashboard]
You can open `{report_filename}` in your browser to explore the interactive report.

Would you like me to explain any part of the analysis in more detail, or make changes to the report?

Exception Handling

Large Datasets (> 100,000 rows)

Detect large files early and present options:

This dataset has {rows:,} rows. For faster analysis, I can:
1. Analyze a random sample (10%, ~{sample_size:,} rows) ← Recommended
2. Aggregate by {suggested_dimension} before analyzing
3. Process the full dataset (will take longer)

Which would you prefer?

Very Wide Datasets (> 50 columns)

This dataset has {cols} columns. To focus the analysis, I can:
1. Use only columns relevant to your question: {relevant_cols}
2. Let you select which columns to include
3. Analyze all columns (report will be lengthy)

Which approach works best?

Unclear Business Goal

If the user just says "analyze this CSV" without a specific question:

I can analyze this data for you! To make it most useful, what would you like to understand?

Common scenarios:
- 🎯 Performance: "Which {dimension} performs best on {metric}?"
- 📈 Trends: "How has {metric} changed over time?"
- 🔍 Patterns: "What factors correlate with {outcome}?"
- 📊 Overview: "Give me a general summary of this data"

Or describe what you're trying to figure out in your own words.

Poor Data Quality (Score < 40)

⚠️ This data has significant quality issues (Score: {score}/100):
- {issue_1}
- {issue_2}

Recommendations:
1. Contact the data source to get a cleaner version
2. Provide a data dictionary so I can better interpret the fields
3. I can proceed with a limited analysis, but findings will be marked as "low confidence"

How would you like to proceed?

Technical Stack

Data Processing:

  • pandas - Primary data manipulation
  • numpy - Numerical operations
  • scipy - Statistical tests

Visualization:

  • matplotlib - Static charts (PNG output)
  • seaborn - Statistical visualizations
  • Chart.js (via CDN) - Interactive HTML charts

Output Generation:

  • Markdown for quick reports
  • HTML + Tailwind CSS for styled reports
  • Chart.js for interactive visualizations

Always install required packages if missing:

import subprocess
import sys

def ensure_package(package):
    try:
        __import__(package)
    except ImportError:
        subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Ensure core packages
for pkg in ['pandas', 'numpy', 'scipy', 'matplotlib', 'seaborn']:
    ensure_package(pkg)

Quality Principles

  1. Always explain the "why": Don't just report numbers—interpret what they mean for the business
  2. Use concrete numbers: "Channel A converts at 8.5%" beats "Channel A converts better"
  3. Visualize effectively: Choose chart types that make patterns immediately obvious
  4. Acknowledge uncertainty: If data quality is poor or sample size is small, say so
  5. Prioritize recommendations: Mark actions as High/Medium/Low priority with expected impact
  6. Save intermediate outputs: Always save the cleaned data and analysis code for reproducibility

Working Directory

All outputs are saved to: ./data-analysis-results/{timestamp}/

Structure:

data-analysis-results/
└── 2024-03-29_14-30-45/
    ├── analysis_report.md (or .html)
    ├── cleaned_data.csv
    ├── charts/
    │   ├── age_distribution.png
    │   ├── correlation_heatmap.png
    │   └── channel_comparison.png
    └── analysis_notebook.ipynb (if requested)

Create the timestamped directory at the start:

from datetime import datetime
from pathlib import Path

timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
output_dir = Path(f'./data-analysis-results/{timestamp}')
output_dir.mkdir(parents=True, exist_ok=True)
(output_dir / 'charts').mkdir(exist_ok=True)

Tips for Success

  • Read the CSV early: Don't wait—load it in Step 1 to validate the file exists and is readable
  • Keep the user informed: After each step, give a brief status update
  • Don't over-engineer: If the data is clean and the question is simple, don't force complex analysis
  • Reuse code patterns: Common operations (loading CSV, quality checks, generating charts) should follow consistent patterns to maintain reliability
  • Test visualizations: Always check that charts are readable and the main message is obvious at a glance

平台分布

OpenClaw

75.77%
按下载量换算1,152

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills