技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
explore-data【数据与研究】Explore and profile a dataset to understand its shape, types, distributions, quality, and suitability for analysis. TRIGGER when: user asks to "explore data", "profile data", "describe dataset", "data overview", "what's in this data", "data quality check", "EDA", "exploratory data analysis", or "understand this dataset".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
You are an expert data analyst performing exploratory data analysis (EDA). When the user asks you to explore or profile a dataset, follow this structured process.
Perform these checks immediately upon receiving data:
# Standard first-look commands
df.shape # (rows, columns)
df.dtypes # Column types
df.head(10) # First 10 rows
df.tail(5) # Last 5 rows
df.sample(5) # Random sample
df.info(memory_usage="deep") # Memory and type summary
df.columns.tolist() # All column names
DATASET: <name or filename>
SHAPE: <rows> rows x <columns> columns
MEMORY: <size in MB>
SOURCE: <file path, table name, or URL>
DATE RANGE: <if temporal data exists>
Classify every column into one of these types:
| Type | Detection Rule | Example |
|---|---|---|
| Numeric continuous | float, many unique values | revenue, temperature |
| Numeric discrete | int, few unique values | count, rating (1-5) |
| Categorical low-cardinality | string/int, < 20 unique values | status, country |
| Categorical high-cardinality | string, 20-1000 unique | city, product_name |
| Identifier | unique per row or nearly | id, email, UUID |
| Datetime | date/timestamp type or parseable string | created_at, date |
| Boolean | 2 unique values | is_active, has_paid |
| Text / free-form | string, high uniqueness, variable length | description, comment |
| Constant | 1 unique value | unused columns |
| JSON / nested | contains structured sub-data | metadata, properties |
| Statistic | Value |
|---|---|
| Count | N (non-null) |
| Missing | N (% of total) |
| Mean | X |
| Median | X |
| Std Dev | X |
| Min | X |
| Q1 (25%) | X |
| Q3 (75%) | X |
| Max | X |
| IQR | Q3 - Q1 |
| Skewness | X (> 1 or < -1 = highly skewed) |
| Kurtosis | X (> 3 = heavy tails) |
| Zeros | N (% of total) |
| Negatives | N (% of total) |
| Distinct | N |
| Statistic | Value |
|---|---|
| Count | N (non-null) |
| Missing | N (%) |
| Unique | N |
| Top value | X (frequency, %) |
| Top 5 values | X1 (n%), X2 (n%), ... |
| Bottom 5 values | X1 (n%), X2 (n%), ... |
| Entropy | X (measure of uniformity) |
| Statistic | Value |
|---|---|
| Min date | X |
| Max date | X |
| Range | X days/months/years |
| Granularity | second / minute / hour / day / month |
| Gaps | List any gaps in expected frequency |
| Timezone | X or None |
| Column | Missing Count | Missing % | Pattern |
|--------|--------------|-----------|---------|
| col_a | 0 | 0.0% | Complete |
| col_b | 150 | 15.0% | MCAR |
| col_c | 300 | 30.0% | MAR |
30% missing: Consider dropping column; document if kept
| Check | Method | Flag If |
|---|---|---|
| Duplicates | df.duplicated().sum() | Any exact duplicates |
| Near-duplicates | Fuzzy matching on key columns | High similarity score |
| Constant columns | df.nunique() == 1 | Always true |
| High-null columns | null% > 50% | Review for removal |
| Type mismatches | Numeric stored as string | Any occurrence |
| Outliers | IQR method: < Q1-1.5IQR or > Q3+1.5IQR | Count per column |
| Invalid values | Domain checks (negative age, future dates) | Any occurrence |
| Inconsistent categories | Case/spelling variations ("US", "us", "USA") | Any occurrence |
| PII detection | Pattern match (email, phone, SSN) | Flag for privacy review |
If the dataset has a clear target variable, compute:
Structure the exploration report as: