‹ 首页

data-explore

@evolution-foundation · 收录于 5 天前 · 上游提交 2 个月前

Perfila e explora um dataset para entender sua forma, qualidade e padrões. Use ao encontrar uma nova tabela ou arquivo, verificar taxas de nulo e distribuições de colunas, identificar problemas de qualidade como duplicatas ou valores suspeitos, ou decidir quais dimensões e métricas analisar. Funciona com tabelas PostgreSQL do stack Evolution (Evo CRM, Evo AI), dados do Stripe, Omie, Licensing, ou arquivos CSV/Excel carregados.

适合你,如果经常需要快速了解新数据集的结构和问题

/ 通过 npx 安装 校验哈希
npx oh-my-skill add evolution-foundation/evo-nexus/data-explore
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- evolution-foundation/evo-nexus/data-explore
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify evolution-foundation/evo-nexus/data-explore
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
509GitHub stars
~3.1K上下文体积 · 单文件
索引托管

怎么用

商店整理自技能原文 · 版本 7f5dd76 · 表述以原文为准
它做什么

分析数据集的结构、质量和模式,生成包含统计摘要、字段分类、数据问题标记和推荐分析方向的轮廓报告。

什么时候触发

当你上传CSV/Excel文件,或指定可访问的数据表(如PostgreSQL、Stripe、Omie等)时,直接输入命令使用。

装好后可以这样说
将生成表格统计和字段详情。
报告会高亮问题列。
得到维度、度量等分类。
技能原文 SKILL.md作者撰写 · Apache-2.0 · 7f5dd76

data-explore — Perfilar e Explorar um Dataset

Gera um perfil de dados abrangente para uma tabela ou arquivo carregado. Entenda a forma, qualidade e padrões dos dados antes de mergulhar na análise.

Uso
/data-explore <nome_da_tabela ou arquivo>
Fluxo de Trabalho
1. Acessar os Dados

Se a fonte de dados estiver disponível via skill ou conexão PostgreSQL:

  1. Resolver o nome da tabela (tratar prefixos de schema, sugerir correspondências se ambíguo)
  2. Consultar metadados da tabela: nomes de colunas, tipos, descrições se disponíveis
  3. Executar queries de perfilamento contra os dados ao vivo

Se um arquivo for fornecido (CSV, Excel, Parquet, JSON):

  1. Ler o arquivo e carregar no dataset de trabalho
  2. Inferir tipos de colunas a partir dos dados

Se for uma fonte do workspace (Stripe, Omie, Licensing, Evo CRM):

  1. Usar a skill correspondente (int-stripe, int-omie, int-licensing, int-evo-crm)
  2. Extrair uma amostra representativa
  3. Prosseguir com o perfilamento sobre os dados extraídos

Se nenhum dado estiver disponível:

  1. Pedir ao usuário que forneça o nome de uma tabela (com fonte conectada) ou faça upload de um arquivo
  2. Se descrever um schema de tabela, fornecer orientação sobre quais queries de perfilamento executar
2. Entender a Estrutura

Antes de analisar qualquer dado, entender sua estrutura:

Perguntas a nível de tabela:

  • Quantas linhas e colunas?
  • Qual é o grain (uma linha por quê)?
  • Qual é a chave primária? É única?
  • Quando os dados foram atualizados pela última vez?
  • Até quando os dados retroagem?

Classificação de colunas — categorizar cada coluna como uma de:

  • Identificador: Chaves únicas, chaves estrangeiras, IDs de entidade
  • Dimensão: Atributos categóricos para agrupamento/filtragem (status, tipo, plano, país)
  • Métrica: Valores quantitativos para medição (receita, contagem, duração, score)
  • Temporal: Datas e timestamps (criado_em, atualizado_em, data_evento)
  • Texto: Campos de texto livre (descrição, notas, nome)
  • Booleano: Flags verdadeiro/falso
  • Estrutural: JSON, arrays, estruturas aninhadas
3. Gerar Perfil de Dados

Executar as seguintes verificações de perfilamento:

Métricas a nível de tabela:

  • Contagem total de linhas
  • Contagem de colunas e breakdown de tipos
  • Tamanho aproximado da tabela (se disponível nos metadados)
  • Cobertura do intervalo de datas (min/max das colunas de data)

Todas as colunas:

  • Contagem de nulos e taxa de nulos
  • Contagem distinta e razão de cardinalidade (distinto / total)
  • Valores mais comuns (top 5-10 com frequências)
  • Valores menos comuns (bottom 5 para identificar anomalias)

Colunas numéricas (métricas):

min, max, média, mediana (p50)
desvio padrão
percentis: p1, p5, p25, p75, p95, p99
contagem de zeros
contagem de negativos (se inesperado)

Colunas string (dimensões, texto):

comprimento mínimo, máximo, médio
contagem de strings vazias
análise de padrão (valores seguem um formato?)
consistência de case (tudo maiúsculo, minúsculo, misto?)
contagem de espaços antes/depois

Colunas de data/timestamp:

