iiuniversitet.ruЦентр обучения нейросетямОткрыть каталог

Профиль и проверка таблицы данных

Изучает таблицу или файл: форму, пустые значения, дубликаты, странные значения, и предлагает, что анализировать дальше.

СкиллAnthropicClaudeApache-2.0Загрузить архив в ClaudeПроверка не требуется
Что делает
Изучает таблицу или файл: форму, пустые значения, дубликаты, странные значения, и предлагает, что анализировать дальше.
Когда брать
Когда получил новую таблицу или файл и хочешь понять, что в нём и можно ли ему верить, прежде чем строить отчёты.
Пример запроса
Изучи файл clients.csv: что в нём есть, много ли пропусков и дубликатов, что стоит проанализировать.
Нужно подключить
хранилище данных или файл CSV/Excel

Входит в плагин data. В Cowork и Claude Code можно поставить плагин целиком.

Как включить

  1. Нажмите «Скачать на русском» и сохраните архив.
  2. В Claude откройте Настройки → Capabilities → Skills → Upload skill и выберите архив.
  3. Включите скилл переключателем.
Для терминала

Распакуйте архив и положите папку explore-data в ~/.claude/skills/. Файл SKILL.md должен лежать внутри этой папки.

Текст

---
name: explore-data
description: Изучи набор данных и составь его профиль, чтобы понять форму, качество и закономерности данных. Используй, когда встретил новую таблицу или файл, нужно проверить долю пустых значений и распределения по столбцам, найти проблемы качества вроде дубликатов или подозрительных значений или решить, какие разрезы и метрики анализировать.
argument-hint: "<table or file>"
---

/explore-data - Профиль и исследование набора данных

Если встретишь незнакомые подстановки или нужно проверить, какие инструменты подключены, смотри [CONNECTORS.md](../../CONNECTORS.md).

Составь подробный профиль данных для таблицы или загруженного файла. Пойми форму, качество и закономерности данных, прежде чем переходить к анализу.

Использование

/explore-data <table_name or file>

Рабочий процесс

1. Получи доступ к данным

Если подключён MCP-сервер хранилища данных:

  1. Определи название таблицы (учти префиксы схем, при неоднозначности предложи варианты)
  2. Запроси метаданные таблицы: названия столбцов, типы, описания, если они есть
  3. Выполни профилирующие запросы к живым данным

Если передан файл (CSV, Excel, Parquet, JSON):

  1. Прочитай файл и загрузи его в рабочий набор данных
  2. Определи типы столбцов по данным

Если нет ни того, ни другого:

  1. Попроси пользователя указать название таблицы (при подключённом хранилище) или загрузить файл
  2. Если он опишет схему таблицы, подскажи, какие профилирующие запросы выполнить

2. Пойми структуру

Прежде чем анализировать данные, пойми их структуру:

Вопросы по таблице в целом:

  • Сколько строк и столбцов?
  • Какова гранулярность (одна строка — это что)?
  • Каков первичный ключ? Уникален ли он?
  • Когда данные обновлялись в последний раз?
  • Насколько далеко в прошлое уходят данные?

Классификация столбцов — отнеси каждый столбец к одному из типов:

  • Идентификатор: уникальные ключи, внешние ключи, идентификаторы сущностей
  • Измерение: категориальные признаки для группировки и фильтрации (статус, тип, регион, категория)
  • Метрика: количественные значения для измерения (выручка, количество, длительность, оценка)
  • Время: даты и метки времени (created_at, updated_at, event_date)
  • Текст: поля со свободным текстом (описание, заметки, имя)
  • Логический: флаги «истина/ложь»
  • Структурный: JSON, массивы, вложенные структуры

3. Составь профиль данных

Выполни следующие профилирующие проверки:

Показатели по таблице в целом:

  • Общее число строк
  • Число столбцов и разбивка по типам
  • Примерный размер таблицы (если есть в метаданных)
  • Охват по датам (минимум и максимум в столбцах с датами)

Все столбцы:

  • Число и доля пустых значений (null)
  • Число уникальных значений и кардинальность (уникальные / всего)
  • Самые частые значения (топ 5–10 с частотами)
  • Самые редкие значения (нижние 5, чтобы заметить аномалии)

