Skip to main content

DataFrameIt

PyPI version Python 3.10+ License: MIT

Enriqueça DataFrames com LLMs de forma simples e estruturada.

DataFrameIt processa textos em DataFrames usando Modelos de Linguagem (LLMs) e extrai informações estruturadas definidas por modelos Pydantic.

Documentação Completa | Referência para LLMs

Instalação

pip install dataframeit[google]  # Google Gemini (recomendado)
pip install dataframeit[openai]  # OpenAI
pip install dataframeit[anthropic]  # Anthropic Claude

Configure sua API key:

export GOOGLE_API_KEY="sua-chave"  # ou OPENAI_API_KEY, ANTHROPIC_API_KEY

Exemplo Rápido

from pydantic import BaseModel
from typing import Literal
import pandas as pd
from dataframeit import dataframeit

# 1. Defina o que extrair
class Sentimento(BaseModel):
    sentimento: Literal['positivo', 'negativo', 'neutro']
    confianca: Literal['alta', 'media', 'baixa']

# 2. Seus dados
df = pd.DataFrame({
    'texto': [
        'Produto excelente! Superou expectativas.',
        'Péssimo atendimento, nunca mais compro.',
        'Entrega ok, produto mediano.'
    ]
})

# 3. Processe!
resultado = dataframeit(df, Sentimento, "Analise o sentimento do texto.")
print(resultado)

Saída:

texto sentimento confianca
Produto excelente! ... positivo alta
Péssimo atendimento... negativo alta
Entrega ok... neutro media

Funcionalidades

  • Múltiplos providers: Google Gemini, OpenAI, Anthropic, Cohere, Mistral via LangChain
  • Múltiplos tipos de entrada: DataFrame, Series, list, dict
  • Saída estruturada: Validação automática com Pydantic
  • Resiliência: Retry automático com backoff exponencial
  • Performance: Processamento paralelo, rate limiting configurável
  • Busca web: Integração com Tavily para enriquecer dados
  • Tracking: Monitoramento de tokens e métricas de throughput
  • Configuração per-field: Prompts e parâmetros de busca personalizados por campo (v0.5.2+)

Configuração Per-Field (Novo em v0.5.2)

Configure prompts e parâmetros de busca específicos para cada campo usando json_schema_extra:

from pydantic import BaseModel, Field

class MedicamentoInfo(BaseModel):
    # Campo com prompt padrão
    principio_ativo: str = Field(description="Princípio ativo do medicamento")

    # Campo com prompt customizado (substitui o prompt base)
    doenca_rara: str = Field(
        description="Classificação de doença rara",
        json_schema_extra={
            "prompt": "Busque em Orphanet (orpha.net). Analise: {texto}"
        }
    )

    # Campo com prompt adicional (append ao prompt base)
    avaliacao_conitec: str = Field(
        description="Avaliação da CONITEC",
        json_schema_extra={
            "prompt_append": "Busque APENAS no site da CONITEC (gov.br/conitec)."
        }
    )

    # Campo com parâmetros de busca customizados
    estudos_clinicos: str = Field(
        description="Estudos clínicos relevantes",
        json_schema_extra={
            "prompt_append": "Busque estudos clínicos recentes.",
            "search_depth": "advanced",
            "max_results": 10
        }
    )

# Requer search_per_field=True
resultado = dataframeit(
    df,
    MedicamentoInfo,
    "Analise o medicamento: {texto}",
    use_search=True,
    search_per_field=True,
)

Opções disponíveis em json_schema_extra:

Opção Descrição
prompt ou prompt_replace Substitui completamente o prompt base
prompt_append Adiciona texto ao prompt base
search_depth "basic" ou "advanced" (override per-field)
max_results Número de resultados de busca (1-20)

Documentação

Exemplos

Veja a pasta example/ para notebooks Jupyter com casos de uso completos.

Licença

MIT

Release files for dataframeit 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dataframeit 0.6.0
File Size Uploaded
dataframeit-0.6.0.tar.gz 42.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dataframeit 0.6.0
File Interpreter ABI Platform
dataframeit-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 89.9 kB

Release files / dataframeit-0.6.0.tar.gz

Download URL dataframeit-0.6.0.tar.gz
Size 42.0 kB
Tags Source
SHA-256 checksum
How to use checksums
902a1e524849c30d0568345d353eb7a707805b8856ab0c7f8c05909f15057bc3
BLAKE2b-256 checksum
How to use checksums
de81777e748ced32c5b74a96a4e899c2853876d0e5540888b4b592b2176112a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / dataframeit-0.6.0-py3-none-any.whl

Download URL dataframeit-0.6.0-py3-none-any.whl
Size 47.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3d06b5c2e02ceb0ed74053e9c5de97cf5cabfc2dca18da95898835039e9a0951
BLAKE2b-256 checksum
How to use checksums
990045ee9306853c70b0e2f4bd42a250731251417a7cdd09522da2075fa87736
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page