Token导航 LogoToken导航

Agent Skill · 研究检索

afrexai-spreadsheet-master(afrexai 电子表格大师)

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

afrexai-spreadsheet-master 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 22,653。

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

安装说明

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

安装方式

通过对话安装

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

请帮我安装这个 Agent Skill:afrexai-spreadsheet-master(afrexai 电子表格大师)
来源仓库:https://github.com/1kalin/afrexai-spreadsheet-master
安装命令:
openclaw skills install afrexai-spreadsheet-master
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

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

ClawHubOpenClaw
openclaw skills install afrexai-spreadsheet-master

这个 Skill 是做什么的

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

完整的电子表格方法,涵盖数据清理、转换、分析和报告全流程。适合在 OpenClaw 中处理 CSV、Excel 或 Google 表格时使用。支持自动化仪表板和可视化图表生成。安装命令:openclaw skills install afrexai-spreadsheet-master,需确认文件读写权限。

建议核实是否会导出或修改原始数据文件。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

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

  2. 2

    拿到安装命令

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

  3. 3

    安装后重启宿主

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

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

afrexai-spreadsheet-master 怎么安装?

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

afrexai-spreadsheet-master 支持哪些 AI 工具?

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

afrexai-spreadsheet-master 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

afrexai-spreadsheet-master 是免费的吗?

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

afrexai-spreadsheet-master 用的人多吗?

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

afrexai-spreadsheet-master 安全吗?

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

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

值得选的地方

  • 专注 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调用外部服务未明确有提醒
afrexai-spreadsheet-master

afrexai 电子表格大师 · 本页

4,493—需要联网MIT-0通过

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

SKILL.md 原文

name
Spreadsheet & Data Wrangling Master
slug
afrexai-spreadsheet-master
version
1.0.0
description
Complete spreadsheet methodology — data cleanup, transformation, analysis, dashboards, automation, and reporting. Works with CSV, Excel, Google Sheets, or any tabular data. Use when the user needs to clean messy data, build reports, create dashboards, automate recurring spreadsheet tasks, or transform data between formats.
tags
spreadsheet, excel, csv, data, cleanup, reporting, dashboard, analytics, automation, google-sheets

Spreadsheet & Data Wrangling Master

Turn messy data into clean insights, automated reports, and decision-ready dashboards. Platform-agnostic — works with CSV, Excel, Google Sheets, or any tabular format.

Phase 1: Data Intake & Assessment

Before touching any data, assess what you have.

Quick Health Check (score /20)

data_intake:
  source: ""           # file path, URL, API, database, manual entry
  format: ""           # CSV, XLSX, TSV, JSON, clipboard paste
  rows: 0
  columns: 0
  file_size: ""
  encoding: ""         # UTF-8, Latin-1, Windows-1252, etc.
  delimiter: ""        # comma, tab, pipe, semicolon

  health_score:        # rate each 0-4, total /20
    completeness: 0    # 4=<1% missing, 3=<5%, 2=<15%, 1=<30%, 0=>30%
    consistency: 0     # 4=uniform types, 3=minor mixed, 2=significant mixed, 1=chaotic, 0=unusable
    accuracy: 0        # 4=verified, 3=plausible, 2=some outliers, 1=many errors, 0=untrustworthy
    freshness: 0       # 4=real-time, 3=<24h, 2=<7d, 1=<30d, 0=stale/unknown
    structure: 0       # 4=tidy (1 row=1 obs), 3=minor reshaping, 2=pivot needed, 1=multi-header, 0=freeform

  issues_found: []     # list every problem before fixing anything

First 10 Questions to Ask

  1. How many rows and columns?
  2. What does each row represent? (one customer? one transaction? one day?)
  3. Are there header rows? Multiple header rows? Merged cells?
  4. What are the data types? (dates, currencies, percentages, IDs, free text)
  5. How much is missing? Which columns?
  6. Are there duplicates? By which key?
  7. Is there a unique identifier column?
  8. What date format? (MM/DD/YYYY vs DD/MM/YYYY vs YYYY-MM-DD vs mixed)
  9. What currency/number format? (1,000.00 vs 1.000,00 vs 1000)
  10. Where did this data come from and how often is it updated?

