{"_id":"@designliquido/delegua-dados","_rev":"3-42ecc1757941fdfb2b39f03c46147fde","name":"@designliquido/delegua-dados","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"name":"@designliquido/delegua-dados","version":"0.0.0","keywords":["delegua","dados","analise","pandas","dataframe","series"],"author":{"name":"Design Liquido"},"license":"MIT","_id":"@designliquido/delegua-dados@0.0.0","maintainers":[{"name":"leonelsanches","email":"leonel@designliquido.com.br"}],"homepage":"https://github.com/DesignLiquido/delegua-dados#readme","bugs":{"url":"https://github.com/DesignLiquido/delegua-dados/issues"},"dist":{"shasum":"6e4b044afaed2839ccc1f4c75616fdfbc5ac5ebe","tarball":"https://registry.npmjs.org/@designliquido/delegua-dados/-/delegua-dados-0.0.0.tgz","fileCount":127,"integrity":"sha512-0h+P3SwbiF95BHZHN9Sd0pmoO/xcNIpYC9n6dWLutrDIVYfrDbeOu0DMUrLRgUbIW38onxIS+vE1XCbMuzZXug==","signatures":[{"sig":"MEQCIEr++ZNlE6KGe36F0BcxCuX3+v0r9/vvISQg0on9F+m+AiAnlz+3AncStMXVUXGxrHEp0mIPA2cUeAASFrV2FKnWoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":653678},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4cc9b5da335502eb06cdfd5d821e77ae501734e3","scripts":{"empacotar":"yarn rimraf ./dist && tsc && yarn copyfiles -V ./README.md ./dist && yarn copyfiles -V ./LICENSE ./dist && yarn copyfiles -V ./package.json ./dist","publicar-npm":"npm publish ./dist --access public","testes-unitarios":"jest","testes-unitarios:assistidos":"jest --watch"},"_npmUser":{"name":"leonelsanches","email":"leonel@designliquido.com.br"},"repository":{"url":"git+https://github.com/DesignLiquido/delegua-dados.git","type":"git"},"_npmVersion":"11.6.2","description":"Biblioteca para análise de dados, baseada na biblioteca Pandas do Python, adaptada para o ambiente de Delégua.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@designliquido/delegua-csv":"^0.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^6.1.2","mock-fs":"^5.2.0","ts-jest":"^29.1.1","ts-node":"^10.9.2","copyfiles":"^2.4.1","release-it":"^19.2.4","typescript":"^5.3.3","@jest/types":"^29.5.8","@types/jest":"^29.5.11","@types/node":"^20.10.6","@types/mock-fs":"^4.13.4","@designliquido/delegua":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/delegua-dados_0.0.0_1770491654925_0.5372013754205289","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@designliquido/delegua-dados","version":"0.0.1","description":"Biblioteca para análise de dados, baseada na biblioteca Pandas do Python, adaptada para o ambiente de Delégua.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"empacotar":"yarn rimraf ./dist && tsc && yarn copyfiles -V ./README.md ./dist && yarn copyfiles -V ./LICENSE ./dist && yarn copyfiles -V ./package.json ./dist","publicar-npm":"npm publish ./dist --access public","testes-unitarios":"yarn jest --coverage","testes-unitarios:assistidos":"yarn jest --watch"},"repository":{"type":"git","url":"git+https://github.com/DesignLiquido/delegua-dados.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"keywords":["delegua","dados","analise","pandas","dataframe","series"],"author":{"name":"Design Liquido"},"license":"MIT","devDependencies":{"@designliquido/delegua":"^1.15.4","@jest/types":"^29.5.8","@types/jest":"^29.5.11","@types/mock-fs":"^4.13.4","@types/node":"^20.10.6","copyfiles":"^2.4.1","jest":"^29.7.0","mock-fs":"^5.2.0","release-it":"^19.2.4","rimraf":"^6.1.2","ts-jest":"^29.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"@designliquido/delegua-csv":"^0.0.2"},"gitHead":"4aca6bde7731c55231b9f712993f6008568e81c6","_id":"@designliquido/delegua-dados@0.0.1","bugs":{"url":"https://github.com/DesignLiquido/delegua-dados/issues"},"homepage":"https://github.com/DesignLiquido/delegua-dados#readme","_nodeVersion":"22.20.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-uvablMBhNezD0xoXDBpijOWKTp8ofTV+ewR+fdQC1iBMiA2m1DNw4b2SgHARUjoPskRXymWPzCNq9hV5Q4Mp7A==","shasum":"a35c035cc99de80f3c861bd90c2d5b9e724ebc4a","tarball":"https://registry.npmjs.org/@designliquido/delegua-dados/-/delegua-dados-0.0.1.tgz","fileCount":107,"unpackedSize":654990,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCWr3qRAg7F2v7mj0FLakBZ/XQdYftaSuRZiTxwYMYUJwIgdle5MheNAlCryXuG235KFZzlIZqdlphviNGYnibh+es="}]},"_npmUser":{"name":"leonelsanches","email":"leonel@designliquido.com.br"},"directories":{},"maintainers":[{"name":"leonelsanches","email":"leonel@designliquido.com.br"},{"name":"vitbrandao96","email":"vitorsbsilva@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/delegua-dados_0.0.1_1774643415402_0.5569862208985719"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-07T19:14:14.826Z","modified":"2026-03-27T20:30:15.679Z","0.0.0":"2026-02-07T19:14:15.147Z","0.0.1":"2026-03-27T20:30:15.554Z"},"bugs":{"url":"https://github.com/DesignLiquido/delegua-dados/issues"},"author":{"name":"Design Liquido"},"license":"MIT","homepage":"https://github.com/DesignLiquido/delegua-dados#readme","keywords":["delegua","dados","analise","pandas","dataframe","series"],"repository":{"type":"git","url":"git+https://github.com/DesignLiquido/delegua-dados.git"},"description":"Biblioteca para análise de dados, baseada na biblioteca Pandas do Python, adaptada para o ambiente de Delégua.","maintainers":[{"name":"leonelsanches","email":"leonel@designliquido.com.br"},{"name":"vitbrandao96","email":"vitorsbsilva@gmail.com"}],"readme":"# 📊 delegua-dados\r\n\r\n**Biblioteca de análise de dados para TypeScript/JavaScript, inspirada em Pandas e integrada com o interpretador Delégua.**\r\n\r\n![Status](https://img.shields.io/badge/Status-Fase%206%20Completa-brightgreen)\r\n![Tests](https://img.shields.io/badge/Testes-380%2F380%20Passando-brightgreen)\r\n![Browser Compatible](https://img.shields.io/badge/Browser%20Compatible-Yes-blue)\r\n![Zero Dependencies](https://img.shields.io/badge/Dependencies-Zero-blue)\r\n![License](https://img.shields.io/badge/License-MIT-blue)\r\n\r\n---\r\n\r\n## 📋 Visão Geral\r\n\r\n`delegua-dados` é uma biblioteca TypeScript que implementa as funcionalidades principais de **Pandas** para análise de dados no interpretador **Delégua**. \r\n\r\n### ✨ Características Principais\r\n\r\n- ✅ **100% TypeScript** - Type-safe, sem qualquer código JavaScript\r\n- ✅ **Zero Dependências** - Apenas TypeScript nativo\r\n- ✅ **Browser Compatible** - Funciona em Node.js, navegadores, web workers, Electron\r\n- ✅ **Platform-Agnostic** - APIs agnósticas à plataforma para máxima compatibilidade\r\n- ✅ **Nomes em Português** - API totalmente em português\r\n- ✅ **380 Testes** - Cobertura completa com Jest\r\n- ✅ **6 Fases Completas** - Implementação full de todas as funcionalidades\r\n\r\n## 🚀 Início Rápido\r\n\r\n### Instalação\r\n```bash\r\nnpm install @designliquido/delegua-dados\r\n```\r\n\r\n### Exemplo Básico\r\n```typescript\r\nimport { RecorteDados, analisarCSV } from '@designliquido/delegua-dados';\r\n\r\n// Criar tabela\r\nconst rd = new RecorteDados({\r\n    nome: ['Alice', 'Bob', 'Charlie'],\r\n    idade: [25, 30, 35],\r\n    salario: [3000, 3500, 4000]\r\n});\r\n\r\n// Visualizar\r\nconsole.log(rd.cabeca());           // Primeiras 5 linhas\r\nconsole.log(rd.descrever());        // Estatísticas\r\n\r\n// Selecionar coluna\r\nconst nomes = rd.selecionarColuna('nome');\r\n\r\n// Filtrar\r\nconst maiores30 = rd.filtrar([false, true, true]);\r\n\r\n// Agrupar\r\nconst porDept = rd.agruparPor('departamento').soma();\r\n\r\n// Análise agnóstica à plataforma\r\nconst csv = `nome,idade,salario\r\nAlice,25,3000\r\nBob,30,3500`;\r\nconst rd2 = analisarCSV(csv);\r\n```\r\n\r\n---\r\n\r\n## 📚 Estrutura de Dados Principais\r\n\r\n### Classes Fundamentais\r\n\r\n| Classe | Descrição | Uso |\r\n|--------|-----------|-----|\r\n| **Indice** | Rótulos para linhas/colunas | Indexação de dados |\r\n| **Serie** | Array 1D com rótulos | Colunas de dados |\r\n| **RecorteDados** | Tabela 2D (também chamado de Data Frame) | Dados estruturados |\r\n| **IndiceTemporal** | Índice com datas/tempos | Séries temporais |\r\n| **Reamostrador** | Reamostragem de dados | Upsampling/downsampling |\r\n\r\n### Exemplos de Criação\r\n\r\n```typescript\r\n// Serie\r\nconst s = new Serie([1, 2, 3, 4, 5], {\r\n    indice: ['a', 'b', 'c', 'd', 'e'],\r\n    nome: 'Vendas'\r\n});\r\n\r\n// RecorteDados - Objeto com colunas\r\nconst rd1 = new RecorteDados({\r\n    'nome': ['Alice', 'Bob', 'Charlie'],\r\n    'idade': [25, 30, 35],\r\n    'salario': [3000, 3500, 4000]\r\n});\r\n\r\n// RecorteDados - Array de objetos\r\nconst rd2 = new RecorteDados([\r\n    { nome: 'Alice', idade: 25, salario: 3000 },\r\n    { nome: 'Bob', idade: 30, salario: 3500 }\r\n]);\r\n\r\n// RecorteDados - Cópia\r\nconst rd3 = new RecorteDados(rd1);\r\n```\r\n\r\n---\r\n\r\n## 🎯 Operações Principais\r\n\r\n### Visualização\r\n```typescript\r\nrd.cabeca(5);              // Primeiras N linhas\r\nrd.cauda(3);               // Últimas N linhas\r\nrd.paraTexto();            // String formatada\r\nrd.paraVetorObjetos();     // Array de objetos\r\nrd.info();                 // Informações de colunas\r\nrd.descrever();            // Estatísticas resumidas\r\n```\r\n\r\n### Seleção de Dados\r\n```typescript\r\n// Colunas\r\nrd.selecionarColuna('nome');              // Retorna Serie\r\nrd.selecionarColunas(['id', 'nome']);     // Retorna RecorteDados\r\n\r\n// Por posição (pos) - em desenvolvimento\r\nrd.pos[0];                 // Primeira linha\r\nrd.pos[0, 1];              // Célula específica\r\n\r\n// Por rótulo (rot) - em desenvolvimento\r\nrd.rot[0];                 // Linha com índice 0\r\n```\r\n\r\n### Modificação\r\n```typescript\r\n// Adicionar coluna\r\nrd.adicionarColuna('bônus', [300, 350, 400]);\r\n\r\n// Remover colunas\r\nrd.remover(['coluna_inutil']);\r\n\r\n// Renomear\r\nrd.renomear({ 'velho_nome': 'novo_nome' });\r\n\r\n// Ordenar\r\nrd.ordenarPor('idade');\r\nrd.ordenarPor('salario', false);  // Decrescente\r\n```\r\n\r\n### Limpeza de Dados\r\n```typescript\r\n// Valores nulos\r\nrd.temNulo();              // Detecta nulos\r\nrd.removerNulo();          // Remove linhas com nulos\r\nrd.preencherNulo(0);       // Preenche nulos\r\n\r\n// Duplicatas\r\nrd.removerDuplicatas();    // Remove linhas idênticas\r\n```\r\n\r\n### Transformações\r\n```typescript\r\n// Filtro\r\nconst mascara = [true, false, true];\r\nrd.filtrar(mascara);\r\n\r\n// Aplicar função\r\nrd.aplicar((coluna) => {\r\n    return new Serie(coluna.dados.map(x => x * 2));\r\n});\r\n\r\n// Operações vetorizadas\r\nconst serie = rd.selecionarColuna('salario');\r\nconst aumentado = serie.aplicar(x => x * 1.1);\r\n```\r\n\r\n---\r\n\r\n## 👥 GroupBy: Agrupamento e Agregação\r\n\r\n```typescript\r\n// Agrupamento simples\r\nconst grupos = rd.agruparPor('departamento');\r\n\r\n// Múltiplas colunas\r\nconst grupos = rd.agruparPor(['departamento', 'turno']);\r\n\r\n// Agregações\r\ngrupos.soma();             // Sum\r\ngrupos.media();            // Mean\r\ngrupos.mediana();          // Median\r\ngrupos.desvio();           // Std Dev\r\ngrupos.minimo();           // Min\r\ngrupos.maximo();           // Max\r\ngrupos.contar();           // Count\r\n\r\n// Agregações múltiplas\r\ngrupos.agregar({\r\n    'salario': ['soma', 'media', 'desvio'],\r\n    'idade': ['minimo', 'maximo']\r\n});\r\n```\r\n\r\n---\r\n\r\n## 🔄 I/O: Entrada e Saída\r\n\r\n### CSV - Platform-Agnostic (Funciona em qualquer lugar)\r\n\r\n```typescript\r\nimport { analisarCSV, paraCSV } from '@designliquido/delegua-dados';\r\n\r\n// Análise de string CSV (browser, Node.js, web workers, etc.)\r\nconst csv = `produto,vendas,lucro\r\nA,1000,200\r\nB,800,150\r\nC,1500,300`;\r\n\r\nconst rd = analisarCSV(csv);\r\nconst stats = rd.descrever();\r\n\r\n// Conversão de volta para CSV\r\nconst csvSaida = paraCSV(rd);\r\nconst csvComIndice = paraCSV(rd, { indice: true });\r\n```\r\n\r\n### CSV - Node.js File-Based (Node.js apenas)\r\n\r\n```typescript\r\nimport { lerCSV, escreverCSV } from '@designliquido/delegua-dados';\r\n\r\n// Ler arquivo\r\nconst rd = lerCSV('dados.csv', {\r\n    delimitador: ',',\r\n    temCabecalho: true,\r\n    colunas: ['id', 'nome', 'idade']\r\n});\r\n\r\n// Escrever arquivo\r\nescreverCSV(rd, 'saida.csv', {\r\n    delimitador: ';',\r\n    indice: true\r\n});\r\n```\r\n\r\n### CSV - Custom Filesystem (Qualquer plataforma com implementação custom)\r\n\r\n```typescript\r\nimport { lerCSVComSistema, escreverCSVComSistema } from '@designliquido/delegua-dados';\r\n\r\n// Implementação customizada (ex: localStorage, URL fetch, etc.)\r\nconst sistemaArquivos = {\r\n    async lerArquivo(chave) {\r\n        return localStorage.getItem(chave) || '';\r\n    },\r\n    async escreverArquivo(chave, conteudo) {\r\n        localStorage.setItem(chave, conteudo);\r\n    },\r\n    async existeArquivo(chave) {\r\n        return localStorage.getItem(chave) !== null;\r\n    }\r\n};\r\n\r\n// Usar com sistema customizado\r\nconst rd = await lerCSVComSistema('dados', sistemaArquivos);\r\nawait escreverCSVComSistema(rd, 'resultado', sistemaArquivos);\r\n```\r\n\r\n---\r\n\r\n## 📈 Estatísticas\r\n\r\n```typescript\r\nconst rd = lerCSV('dados.csv');\r\n\r\n// Valores únicos\r\nrd.selecionarColuna('categoria').unico();\r\n\r\n// Contagem de valores\r\nrd.selecionarColuna('status').contagemValores();\r\n\r\n// Operações estatísticas\r\nrd.descrever();        // Resumo estatístico\r\nrd.media();            // Média de colunas numéricas\r\nrd.soma();             // Soma\r\nrd.desvio();           // Desvio padrão\r\nrd.variancia();        // Variância\r\nrd.minimo();           // Valor mínimo\r\nrd.maximo();           // Valor máximo\r\nrd.mediana();          // Mediana\r\n```\r\n\r\n---\r\n\r\n## ⏰ Séries Temporais\r\n\r\n```typescript\r\nimport { \r\n    IndiceTemporal, \r\n    criarIntervaloDatas, \r\n    Resampler \r\n} from '@designliquido/delegua-dados';\r\n\r\n// Criar índice temporal\r\nconst datas = criarIntervaloDatas('2024-01-01', '2024-12-31', 'D');\r\nconst ts = new Serie(valores, { indice: datas });\r\n\r\n// Parsing de datas\r\nconst data = compreenderData('2024-01-15');\r\nconst formatado = formatarData(data, 'yyyy-MM-dd');\r\n\r\n// Diferenças temporais\r\nconst dias = diferencaDias(data1, data2);\r\nconst horas = diferencaHoras(data1, data2);\r\n\r\n// Reamostragem\r\nconst reamostrador = ts.reamostrar('M');  // Para mensal\r\nconst media_mensal = reamostrador.media();\r\nconst soma_mensal = reamostrador.soma();\r\n```\r\n\r\n---\r\n\r\n## 🔗 Merge, Concat, Join\r\n\r\n```typescript\r\n// Concatenação vertical (append)\r\nconst combinado = concatenar([rd1, rd2]);\r\n\r\n// Concatenação horizontal\r\nconst largo = concatenar([rd1, rd2], { axis: 1 });\r\n\r\n// Merge (SQL-like join)\r\nconst resultado = mesclar(rd1, rd2, {\r\n    on: 'id',\r\n    tipo: 'inner'  // ou 'left', 'right', 'outer'\r\n});\r\n\r\n// Join por índice\r\nconst juntado = rd1.juntar(rd2);\r\n```\r\n\r\n---\r\n\r\n## 🔀 Reshape: Transformação de Forma\r\n\r\n```typescript\r\n// Transpor\r\nconst transposto = rd.transpor();\r\n\r\n// Pivot (wide para long)\r\nconst dinamizado = rd.repivotar({\r\n    indice: 'data',\r\n    colunas: 'categoria',\r\n    valores: 'valor'\r\n});\r\n\r\n// Melt (wide para long)\r\nconst alongado = derreter(rd, {\r\n    variaveisIds: ['id', 'nome'],\r\n    variaveisValores: ['jan', 'fev', 'mar']\r\n});\r\n\r\n// Stack/Unstack\r\nconst empilhado = rd.empilhar();\r\nconst desempilhado = rd.desempilhar();\r\n```\r\n\r\n---\r\n\r\n## 💡 Exemplos Práticos\r\n\r\n### Exemplo 1: Análise de Vendas\r\n```typescript\r\nimport { lerCSV } from '@designliquido/delegua-dados';\r\n\r\n// 1. Carregar\r\nconst vendas = lerCSV('vendas.csv');\r\n\r\n// 2. Limpeza\r\nconst limpo = vendas\r\n    .removerNulo()\r\n    .removerDuplicatas();\r\n\r\n// 3. Análise\r\nconst porRegiao = limpo\r\n    .agruparPor('regiao')\r\n    .agregar({\r\n        'valor': ['soma', 'media'],\r\n        'quantidade': ['sum'],\r\n        'id': 'count'\r\n    });\r\n\r\n// 4. Top 5\r\nconst top5 = porRegiao\r\n    .ordenarPor('valor_soma', false)\r\n    .cabeca(5);\r\n\r\n// 5. Salvar\r\nescreverCSV(top5, 'resultado.csv');\r\n```\r\n\r\n### Exemplo 2: Processamento com CSV Agnóstico\r\n```typescript\r\nimport { analisarCSV, paraCSV } from '@designliquido/delegua-dados';\r\n\r\n// Dados CSV como string (funciona em qualquer lugar)\r\nconst csv = `produto,quantidade,preco\r\nMaçã,10,2.5\r\nBanana,15,1.2\r\nLaranja,8,3.0`;\r\n\r\n// Processar\r\nconst rd = analisarCSV(csv);\r\nconst rd2 = rd.adicionarColuna('total', \r\n    rd.selecionarColuna('quantidade').dados.map((q, i) => \r\n        q * rd.selecionarColuna('preco').dados[i]\r\n    )\r\n);\r\n\r\n// Converter de volta\r\nconst resultado = paraCSV(rd2);\r\nconsole.log(resultado);  // String CSV\r\n```\r\n\r\n### Exemplo 3: Séries Temporais\r\n```typescript\r\nimport { criarIntervaloDatas } from '@designliquido/delegua-dados';\r\n\r\n// Gerar datas\r\nconst datas = criarIntervaloDatas('2024-01-01', '2024-12-31', 'D');\r\nconst temperaturas = [15.5, 16.2, 14.8, 17.1, 18.3];\r\n\r\n// Criar série temporal\r\nconst ts = new Serie(temperaturas, { indice: datas });\r\n\r\n// Reamostragem para média diária\r\nconst media_diaria = ts.reamostrar('D').media();\r\n```\r\n\r\n---\r\n\r\n## 🌐 Compatibilidade com Browser\r\n\r\n`delegua-dados` funciona nativamente em qualquer ambiente JavaScript. Use as funções agnósticas à plataforma:\r\n\r\n- ✅ **Node.js** - Funciona completamente\r\n- ✅ **Navegador** - Funciona (sem `fs`)\r\n- ✅ **VSCode Web Extensions** - Funciona\r\n- ✅ **Web Workers** - Funciona\r\n- ✅ **Electron** - Funciona\r\n\r\nVeja [BROWSER_COMPATIBILITY.md](BROWSER_COMPATIBILITY.md) para detalhes completos.\r\n\r\n---\r\n\r\n## 🧪 Testes\r\n\r\n```bash\r\n# Executar todos os testes\r\nnpm run testes-unitarios\r\n\r\n# Modo watch (desenvolvimento)\r\nnpm run testes-unitarios:assistidos\r\n\r\n# Cobertura\r\nnpm run testes-unitarios -- --coverage\r\n```\r\n\r\n**Status Atual:**\r\n- ✅ 380 testes passando (100%)\r\n- ✅ 15/15 test suites passando\r\n- ✅ Todas as funcionalidades cobertas\r\n\r\n---\r\n\r\n## 📦 Estrutura do Projeto\r\n\r\n```\r\ndelegua-dados/\r\n├── fontes/                          # Código principal\r\n│   ├── index.ts                     # Classe Indice\r\n│   ├── serie.ts                     # Classe Serie\r\n│   ├── recorte-dados.ts             # Classe RecorteDados\r\n│   ├── agrupamentos.ts              # GroupBy\r\n│   ├── transformacoes/              # Reshape, Merge, etc.\r\n│   ├── operacoes/                   # Operações vetorizadas\r\n│   ├── entrada-saida/               # I/O (CSV, JSON, Excel)\r\n│   ├── indice-temporal.ts           # IndiceTemporal\r\n│   ├── reamostrador.ts              # Reamostragem\r\n│   └── index.ts                     # Exports principais\r\n├── testes/                          # 15 test suites, 380 testes\r\n├── delegua-modulo.ts                # Exportação para Delégua\r\n├── package.json\r\n├── tsconfig.json\r\n└── jest.config.ts\r\n```\r\n\r\n---\r\n\r\n## 🎯 Fases Implementadas\r\n\r\n### ✅ Fase 1: Core Data Structures\r\n- Classes Indice, Serie, RecorteDados\r\n- Seleção básica (rot, pos)\r\n- CSV I/O\r\n- Operações básicas\r\n\r\n### ✅ Fase 2: Transformações\r\n- Reshape (pivot, melt, stack, unstack)\r\n- Merge/Concat/Join\r\n- Operações vetorizadas\r\n- Data cleaning (dropna, fillna)\r\n\r\n### ✅ Fase 3: Análise\r\n- GroupBy com agregações\r\n- Estatísticas (mean, sum, std, var)\r\n- Rolling windows\r\n- Correlação/covariância\r\n\r\n### ✅ Fase 4: I/O Avançado\r\n- JSON I/O\r\n- Excel I/O\r\n- SQL I/O\r\n- Otimizações\r\n\r\n### ✅ Fase 5: Séries Temporais\r\n- IndiceTemporal (DatetimeIndex)\r\n- Reamostragem (upsampling/downsampling)\r\n- Funções de data/hora\r\n- Suporte a timezones\r\n\r\n### ✅ Fase 6: Integração Delégua\r\n- delegua-modulo.ts completo\r\n- Metadata de tipos\r\n- Documentação em português\r\n- API pronta para uso\r\n\r\n---\r\n\r\n## 💻 Desenvolvimento\r\n\r\n### Requisitos\r\n- Node.js 18+\r\n- TypeScript 5.3+\r\n- npm 9+ ou yarn\r\n\r\n### Setup\r\n```bash\r\n# Instalar dependências\r\nnpm install\r\n\r\n# Verificar TypeScript\r\nnpm run testes-unitarios\r\n\r\n# Build\r\nnpm run build\r\n```\r\n\r\n### Estrutura de Código\r\n- 100% TypeScript (strict mode)\r\n- JSDoc para todas as APIs públicas\r\n- Nomes em português\r\n- Sem dependências externas\r\n\r\n---\r\n\r\n## 🏗️ Arquitetura\r\n\r\n### Padrão de Três Camadas para I/O\r\n\r\n```\r\n┌─────────────────────────────────────────┐\r\n│  Aplicação (Browser/Node/Custom)        │\r\n├─────────────────────────────────────────┤\r\n│  Dependency Injection (SistemaArquivos) │\r\n├─────────────────────────────────────────┤\r\n│  Platform-Agnostic (analisarCSV/paraCSV)│\r\n├─────────────────────────────────────────┤\r\n│  Platform Adapters (lerCSV/escreverCSV) │\r\n└─────────────────────────────────────────┘\r\n```\r\n\r\nIsso garante compatibilidade com:\r\n- Node.js (com `fs`)\r\n- Navegadores (sem `fs`)\r\n- Implementações customizadas (dependency injection)\r\n\r\n---\r\n\r\n## 📊 Comparação com Pandas\r\n\r\n| Funcionalidade | Pandas | delegua-dados |\r\n|--|--|--|\r\n| DataFrames | ✅ | ✅ |\r\n| Series | ✅ | ✅ |\r\n| Seleção (loc/iloc) | ✅ | ✅ (rot/pos) |\r\n| GroupBy | ✅ | ✅ |\r\n| Merge/Join | ✅ | ✅ |\r\n| Reshape | ✅ | ✅ |\r\n| CSV I/O | ✅ | ✅ |\r\n| JSON I/O | ✅ | ✅ |\r\n| Séries Temporais | ✅ | ✅ |\r\n| Browser Compat | ❌ | ✅ |\r\n\r\n---\r\n\r\n## 🤝 Contribuindo\r\n\r\nContribuições são bem-vindas! Veja [CONTRIBUTING.MD] para mais informações.\r\n\r\n---\r\n\r\n## 📄 Licença\r\n\r\nMIT © 2026 Design Líquido\r\n\r\n---\r\n\r\n**delegua-dados** • Pandas-like data analysis for TypeScript and Delégua 🚀\r\n\r\nDesenvolvido para o interpretador [Delégua](https://github.com/DesignLiquido/delegua)\r\n","readmeFilename":"README.md"}