data mínima, data máxima
datas nulas
datas futuras (se inesperado)
distribuição por mês/semana
lacunas na série temporal

Colunas booleanas:

contagem de verdadeiro, falso, nulo
taxa de verdadeiro

Apresentar o perfil como uma tabela de resumo limpa, agrupada por tipo de coluna (dimensões, métricas, datas, IDs).

4. Identificar Problemas de Qualidade dos Dados

Aplicar o framework de avaliação de qualidade abaixo. Sinalizar problemas potenciais:

  • Altas taxas de nulo: Colunas com >5% de nulos (avisar), >20% de nulos (alertar)
  • Surpresas de baixa cardinalidade: Colunas que deveriam ser de alta cardinalidade mas não são (ex: um instancia_id com apenas 50 valores distintos)
  • Surpresas de alta cardinalidade: Colunas que deveriam ser categóricas mas têm muitos valores distintos
  • Valores suspeitos: Valores negativos onde apenas positivos são esperados, datas futuras em dados históricos, valores claramente placeholder (ex: "N/A", "TBD", "test", "999999", "0000-00-00")
  • Detecção de duplicatas: Verificar se há uma chave natural e se ela tem duplicatas
  • Distorção de distribuição: Distribuições numéricas extremamente distorcidas que podem afetar médias
  • Problemas de encoding: Case misto em campos categóricos, espaços em branco, formatos inconsistentes
5. Descobrir Relacionamentos e Padrões

Após perfilar colunas individuais:

  • Candidatos a chave estrangeira: Colunas de ID que podem se ligar a outras tabelas
  • Hierarquias: Colunas que formam caminhos naturais de drill-down (país > estado > cidade)
  • Correlações: Colunas numéricas que se movem juntas
  • Colunas derivadas: Colunas que parecem calculadas a partir de outras
  • Colunas redundantes: Colunas com informações idênticas ou quase idênticas
6. Sugerir Dimensões e Métricas Interessantes

Com base no perfil de colunas, recomendar:

  • Melhores colunas de dimensão para segmentar dados (colunas categóricas com cardinalidade razoável, 3-50 valores)
  • Colunas de métrica-chave para medição (colunas numéricas com distribuições significativas)
  • Colunas de tempo adequadas para análise de tendências
  • Agrupamentos naturais ou hierarquias aparentes nos dados
  • Chaves de join potenciais para ligar a outras tabelas
7. Recomendar Análises de Acompanhamento

Sugerir 3-5 análises específicas que o usuário poderia executar a seguir:

  • "Análise de tendência em [métrica] por [coluna_temporal] agrupada por [dimensão]"
  • "Aprofundamento de distribuição em [coluna_distorcida] para entender outliers"
  • "Investigação de qualidade de dados em [coluna_problemática]"
  • "Análise de correlação entre [métrica_a] e [métrica_b]"
  • "Análise de cohort usando [coluna_data] e [coluna_status]"
Formato de Saída
## Perfil de Dados: [nome_da_tabela]

### Visão Geral
- Linhas: 2.340.891
- Colunas: 23 (8 dimensões, 6 métricas, 4 datas, 5 IDs)
- Intervalo de datas: 2021-03-15 a 2024-01-22
- Última atualização: 2024-01-22 03:45 BRT

### Detalhes das Colunas
[tabela de resumo]

### Problemas de Qualidade de Dados
[problemas sinalizados com severidade]

### Explorações Recomendadas
[lista numerada de análises de acompanhamento sugeridas]

Framework de Avaliação de Qualidade
Score de Completude

Avaliar cada coluna:

  • Completa (>99% não-nulo): Verde
  • Majoritariamente completa (95-99%): Amarelo — investigar os nulos
  • Incompleta (80-95%): Laranja — entender por que e se importa
  • Esparsa (<80%): Vermelho — pode não ser utilizável sem imputação
Verificações de Consistência

Procurar por:

  • Inconsistência de formato de valor: Mesmo conceito representado diferentemente ("Brasil", "BR", "Brazil", "br")
  • Inconsistência de tipo: Números armazenados como strings, datas em vários formatos
  • Integridade referencial: Chaves estrangeiras que não correspondem a nenhum registro pai
  • Violações de regras de negócio: Quantidades negativas, datas de fim antes de datas de início, percentuais > 100
  • Consistência entre colunas: Status = "concluído" mas concluido_em é nulo
Indicadores de Precisão

Sinais de alerta que sugerem problemas de precisão:

  • Valores placeholder: 0, -1, 999999, "N/A", "TBD", "test", "xxx"
  • Valores padrão: Frequência suspeitosamente alta de um único valor
  • Dados desatualizados: atualizado_em não mostra alterações recentes em um sistema ativo
  • Valores impossíveis: Idades > 150, datas no futuro distante, durações negativas
  • Viés de números redondos: Todos os valores terminando em 0 ou 5 (sugere estimativa, não medição)
Avaliação de Atualidade
  • Quando a tabela foi atualizada pela última vez?
  • Qual é a frequência esperada de atualização?
  • Há uma defasagem entre o tempo do evento e o tempo de carga?
  • Existem lacunas na série temporal?