Phase 2: Data Cleaning Decision Tree

Step-by-Step Cleaning Protocol

START
  │
  ├─ Headers → Normalize (lowercase, snake_case, no spaces/special chars)
  │
  ├─ Duplicates?
  │   ├─ Exact duplicates → Remove, keep first
  │   ├─ Near-duplicates → Flag for review (fuzzy match on name + address)
  │   └─ Intentional duplicates → Leave (e.g., multiple orders same customer)
  │
  ├─ Missing Values?
  │   ├─ <5% of column → Fill (mean for numeric, mode for categorical, forward-fill for time series)
  │   ├─ 5-30% → Flag + fill with "UNKNOWN" or interpolate with justification
  │   ├─ >30% → Consider dropping column or flagging as unreliable
  │   └─ Entire row missing key fields → Remove with log
  │
  ├─ Data Types?
  │   ├─ Dates as text → Parse to date (try multiple formats, log failures)
  │   ├─ Numbers as text → Strip currency symbols, commas, whitespace, convert
  │   ├─ IDs/zips with leading zeros → Keep as text (NEVER convert to number)
  │   ├─ Phone numbers → Text, standardize format
  │   ├─ Mixed types in column → Split or coerce with error log
  │   └─ Boolean variants → Map (Yes/No/True/False/1/0/Y/N → consistent)
  │
  ├─ Outliers?
  │   ├─ Calculate IQR: Q1 - 1.5×IQR to Q3 + 1.5×IQR
  │   ├─ Business logic check (negative revenue? age 200? date in 2099?)
  │   ├─ Decide: fix (typo), cap (winsorize), remove, or keep with flag
  │   └─ ALWAYS log which outliers were modified and why
  │
  ├─ Standardization?
  │   ├─ Text case → Consistent (Title Case for names, UPPER for codes)
  │   ├─ Whitespace → Trim leading/trailing, collapse internal
  │   ├─ Categories → Map variants ("US"/"USA"/"United States" → "US")
  │   ├─ Dates → ISO 8601 (YYYY-MM-DD) internally
  │   ├─ Currency → Consistent symbol placement, decimal precision
  │   └─ Phone/email → Validate format
  │
  └─ Structural Issues?
      ├─ Multi-header rows → Flatten to single header
      ├─ Merged cells → Unmerge + fill down
      ├─ Pivot/crosstab → Unpivot to tidy format (1 row = 1 observation)
      ├─ Multiple tables in one sheet → Split to separate sheets/files
      └─ Metadata rows (totals, notes) → Separate from data rows

Cleaning Log Template

cleaning_log:
  date: "YYYY-MM-DD"
  source_file: ""
  rows_before: 0
  rows_after: 0
  actions:
    - action: "removed exact duplicates"
      rows_affected: 0
      key_columns: ["email"]
    - action: "filled missing values"
      column: "state"
      method: "mode"
      values_filled: 0
    - action: "removed outliers"
      column: "revenue"
      criteria: "negative values"
      rows_removed: 0
    - action: "standardized dates"
      column: "order_date"
      from_format: "MM/DD/YYYY"
      to_format: "YYYY-MM-DD"
      parse_failures: 0
  notes: ""

Phase 3: Transformation Patterns

12 Essential Transform Operations

#OperationWhen to UseExample
1FilterSubset rows by conditionOrders > $1000, Date after 2024-01-01
2SortOrder by column(s)Revenue descending, then date ascending
3Group + AggregateSummarize by categoryTotal revenue by region, avg order by customer
4PivotRows → columnsMonthly columns from date rows
5Unpivot/MeltColumns → rowsMonth columns back to date rows
6Join/MergeCombine datasetsCustomer data + order data on customer_id
7DeduplicateRemove redundancyKeep latest record per customer
8DeriveCalculate new columnsprofit = revenue - cost, age = today - birthdate
9SplitOne column → many"John Smith" → first_name, last_name
10ConcatenateMany columns → onecity + state + zip → full_address
11Lookup/MapEnrich with reference datastate_code → state_name, product_id → category
12WindowRunning calculations7-day moving average, rank within group, running total