Числовые столбцы (метрики):

минимум, максимум, среднее, медиана (p50)
стандартное отклонение
процентили: p1, p5, p25, p75, p95, p99
число нулей
число отрицательных значений (если их быть не должно)

Строковые столбцы (измерения, текст):

минимальная длина, максимальная длина, средняя длина
число пустых строк
анализ шаблонов (следуют ли значения единому формату?)
единообразие регистра (всё в верхнем, всё в нижнем, вперемешку?)
число значений с пробелами в начале и в конце

Столбцы с датой и временем:

минимальная дата, максимальная дата
пустые даты
даты в будущем (если их быть не должно)
распределение по месяцам и неделям
пропуски во временном ряду

Логические столбцы:

число значений «истина», «ложь» и null
доля «истины»

Представь профиль в виде аккуратной сводной таблицы, сгруппированной по типам столбцов (измерения, метрики, даты, идентификаторы).

4. Найди проблемы качества данных

Примени приведённую ниже систему оценки качества. Отметь возможные проблемы:

  • Высокая доля пустых значений: столбцы с >5% пустых значений (предупреждение), >20% (тревога)
  • Неожиданно низкая кардинальность: столбцы, где значений должно быть много, но их мало (например, «user_id» всего с 50 уникальными значениями)
  • Неожиданно высокая кардинальность: столбцы, которые должны быть категориальными, но содержат слишком много уникальных значений
  • Подозрительные значения: отрицательные суммы там, где ожидаются только положительные; даты в будущем в исторических данных; очевидные значения-заглушки (например, «N/A», «TBD», «test», «999999»)
  • Поиск дубликатов: проверь, есть ли естественный ключ и нет ли в нём дубликатов
  • Перекос распределения: сильно скошенные числовые распределения, которые могут исказить средние значения
  • Проблемы с кодировкой: смешанный регистр в категориальных полях, пробелы в конце, непоследовательные форматы

5. Найди связи и закономерности

Когда отдельные столбцы просмотрены:

  • Кандидаты во внешние ключи: столбцы с идентификаторами, которые могут связывать таблицу с другими
  • Иерархии: столбцы, образующие естественные пути детализации (страна > регион > город)
  • Корреляции: числовые столбцы, которые меняются вместе
  • Производные столбцы: столбцы, которые, судя по всему, вычислены из других
  • Избыточные столбцы: столбцы с одинаковой или почти одинаковой информацией

6. Предложи интересные измерения и метрики

На основе профиля столбцов порекомендуй:

  • Лучшие столбцы-измерения для срезов данных (категориальные столбцы с разумной кардинальностью, 3–50 значений)
  • Ключевые столбцы-метрики для измерения (числовые столбцы со значимым распределением)
  • Столбцы времени, подходящие для анализа трендов
  • Естественные группировки или иерархии, заметные в данных
  • Возможные ключи для соединения с другими таблицами (идентификаторы, внешние ключи)

7. Порекомендуй дальнейшие анализы

Предложи 3–5 конкретных анализов, которые пользователь мог бы сделать дальше:

  • «Анализ тренда по [метрика] во времени по [столбец_времени] с группировкой по [измерение]»
  • «Углублённый анализ распределения в [скошенный_столбец], чтобы понять выбросы»
  • «Проверка качества данных в [проблемный_столбец]»
  • «Корреляционный анализ [метрика_а] и [метрика_б]»
  • «Когортный анализ на основе [столбец_даты] и [столбец_статуса]»

Формат результата

## Профиль данных: [table_name]

### Обзор
- Строк: 2 340 891
- Столбцов: 23 (8 измерений, 6 метрик, 4 даты, 5 идентификаторов)
- Диапазон дат: с 2021-03-15 по 2024-01-22

### Подробности по столбцам
[сводная таблица]

### Проблемы качества данных
[отмеченные проблемы с указанием серьёзности]

### Рекомендуемые направления исследования
[нумерованный список предлагаемых дальнейших анализов]

Система оценки качества

Оценка полноты