Técnicas de Descoberta de Padrões
Análise de Distribuição

Para colunas numéricas, caracterizar a distribuição:

  • Normal: Média e mediana próximas, formato de sino
  • Assimetria à direita: Cauda longa de valores altos (comum para receita, duração de sessão)
  • Assimetria à esquerda: Cauda longa de valores baixos (menos comum)
  • Bimodal: Dois picos (sugere duas populações distintas)
  • Lei de potência: Poucos valores muito grandes, muitos pequenos (comum para atividade de usuário)
  • Uniforme: Frequência aproximadamente igual ao longo do intervalo (frequentemente sintético ou aleatório)
Padrões Temporais

Para dados de séries temporais, procurar por:

  • Tendência: Movimento sustentado para cima ou para baixo
  • Sazonalidade: Padrões repetitivos (semanal, mensal, trimestral, anual)
  • Efeitos de dia da semana: Diferenças entre dias úteis e fins de semana
  • Efeitos de feriado: Quedas ou picos em torno de feriados conhecidos (feriados brasileiros)
  • Pontos de mudança: Mudanças abruptas no nível ou tendência
  • Anomalias: Pontos de dados individuais que quebram o padrão
Descoberta de Segmentação

Identificar segmentos naturais por:

  • Encontrar colunas categóricas com 3-20 valores distintos
  • Comparar distribuições de métricas entre valores de segmento
  • Procurar segmentos com comportamento significativamente diferente
  • Testar se os segmentos são homogêneos ou contêm sub-segmentos
Exploração de Correlação

Entre colunas numéricas:

  • Calcular matriz de correlação para todos os pares de métricas
  • Sinalizar correlações fortes (|r| > 0,7) para investigação
  • Nota: Correlação não implica causalidade — sinalizar isso explicitamente
  • Verificar relacionamentos não lineares (ex: quadrático, logarítmico)
Documentação de Schema
Template de Documentação de Schema

Ao documentar um dataset para uso da equipe:

## Tabela: [schema.nome_da_tabela]

**Descrição**: [O que esta tabela representa]
**Grain**: [Uma linha por...]
**Chave Primária**: [coluna(s)]
**Contagem de Linhas**: [aproximada, com data]
**Frequência de Atualização**: [tempo real / hora / dia / semana]
**Responsável**: [equipe ou pessoa]

### Colunas-Chave

| Coluna | Tipo | Descrição | Valores de Exemplo | Notas |
|--------|------|-----------|-------------------|-------|
| instancia_id | UUID | Identificador único da instância | "inst_abc123" | FK para instancias.id |
| versao | STRING | Versão do Evolution API | "2.1.4", "2.2.0" | 50+ valores distintos |
| mrr | DECIMAL | Receita mensal recorrente em USD | 29.99, 149.00 | Nulo para contas free |
| criado_em | TIMESTAMP | Quando o registro foi criado | 2024-01-15 14:23:01 | UTC — converter para BRT na exibição |

### Relacionamentos
- Join com `clientes` por `cliente_id`
- Join com `planos` por `plano_id`
- Pai de `instancia_eventos` (1:N por instancia_id)

### Problemas Conhecidos
- [Listar problemas conhecidos de qualidade de dados]
- [Anotar quaisquer armadilhas para analistas]

### Padrões Comuns de Query
- [Casos de uso típicos para esta tabela]
Queries de Exploração de Schema (PostgreSQL)
-- Listar todas as tabelas no schema public
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;

-- Detalhes das colunas (PostgreSQL)
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'minha_tabela'
ORDER BY ordinal_position;

-- Tamanhos das tabelas (PostgreSQL)
SELECT relname,
       pg_size_pretty(pg_total_relation_size(relid)) AS tamanho_total
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

-- Contagens de linhas por tabela
-- Executar por tabela: SELECT COUNT(*) FROM nome_da_tabela

-- Verificar duplicatas em chave primária
SELECT chave_primaria, COUNT(*)
FROM minha_tabela
GROUP BY chave_primaria
HAVING COUNT(*) > 1;

-- Taxas de nulo por coluna (gerar dinamicamente)
SELECT
    COUNT(*) FILTER (WHERE coluna_1 IS NULL) * 100.0 / COUNT(*) AS nulo_pct_col1,
    COUNT(*) FILTER (WHERE coluna_2 IS NULL) * 100.0 / COUNT(*) AS nulo_pct_col2
FROM minha_tabela;
Dicas
  • Para tabelas muito grandes (100M+ linhas), queries de perfilamento usam amostragem por padrão — mencionar se precisar de contagens exatas
  • Se explorando um dataset pela primeira vez, este comando fornece a visão geral antes de escrever queries específicas
  • Os sinalizadores de qualidade são heurísticos — nem todo sinal é um problema real, mas cada um merece uma verificação rápida
  • Sempre verificar os dados no contexto: o que faz sentido para Stripe é diferente do que faz sentido para Licensing
按 Apache-2.0 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。