Join Strategy Decision Guide

Which join do you need?
│
├─ Need ALL rows from left table → LEFT JOIN
│   (customers who may or may not have orders)
│
├─ Need ONLY matching rows → INNER JOIN
│   (only customers WITH orders)
│
├─ Need ALL rows from both → FULL OUTER JOIN
│   (reconciliation: find mismatches)
│
├─ Need everything NOT in other table → LEFT JOIN + WHERE right IS NULL
│   (customers who NEVER ordered)
│
└─ Need every combination → CROSS JOIN (rare, use carefully)
    (all products × all stores for pricing matrix)

⚠️ ALWAYS check join results:
- Row count: did it explode? (many-to-many join)
- Row count: did it shrink? (keys not matching)
- NULL columns: expected from outer join, unexpected = key mismatch

Formula Reference (Cross-Platform)

TaskExcelGoogle SheetsPython (pandas)
LookupVLOOKUP, XLOOKUPVLOOKUP, XLOOKUPdf.merge(), df.map()
Conditional sumSUMIFSSUMIFSdf.groupby().sum()
Conditional countCOUNTIFSCOUNTIFSdf.groupby().count()
Text splitTEXTSPLIT, LEFT/MID/RIGHTSPLITdf.str.split()
Date diffDATEDIF, mathDATEDIF(df.col2 - df.col1).dt.days
Running totalSUM($A$1:A1)SUM($A$1:A1)df.cumsum()
RankRANK.EQRANKdf.rank()
Percent of total=A1/SUM($A:$A)=A1/SUM($A:$A)df.col / df.col.sum()
Remove duplicatesData → Remove DuplicatesData → Remove Duplicatesdf.drop_duplicates()
PivotPivot TablePivot Tabledf.pivot_table()

Phase 4: Analysis Frameworks

Quick Analysis Menu

Pick the analysis that matches the question:

Descriptive (What happened?)

  • Summary statistics: count, mean, median, min, max, std dev, percentiles
  • Frequency distributions: how many of each category?
  • Time trends: daily/weekly/monthly aggregates over time
  • Cross-tabs: category A × category B breakdown

Diagnostic (Why did it happen?)

  • Drill-down: which segment drove the change?
  • Cohort analysis: behavior by signup month
  • Correlation: which variables move together?
  • Variance analysis: actual vs budget/forecast, by category

Predictive (What might happen?)

  • Trend projection: linear/exponential fit + confidence
  • Moving averages: 7/30/90 day smoothing
  • Seasonality: same-period prior year comparison
  • Growth rate: MoM, QoQ, YoY percentage changes

Prescriptive (What should we do?)

  • Pareto (80/20): which 20% of X drives 80% of Y?
  • Scenario analysis: best/base/worst case with different assumptions
  • Sensitivity: which input variable has biggest impact?
  • Break-even: at what point does X cover Y?

Insight Formula

Every finding MUST follow this structure:

INSIGHT: [What you found — one sentence]
EVIDENCE: [The specific numbers]
SO WHAT: [Why it matters to the business]
ACTION: [What to do about it]
CONFIDENCE: [High/Medium/Low + why]

Example:

INSIGHT: Customer acquisition cost increased 43% in Q3 vs Q2
EVIDENCE: CAC went from $47 to $67, driven by paid search CPC increase (+62%)
SO WHAT: At current LTV of $180, payback period extended from 3.1 to 4.5 months
ACTION: Shift 30% of paid search budget to email/referral channels (CAC $12 and $23 respectively)
CONFIDENCE: High — based on complete Stripe + Google Ads data for full quarter

Phase 5: Dashboard & Report Templates

Executive Summary Dashboard (1-page)