Оцени каждый столбец:

  • Полный (>99% непустых): зелёный
  • Почти полный (95–99%): жёлтый — изучи пустые значения
  • Неполный (80–95%): оранжевый — выясни причину и важно ли это
  • Разреженный (<80%): красный — без заполнения пропусков, возможно, непригоден

Проверки согласованности

Ищи:

  • Непоследовательность форматов значений: одно и то же понятие записано по-разному («USA», «US», «United States», «us»)
  • Непоследовательность типов: числа хранятся как строки, даты в разных форматах
  • Ссылочная целостность: внешние ключи, которым не соответствует ни одна родительская запись
  • Нарушения бизнес-правил: отрицательные количества, даты окончания раньше дат начала, проценты больше 100
  • Согласованность между столбцами: статус = «completed», но completed_at пусто

Признаки недостоверности

Тревожные сигналы, указывающие на проблемы с точностью:

  • Значения-заглушки: 0, -1, 999999, «N/A», «TBD», «test», «xxx»
  • Значения по умолчанию: подозрительно высокая частота одного значения
  • Устаревшие данные: updated_at не показывает недавних изменений в активной системе
  • Невозможные значения: возраст больше 150 лет, даты в далёком будущем, отрицательная длительность
  • Склонность к круглым числам: все значения заканчиваются на 0 или 5 (говорит об оценке, а не об измерении)

Оценка актуальности

  • Когда таблица обновлялась в последний раз?
  • Какая ожидаемая частота обновления?
  • Есть ли задержка между временем события и временем загрузки?
  • Есть ли пропуски во временном ряду?

Приёмы поиска закономерностей

Анализ распределения

Для числовых столбцов определи характер распределения:

  • Нормальное: среднее и медиана близки, форма колоколом
  • С правым смещением: длинный хвост высоких значений (типично для выручки, длительности сессий)
  • С левым смещением: длинный хвост низких значений (встречается реже)
  • Двугорбое: два пика (говорит о двух различных группах)
  • Степенной закон: немного очень больших значений и много малых (типично для активности пользователей)
  • Равномерное: примерно одинаковая частота по всему диапазону (часто синтетические или случайные данные)

Временные закономерности

В данных временных рядов ищи:

  • Тренд: устойчивое движение вверх или вниз
  • Сезонность: повторяющиеся закономерности (недельные, месячные, квартальные, годовые)
  • Эффекты дня недели: разница между буднями и выходными
  • Эффекты праздников: падения или всплески вокруг известных праздников
  • Точки излома: внезапные сдвиги уровня или тренда
  • Аномалии: отдельные точки данных, выбивающиеся из закономерности

Поиск сегментов

Находи естественные сегменты так:

  • Ищи категориальные столбцы с 3–20 уникальными значениями
  • Сравнивай распределения метрик по значениям сегментов
  • Ищи сегменты со значительно отличающимся поведением
  • Проверяй, однородны ли сегменты или содержат подсегменты

Исследование корреляций

Между числовыми столбцами:

  • Посчитай матрицу корреляций для всех пар метрик
  • Отметь сильные корреляции (|r| > 0,7) для дальнейшего изучения
  • Примечание: корреляция не означает причинно-следственную связь — скажи об этом прямо
  • Проверь нелинейные связи (например, квадратичные, логарифмические)

Понимание схемы и документирование

Шаблон документации схемы

При документировании набора данных для командной работы:

## Таблица: [schema.table_name]

**Описание**: [Что представляет эта таблица]
**Гранулярность**: [Одна строка соответствует...]
**Первичный ключ**: [столбец(цы)]
**Число строк**: [приблизительно, с датой]
**Частота обновления**: [в реальном времени / раз в час / раз в день / раз в неделю]
**Владелец**: [ответственная команда или человек]

### Ключевые столбцы

| Столбец | Тип | Описание | Примеры значений | Примечания |
|--------|------|-------------|----------------|-------|
| user_id | STRING | Уникальный идентификатор пользователя | "usr_abc123" | Внешний ключ к users.id |
| event_type | STRING | Тип события | "click", "view", "purchase" | 15 уникальных значений |
| revenue | DECIMAL | Выручка по транзакции в USD | 29.99, 149.00 | Null для событий, не связанных с покупкой |
| created_at | TIMESTAMP | Когда произошло событие | 2024-01-15 14:23:01 | Таблица секционирована по этому столбцу |