┌──────────────────────────────────────────────────┐
│  EXECUTIVE DASHBOARD — [Period]                   │
│                                                    │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐│
│  │ Revenue  │ │ Customers│ │ Margin  │ │  Growth ││
│  │ $XXX,XXX │ │  X,XXX  │ │  XX.X%  │ │ +XX.X%  ││
│  │ ▲ +X.X%  │ │ ▲ +XXX  │ │ ▼ -X.X% │ │ vs LY   ││
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘│
│                                                    │
│  [Trend chart — key metric over 12 months]        │
│                                                    │
│  TOP 3 INSIGHTS:                                  │
│  1. [Insight + action]                            │
│  2. [Insight + action]                            │
│  3. [Insight + action]                            │
│                                                    │
│  ┌──────────────────┐ ┌──────────────────┐        │
│  │ By Segment       │ │ By Channel       │        │
│  │ (table or chart) │ │ (table or chart) │        │
│  └──────────────────┘ └──────────────────┘        │
└──────────────────────────────────────────────────┘

KPI Formatting Rules

ElementRuleExample
Big numbersAbbreviate with 1 decimal$1.2M, 14.3K
Percentages1 decimal, always show direction▲ +12.3%, ▼ -4.1%
Currency2 decimals for <$1000, 0 for larger$47.50, $12,000
DatesConsistent format throughoutJan 2025, not 01/2025
ComparisonAlways include baseline$120K (+15% vs LY)
RAG statusUse color + text🟢 On Track, 🟡 At Risk, 🔴 Behind
SparklinesShow direction at a glance▁▂▃▅▇ (trending up)

Chart Selection Guide

What are you showing?
│
├─ Change over time → LINE chart (≤5 series) or AREA (stacked composition)
│
├─ Comparison across categories → BAR chart (horizontal for long labels)
│
├─ Part of whole → PIE (≤5 slices) or STACKED BAR (>5 or over time)
│
├─ Distribution → HISTOGRAM or BOX PLOT
│
├─ Relationship between 2 variables → SCATTER PLOT
│
├─ Geographic → MAP (if location data exists)
│
├─ Ranked list → HORIZONTAL BAR sorted descending
│
└─ Single KPI → BIG NUMBER with trend indicator

⚠️ NEVER use:
- 3D charts (distorts perception)
- Dual Y-axes (misleads readers)
- Pie with >7 slices (use bar instead)
- Rainbow colors (use 2-3 colors max + grey)

Phase 6: Recurring Report Automation

Automation Checklist

recurring_report:
  name: ""
  frequency: ""          # daily, weekly, monthly, quarterly
  owner: ""
  recipients: []
  
  data_sources:
    - source: ""         # file path, API, database
      refresh: ""        # how data gets updated
      format: ""
  
  processing_steps:
    - step: "load data"
      tool: ""           # Python, Excel macro, Google Apps Script
    - step: "clean"
      rules: []          # reference cleaning protocol
    - step: "transform"
      operations: []
    - step: "analyze"
      calculations: []
    - step: "format"
      template: ""       # dashboard template to populate
    - step: "deliver"
      method: ""         # email, Slack, shared drive, API push
  
  quality_checks:
    - "Row count within expected range (±20%)"
    - "No NULL values in required columns"
    - "Totals reconcile with source system"
    - "Date range matches expected period"
    - "Key metrics pass sanity check (no 10x jumps without explanation)"
  
  error_handling:
    - trigger: "data source unavailable"
      action: "use cached last-good version + alert"
    - trigger: "row count outside range"
      action: "pause + flag for human review"
    - trigger: "metric exceeds 3× historical std dev"
      action: "include anomaly callout in report"

Python Automation Template

"""
Recurring report: [NAME]
Schedule: [FREQUENCY]
"""
import pandas as pd
from pathlib import Path
from datetime import datetime

# --- Config ---
INPUT_PATH = Path("data/raw/")
OUTPUT_PATH = Path("data/reports/")
REPORT_DATE = datetime.now().strftime("%Y-%m-%d")

# --- Load ---
df = pd.read_csv(INPUT_PATH / "source.csv", parse_dates=["date"])

# --- Clean ---
df = df.drop_duplicates()
df = df.dropna(subset=["required_column"])
df["amount"] = pd.to_numeric(df["amount"], errors="coerce")

# --- Transform ---
summary = (
    df.groupby("category")
    .agg(
        total=("amount", "sum"),
        count=("id", "count"),
        avg=("amount", "mean"),
    )
    .sort_values("total", ascending=False)
    .reset_index()
)

# --- Quality Check ---
assert len(df) > 0, "Empty dataset!"
assert df["amount"].isna().sum() / len(df) < 0.05, "Too many missing amounts"

# --- Output ---
output_file = OUTPUT_PATH / f"report-{REPORT_DATE}.csv"
summary.to_csv(output_file, index=False)
print(f"✅ Report saved: {output_file} | {len(summary)} rows")

Phase 7: Common Spreadsheet Patterns

Pattern 1: Financial Model

Sheet structure:
├── Assumptions    → All editable inputs in ONE place (highlighted cells)
├── Revenue        → Formulas reference Assumptions
├── Costs          → Formulas reference Assumptions  
├── P&L            → Pulls from Revenue + Costs
├── Cash Flow      → Derived from P&L + working capital
├── Balance Sheet  → Derived from Cash Flow
├── Scenarios      → Best/Base/Worst toggle that feeds Assumptions
└── Dashboard      → Charts + KPIs pulling from P&L/Cash Flow

Rules:
- Inputs = blue font or yellow background (pick one, be consistent)
- Formulas = black font, never hardcode numbers in formula cells
- Every formula traces back to Assumptions or raw data
- No circular references
- Include version number + last-updated date

Pattern 2: CRM / Contact Tracker

Required columns:
- id (auto-increment or UUID)
- name, email, phone, company
- source (how they found us)
- status (lead → contacted → qualified → proposal → won/lost)
- last_contact_date
- next_action + next_action_date
- deal_value
- notes

Derived columns:
- days_since_last_contact = TODAY() - last_contact_date
- pipeline_stage_days = TODAY() - stage_entry_date
- is_stale = days_since_last_contact > 14

Dashboard metrics:
- Pipeline value by stage
- Conversion rate stage-to-stage
- Average days in each stage
- Stale leads count (action needed)

Pattern 3: Inventory / Stock Tracker

Required columns:
- sku, name, category
- quantity_on_hand, reorder_point, reorder_quantity
- unit_cost, unit_price
- last_received_date, last_sold_date
- supplier

Derived columns:
- stock_value = quantity_on_hand × unit_cost
- margin = (unit_price - unit_cost) / unit_price
- days_of_supply = quantity_on_hand / avg_daily_sales
- needs_reorder = quantity_on_hand <= reorder_point

Alerts:
- 🔴 Below reorder point
- 🟡 Within 7 days of stockout (based on velocity)
- ⚪ Dead stock (no sales in 90 days)

Pattern 4: Project / Task Tracker

Required columns:
- task_id, task_name, description
- assignee, priority (P0-P3)
- status (backlog → in_progress → review → done)
- start_date, due_date, completed_date
- estimated_hours, actual_hours

Derived columns:
- days_remaining = due_date - TODAY()
- is_overdue = due_date < TODAY() AND status != "done"
- effort_variance = actual_hours - estimated_hours
- completion_rate = done_tasks / total_tasks

Dashboard:
- Burndown chart (remaining vs time)
- Status distribution pie
- Overdue tasks list
- Team workload (tasks per assignee)

Pattern 5: Budget vs Actual

Structure:
- Rows: expense categories + revenue lines
- Columns: Budget | Actual | Variance | Variance %
- Group by: month or quarter

Key formulas:
- variance = actual - budget
- variance_pct = (actual - budget) / budget
- YTD_budget = SUM of months through current
- Run_rate = (YTD_actual / months_elapsed) × 12

Conditional formatting:
- Green: favorable variance (revenue over, cost under)
- Red: unfavorable variance (revenue under, cost over)
- Threshold: flag if |variance| > 10%

Phase 8: Data Quality Rules

Validation Checklist (run before any analysis)