### Связи
- Соединяется с `users` по `user_id`
- Соединяется с `products` по `product_id`
- Родитель для `event_details` (1:много по event_id)

### Известные проблемы
- [Перечисли все известные проблемы качества данных]
- [Отметь все подводные камни для аналитиков]

### Типовые шаблоны запросов
- [Типичные сценарии использования этой таблицы]

Запросы для изучения схемы

При подключении к хранилищу данных используй эти шаблоны, чтобы изучить схему:

-- List all tables in a schema (PostgreSQL)
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;

-- Column details (PostgreSQL)
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'my_table'
ORDER BY ordinal_position;

-- Table sizes (PostgreSQL)
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

-- Row counts for all tables (general pattern)
-- Run per-table: SELECT COUNT(*) FROM table_name

Происхождение данных и зависимости

При изучении незнакомой среды данных:

  1. Начни с «выходных» таблиц (которые используют отчёты или дашборды)
  2. Проследи путь вверх по потоку: какие таблицы питают их?
  3. Определи слои: сырые данные, промежуточные (staging) и витрины (mart)
  4. Составь карту цепочки преобразований от сырых данных до аналитических таблиц
  5. Отметь, где данные обогащаются, фильтруются или агрегируются

Советы

  • Для очень больших таблиц (100 млн строк и больше) профилирующие запросы по умолчанию используют выборку — скажи, если нужны точные подсчёты
  • Если ты впервые изучаешь новый набор данных, эта команда даёт общее представление о нём, прежде чем писать конкретные запросы
  • Метки качества эвристические — не каждая из них означает настоящую проблему, но каждую стоит быстро проверить

Перевод: iiuniversitet. Оригинал: https://github.com/anthropics/knowledge-work-plugins/tree/main/data/skills/explore-data, лицензия Apache-2.0. Изменения: перевод на русский язык.

Оригинал на английском
---
name: explore-data
description: Profile and explore a dataset to understand its shape, quality, and patterns. Use when encountering a new table or file, checking null rates and column distributions, spotting data quality issues like duplicates or suspicious values, or deciding which dimensions and metrics to analyze.
argument-hint: "<table or file>"
---

# /explore-data - Profile and Explore a Dataset

> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).

Generate a comprehensive data profile for a table or uploaded file. Understand its shape, quality, and patterns before diving into analysis.

## Usage

```
/explore-data <table_name or file>
```

## Workflow

### 1. Access the Data

**If a data warehouse MCP server is connected:**

1. Resolve the table name (handle schema prefixes, suggest matches if ambiguous)
2. Query table metadata: column names, types, descriptions if available
3. Run profiling queries against the live data

**If a file is provided (CSV, Excel, Parquet, JSON):**

1. Read the file and load into a working dataset
2. Infer column types from the data

**If neither:**

1. Ask the user to provide a table name (with their warehouse connected) or upload a file
2. If they describe a table schema, provide guidance on what profiling queries to run

### 2. Understand Structure

Before analyzing any data, understand its structure:

**Table-level questions:**
- How many rows and columns?
- What is the grain (one row per what)?
- What is the primary key? Is it unique?
- When was the data last updated?
- How far back does the data go?

**Column classification** — categorize each column as one of:
- **Identifier**: Unique keys, foreign keys, entity IDs
- **Dimension**: Categorical attributes for grouping/filtering (status, type, region, category)
- **Metric**: Quantitative values for measurement (revenue, count, duration, score)
- **Temporal**: Dates and timestamps (created_at, updated_at, event_date)
- **Text**: Free-form text fields (description, notes, name)
- **Boolean**: True/false flags
- **Structural**: JSON, arrays, nested structures

### 3. Generate Data Profile

Run the following profiling checks:

**Table-level metrics:**
- Total row count
- Column count and types breakdown
- Approximate table size (if available from metadata)
- Date range coverage (min/max of date columns)