validation:
  structural:
    - "No duplicate column names"
    - "No completely empty columns"
    - "No completely empty rows (except intentional separators)"
    - "Consistent column count across all rows"
    - "Headers in row 1 (no multi-row headers without handling)"
  
  type_integrity:
    - "Date columns parse as valid dates"
    - "Numeric columns contain no text (except headers)"
    - "ID columns are unique where expected"
    - "Email columns match basic email pattern"
    - "Phone columns are consistent format"
  
  business_rules:
    - "Revenue >= 0 (or explain negative = refund)"
    - "Dates within expected range (not in future for historical data)"
    - "Percentages between 0-100 (or 0-1, consistently)"
    - "Status values match allowed list"
    - "Foreign keys exist in reference table"
  
  completeness:
    - "Required columns have <5% missing"
    - "No orphan records (child without parent)"
    - "Date ranges are continuous (no gaps in daily data)"

Data Quality Score (0-100)

DimensionWeightScore 0-4Criteria
Completeness25%% of non-null values in required fields
Uniqueness15%% of rows with valid unique keys
Consistency20%% of values matching expected format/type
Accuracy20%% passing business rule validation
Timeliness10%Data freshness vs expected refresh
Conformity10%% matching standard formats (dates, phones, emails)

Score = Σ(weight × score/4 × 100)

  • 90-100: Production-ready
  • 75-89: Minor fixes needed
  • 50-74: Significant cleanup required
  • <50: Re-collect or restructure before use

Phase 9: Format Conversion & Interop

Conversion Decision Matrix

From → ToBest MethodWatch Out For
CSV → Excelpandas + openpyxlEncoding, date parsing, leading zeros
Excel → CSVpandas or openpyxlMultiple sheets, formulas lost, merged cells
JSON → CSVpandas json_normalizeNested objects need flattening
CSV → JSONpandas to_jsonChoose records vs columns orientation
Excel → Google SheetsUpload directlyMacros stripped, some formulas differ
Google Sheets → ExcelDownload as .xlsxIMPORTRANGE breaks, custom functions lost
PDF table → CSVTabula, pdfplumberLayout detection, merged cells, multi-page
HTML table → CSVpandas read_htmlMultiple tables, nested tables, encoding

Encoding Survival Guide

Garbled text? Try these encodings in order:
1. UTF-8 (default, handles all languages)
2. UTF-8-BOM (Windows exports often add BOM)
3. Latin-1 / ISO-8859-1 (Western European)
4. Windows-1252 (Windows "ANSI")
5. Shift-JIS (Japanese)
6. GB2312 / GBK (Chinese)

Python: pd.read_csv("file.csv", encoding="utf-8-sig")
Detection: chardet or charset-normalizer library

Phase 10: Performance & Scale

Size Thresholds

RowsTool Recommendation
<10KAny tool (Excel, Sheets, pandas)
10K-100KExcel (careful) or pandas
100K-1Mpandas with chunking, or DuckDB
1M-10MDuckDB, Polars, or database
>10MDatabase (PostgreSQL, BigQuery)

Performance Tips

  • Read only needed columns: pd.read_csv(file, usecols=["col1","col2"])
  • Specify dtypes upfront: Prevents inference overhead
  • Use chunking for large files: pd.read_csv(file, chunksize=50000)
  • Categoricals for low-cardinality: df["status"] = df["status"].astype("category")
  • Avoid iterrows: Use vectorized operations or .apply()
  • DuckDB for SQL on files: duckdb.sql("SELECT * FROM 'file.csv' WHERE x > 100")

Phase 11: Edge Cases & Gotchas

The Dirty Dozen (most common data problems)

  1. Mixed date formats — US (MM/DD) vs EU (DD/MM) vs ISO (YYYY-MM-DD) in same column
  2. Excel date serial numbers — 44927 instead of 2023-01-01
  3. Leading zeros stripped — ZIP code 01234 becomes 1234
  4. Scientific notation — ID 1234567890123 becomes 1.23457E+12
  5. Hidden characters — Non-breaking spaces, zero-width chars, BOM markers
  6. Merged cells — Only top-left has value, rest are empty
  7. Number-as-text — "100" (text) vs 100 (number), looks identical
  8. Locale-dependent decimals — 1,234.56 vs 1.234,56
  9. Empty string vs NULL — "" and NaN behave differently
  10. Trailing whitespace — "New York " ≠ "New York"
  11. Excel 1904 date system — Mac-origin files, dates off by 4 years
  12. Formula results vs formulas — Copy-paste values loses formulas silently

Multi-Currency Handling

currency_rules:
  - Store amount AND currency code in separate columns
  - Never mix currencies in a single column without code
  - Use ISO 4217 codes (USD, GBP, EUR, BTC)
  - Store exchange rate and rate date used for conversion
  - Keep original amount + converted amount as separate columns
  - Specify: is this the rate at transaction time or current rate?

Time Zone Handling

timezone_rules:
  - Store timestamps in UTC internally
  - Record the source timezone
  - Convert to local time only for display
  - "End of day" = 23:59:59 in the business timezone, not UTC
  - Daylight saving transitions can cause 23h or 25h days
  - Aggregate daily data in business timezone, not UTC

Phase 12: Quality Scoring Rubric (0-100)

DimensionWeight0 (Fail)1 (Poor)2 (Fair)3 (Good)4 (Excellent)
Data Cleanliness20%Raw dump, untouchedSome cleaning, inconsistentMost issues addressedClean with documented processSpotless + automated validation
Structure15%Unstructured messBasic tabular, issuesProper structure, minor gapsTidy data, good schemaPerfect normalization + relationships
Analysis Depth20%No analysisBasic counts/sumsSegmented analysisMulti-dimensional + insightsPredictive + prescriptive + actions
Visualization15%No chartsWrong chart typesAdequate chartsClear, well-labeled chartsPublication-quality dashboards
Documentation10%NoneMinimal notesColumn descriptionsFull data dictionary + methodologyReproducible + versioned
Automation10%Manual everythingSome formulasTemplate-basedScripted pipelineFully automated + monitored
Accuracy10%UnverifiedSpot-checkedSample-validatedCross-referenced with sourceReconciled + audit trail

Grading: 90+ = Production analytics, 75-89 = Solid work, 60-74 = Needs improvement, <60 = Redo


Natural Language Commands

"Clean this CSV"           → Run Phase 2 cleaning protocol, output clean file + log
"Analyze this data"        → Phase 1 assessment → Phase 4 analysis → insights
"Build a dashboard"        → Phase 5 template → populate with data
"Convert this to Excel"    → Phase 9 conversion with quality preservation
"Find duplicates"          → Dedup analysis with exact + fuzzy matching
"What's wrong with this data?" → Phase 1 health check + Phase 8 validation
"Create a monthly report"  → Phase 6 automation template
"Compare these two files"  → Join + variance analysis
"Summarize by category"    → Group + aggregate + Pareto analysis
"Make this data tidy"      → Unpivot/reshape to 1-row-per-observation
"Set up a budget tracker"  → Phase 7 Pattern 5 template
"Profile this dataset"     → Full Phase 1 + Phase 8 quality score

Related AfrexAI Skills

  • afrexai-data-analyst — Advanced analytical methodology (DICE framework, statistical analysis)
  • afrexai-fpa-engine — Financial planning & analysis with spreadsheet models
  • afrexai-budget-tracker — Personal/business budget management
  • afrexai-business-automation — Automate recurring spreadsheet workflows

⚡ Level up your data game → AfrexAI Context Packs ($47) — industry-specific data templates, KPI frameworks, and reporting automations for SaaS, Fintech, Manufacturing, Ecommerce, and more.

🔗 More free skills by AfrexAI:

  • afrexai-data-analyst — Complete data analysis methodology
  • afrexai-business-automation — Workflow automation frameworks
  • afrexai-seo-content-engine — SEO-optimized content creation
  • afrexai-customer-success — Customer retention & health scoring
  • afrexai-devops-engine — DevOps & platform engineering

📦 Browse all: AfrexAI Storefront

平台分布

OpenClaw

76.51%
按下载量换算1,205

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

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

继续浏览同类 Skills