**All columns:**
- Null count and null rate
- Distinct count and cardinality ratio (distinct / total)
- Most common values (top 5-10 with frequencies)
- Least common values (bottom 5 to spot anomalies)

**Numeric columns (metrics):**
```
min, max, mean, median (p50)
standard deviation
percentiles: p1, p5, p25, p75, p95, p99
zero count
negative count (if unexpected)
```

**String columns (dimensions, text):**
```
min length, max length, avg length
empty string count
pattern analysis (do values follow a format?)
case consistency (all upper, all lower, mixed?)
leading/trailing whitespace count
```

**Date/timestamp columns:**
```
min date, max date
null dates
future dates (if unexpected)
distribution by month/week
gaps in time series
```

**Boolean columns:**
```
true count, false count, null count
true rate
```

**Present the profile as a clean summary table**, grouped by column type (dimensions, metrics, dates, IDs).

### 4. Identify Data Quality Issues

Apply the quality assessment framework below. Flag potential problems:

- **High null rates**: Columns with >5% nulls (warn), >20% nulls (alert)
- **Low cardinality surprises**: Columns that should be high-cardinality but aren't (e.g., a "user_id" with only 50 distinct values)
- **High cardinality surprises**: Columns that should be categorical but have too many distinct values
- **Suspicious values**: Negative amounts where only positive expected, future dates in historical data, obviously placeholder values (e.g., "N/A", "TBD", "test", "999999")
- **Duplicate detection**: Check if there's a natural key and whether it has duplicates
- **Distribution skew**: Extremely skewed numeric distributions that could affect averages
- **Encoding issues**: Mixed case in categorical fields, trailing whitespace, inconsistent formats

### 5. Discover Relationships and Patterns

After profiling individual columns:

- **Foreign key candidates**: ID columns that might link to other tables
- **Hierarchies**: Columns that form natural drill-down paths (country > state > city)
- **Correlations**: Numeric columns that move together
- **Derived columns**: Columns that appear to be computed from others
- **Redundant columns**: Columns with identical or near-identical information

### 6. Suggest Interesting Dimensions and Metrics

Based on the column profile, recommend:

- **Best dimension columns** for slicing data (categorical columns with reasonable cardinality, 3-50 values)
- **Key metric columns** for measurement (numeric columns with meaningful distributions)
- **Time columns** suitable for trend analysis
- **Natural groupings** or hierarchies apparent in the data
- **Potential join keys** linking to other tables (ID columns, foreign keys)

### 7. Recommend Follow-Up Analyses

Suggest 3-5 specific analyses the user could run next:

- "Trend analysis on [metric] by [time_column] grouped by [dimension]"
- "Distribution deep-dive on [skewed_column] to understand outliers"
- "Data quality investigation on [problematic_column]"
- "Correlation analysis between [metric_a] and [metric_b]"
- "Cohort analysis using [date_column] and [status_column]"

## Output Format

```
## Data Profile: [table_name]

### Overview
- Rows: 2,340,891
- Columns: 23 (8 dimensions, 6 metrics, 4 dates, 5 IDs)
- Date range: 2021-03-15 to 2024-01-22

### Column Details
[summary table]

### Data Quality Issues
[flagged issues with severity]

### Recommended Explorations
[numbered list of suggested follow-up analyses]
```

---

## Quality Assessment Framework

### Completeness Score

Rate each column:
- **Complete** (>99% non-null): Green
- **Mostly complete** (95-99%): Yellow -- investigate the nulls
- **Incomplete** (80-95%): Orange -- understand why and whether it matters
- **Sparse** (<80%): Red -- may not be usable without imputation

### Consistency Checks

Look for:
- **Value format inconsistency**: Same concept represented differently ("USA", "US", "United States", "us")
- **Type inconsistency**: Numbers stored as strings, dates in various formats
- **Referential integrity**: Foreign keys that don't match any parent record
- **Business rule violations**: Negative quantities, end dates before start dates, percentages > 100
- **Cross-column consistency**: Status = "completed" but completed_at is null

### Accuracy Indicators

Red flags that suggest accuracy issues:
- **Placeholder values**: 0, -1, 999999, "N/A", "TBD", "test", "xxx"
- **Default values**: Suspiciously high frequency of a single value
- **Stale data**: Updated_at shows no recent changes in an active system
- **Impossible values**: Ages > 150, dates in the far future, negative durations
- **Round number bias**: All values ending in 0 or 5 (suggests estimation, not measurement)

### Timeliness Assessment

- When was the table last updated?
- What is the expected update frequency?
- Is there a lag between event time and load time?
- Are there gaps in the time series?

## Pattern Discovery Techniques

### Distribution Analysis

For numeric columns, characterize the distribution:
- **Normal**: Mean and median are close, bell-shaped
- **Skewed right**: Long tail of high values (common for revenue, session duration)
- **Skewed left**: Long tail of low values (less common)
- **Bimodal**: Two peaks (suggests two distinct populations)
- **Power law**: Few very large values, many small ones (common for user activity)
- **Uniform**: Roughly equal frequency across range (often synthetic or random)

### Temporal Patterns

For time series data, look for:
- **Trend**: Sustained upward or downward movement
- **Seasonality**: Repeating patterns (weekly, monthly, quarterly, annual)
- **Day-of-week effects**: Weekday vs. weekend differences
- **Holiday effects**: Drops or spikes around known holidays
- **Change points**: Sudden shifts in level or trend
- **Anomalies**: Individual data points that break the pattern

### Segmentation Discovery

Identify natural segments by:
- Finding categorical columns with 3-20 distinct values
- Comparing metric distributions across segment values
- Looking for segments with significantly different behavior
- Testing whether segments are homogeneous or contain sub-segments

### Correlation Exploration

Between numeric columns:
- Compute correlation matrix for all metric pairs
- Flag strong correlations (|r| > 0.7) for investigation
- Note: Correlation does not imply causation -- flag this explicitly
- Check for non-linear relationships (e.g., quadratic, logarithmic)

## Schema Understanding and Documentation

### Schema Documentation Template

When documenting a dataset for team use:

```markdown
## Table: [schema.table_name]

**Description**: [What this table represents]
**Grain**: [One row per...]
**Primary Key**: [column(s)]
**Row Count**: [approximate, with date]
**Update Frequency**: [real-time / hourly / daily / weekly]
**Owner**: [team or person responsible]

### Key Columns

| Column | Type | Description | Example Values | Notes |
|--------|------|-------------|----------------|-------|
| user_id | STRING | Unique user identifier | "usr_abc123" | FK to users.id |
| event_type | STRING | Type of event | "click", "view", "purchase" | 15 distinct values |
| revenue | DECIMAL | Transaction revenue in USD | 29.99, 149.00 | Null for non-purchase events |
| created_at | TIMESTAMP | When the event occurred | 2024-01-15 14:23:01 | Partitioned on this column |

### Relationships
- Joins to `users` on `user_id`
- Joins to `products` on `product_id`
- Parent of `event_details` (1:many on event_id)

### Known Issues
- [List any known data quality issues]
- [Note any gotchas for analysts]

### Common Query Patterns
- [Typical use cases for this table]
```

### Schema Exploration Queries

When connected to a data warehouse, use these patterns to discover schema:

```sql
-- List all tables in a schema (PostgreSQL)
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;

-- Column details (PostgreSQL)
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'my_table'
ORDER BY ordinal_position;

-- Table sizes (PostgreSQL)
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

-- Row counts for all tables (general pattern)
-- Run per-table: SELECT COUNT(*) FROM table_name
```

### Lineage and Dependencies

When exploring an unfamiliar data environment:

1. Start with the "output" tables (what reports or dashboards consume)
2. Trace upstream: What tables feed into them?
3. Identify raw/staging/mart layers
4. Map the transformation chain from raw data to analytical tables
5. Note where data is enriched, filtered, or aggregated

## Tips

- For very large tables (100M+ rows), profiling queries use sampling by default -- mention if you need exact counts
- If exploring a new dataset for the first time, this command gives you the lay of the land before writing specific queries
- The quality flags are heuristic -- not every flag is a real problem, but each is worth a quick look

Источник: anthropics/knowledge-work-plugins / data / explore-data ↗. Ссылка проверена 2026-10-10.