Este projeto simula um cenário de análise agronômica orientada por dados, no qual um pipeline estruturado é utilizado para transformar análises de solo em estimativas operacionais de demanda de insumos.
O foco do projeto está na quantificação e estruturação da demanda de fertilizantes e corretivos, permitindo responder de forma objetiva:
Quanto de insumo deve ser adquirido por talhão e por propriedade?
A modelagem é realizada em Python, com base em cálculos determinísticos implementados na biblioteca Fertpy, integrados em um pipeline modular e reproduzível.
- 🌱 Aplicação prática de agronomia + engenharia de dados
- 🧠 Motor de decisão baseado em estratégias de formulação de adubação
- 🔄 Fallback estruturado entre fonte única e mistura de fertilizantes
- 📊 Pipeline completo, da ingestão de dados à geração de outputs analíticos
- 🧮 Cálculo determinístico de demanda nutricional e calagem
- 📈 Geração automática de visualizações e base para BI (Power BI)
- 🧱 Arquitetura modular, com separação clara de responsabilidades
- 🔁 Pipeline reproduzível e escalável
Demonstrar a integração entre:
- Modelagem agronômica estruturada (via Fertpy)
- Processamento de dados com Python
- Estruturação de pipelines reprodutíveis
- Geração de outputs operacionais para suporte à decisão
O projeto não tem como objetivo fornecer recomendações agronômicas, mas sim:
estruturar e quantificar cenários de demanda de insumos com base em dados de solo.
A análise de fertilidade do solo frequentemente depende de:
- cálculos manuais
- planilhas não padronizadas
- processos pouco rastreáveis
Este projeto demonstra como um pipeline estruturado pode:
- padronizar cálculos técnicos
- tornar decisões rastreáveis
- gerar saídas consistentes e reutilizáveis
- servir como base para ferramentas analíticas (BI)
Um produtor rural possui três propriedades:
- Fazenda A
- Fazenda B (16 km da Fazenda A)
- Fazenda C (72 km das Fazendas A/B)
Cada propriedade é dividida em múltiplos talhões, cada um com uma análise de solo.
O pipeline é utilizado para:
- Calcular a necessidade de calagem
- Estimar a demanda de nutrientes (N, P₂O₅, K₂O) para milho
- Determinar o volume total de fertilizantes e calcário
- Consolidar resultados por talhão e propriedade
- Gerar uma base estruturada para análise e visualização
O foco não é apenas calcular valores, mas:
transformar dados de solo em uma base operacional para planejamento de insumos.
O dimensionamento dos insumos é realizado por meio de um processo determinístico baseado em avaliação de alternativas viáveis para atendimento da demanda nutricional e correção do solo.
A lógica implementada no pipeline é dividida em dois componentes:
- adubação (maior complexidade decisória)
- calagem (decisão direta)
Para cada talhão, é estimada a demanda de macronutrientes primários:
- Nitrogênio (N)
- Fósforo (P₂O₅)
- Potássio (K₂O)
O cálculo considera:
- classe de resposta da cultura
- produtividade esperada
- teores de nutrientes no solo
O resultado é expresso em valores absolutos e na forma de proporção N:P₂O₅:K₂O.
O pipeline verifica se existe algum fertilizante capaz de atender simultaneamente à demanda nutricional.
Critério:
- tolerância de até +5% de excedente
Se viável:
- a fonte é considerada candidata
Se inviável:
- a estratégia é descartada
- um diagnóstico técnico é gerado contendo:
- proporção da demanda
- proporção das fontes disponíveis
- incompatibilidades
- sugestões de ajuste
Na ausência de fonte única viável, o pipeline calcula combinações de fertilizantes.
A formulação considera:
- composição dos insumos
- balanço nutricional
- viabilidade prática
Entre as alternativas viáveis, é selecionada a melhor com base em:
- custo total
- adequação nutricional
Para cada talhão, é estimada a necessidade de correção da acidez com base em:
- saturação por bases atual (V%)
- capacidade de troca catiônica (CTC)
O resultado é expresso como dose de calcário (t/ha).
Diferente da adubação, não há formulação de mistura.
Cada fonte disponível é avaliada individualmente com base em:
- PRNT (Poder Relativo de Neutralização Total)
- custo por tonelada
- custo efetivo por unidade de correção
A escolha da fonte é feita diretamente com base no melhor desempenho técnico-econômico:
- maior eficiência (PRNT)
- menor custo ajustado
Não há necessidade de:
- combinação de fontes
- fallback entre estratégias
O processo descrito representa um modelo determinístico de cálculo e avaliação de alternativas.
Não se trata de recomendação agronômica formal.
A decisão final deve ser realizada por profissional habilitado.
- Calcula demanda nutricional
- Tenta fonte única
- Se falhar → gera diagnóstico
- Calcula mistura
- Seleciona melhor alternativa
- Calcula necessidade de calagem
- Avalia fontes disponíveis
- Seleciona melhor fonte (PRNT + custo)
git clone https://github.com/seu-usuario/fertilidade-do-solo.git
cd fertilidade-do-solopython -m venv venv
# Linux / macOS:
source venv/bin/activate
# Windows:
venv\Scripts\activateRecomenda-se instalar o projeto em modo editável:
pip install -e .Para ambiente de desenvolvimento (incluindo Jupyter e ferramentas auxiliares):
pip install -e .[dev]python main.py --input data/raw/dataset_fazendas.xlsx --insumos data/raw/lista_de_fornecedores.xlsx --output data/processedO pipeline gera automaticamente:
data/processed/
├── resultado.xlsx
└── graficos/
resultado.xlsx
info_gerais → visão consolidada por talhão doses → detalhamento por produto e aplicação
graficos/
visualizações de fertilidade demanda de insumos custos por propriedade e talhão
O projeto foi estruturado como um pipeline modular orientado a domínio, separando claramente:
- lógica agronômica
- infraestrutura de dados
- análise e visualização
src/
│
├── app/
│ └── adubacao_e_calagem/
│ └── pipeline.py # orquestração do fluxo principal
│
├── core/
│ ├── adubacao/
│ │ ├── demanda.py # cálculo de N, P2O5, K2O
│ │ ├── estrategia.py # definição das estratégias
│ │ ├── formulacao.py # cálculo de fontes/misturas
│ │ ├── decisao.py # seleção da melhor alternativa
│ │ └── custo.py # cálculo de custos
│ │
│ ├── calagem/
│ │ ├── demanda.py # necessidade de calagem
│ │ └── formulacao.py # escolha da fonte (PRNT + custo)
│ │
│ └── custo/
│ └── custo.py # consolidação de custos
│
├── infra/
│ ├── loaders/
│ │ └── excel_loader.py # leitura de dados
│ │
│ ├── parsing/
│ │ └── insumos_parser.py # padronização de insumos
│
├── analytics/
│ ├── metrics.py # métricas derivadas
│ ├── statistics.py # agregações
│ └── visualization.py # geração de gráficos
│
├── utils/
│ └── formatters.py # formatação de saída
│
└── config.py # parâmetros globais (cores, regras)
O sistema segue um fluxo estruturado, combinando cálculo agronômico com lógica de decisão:
Entrada de dados (solo + insumos)
↓
Carregamento e padronização
↓
Cálculo da demanda nutricional
↓
Avaliação de estratégias de adubação
├── fonte única
└── mistura (fallback)
↓
Seleção da melhor alternativa
↓
Cálculo da calagem (PRNT + custo)
↓
Consolidação de custos
↓
Geração de outputs estruturados
├── tabelas (Excel)
└── gráficos
O pipeline foi projetado para:
- ser reprodutível
- permitir expansão incremental (novos nutrientes, culturas, estratégias)
- servir como base para ferramentas analíticas (ex: Power BI)
A versão atual do projeto (v0.1.0) é estruturada como um pipeline determinístico focado em responder uma pergunta operacional:
Qual é a quantidade de insumos necessária por talhão e por propriedade?
A abordagem prioriza cálculo estruturado e geração de outputs utilizáveis, ao invés de uma análise exploratória aprofundada.
Os dados de entrada são compostos por:
- análises de solo por talhão
- lista de fornecedores e insumos disponíveis
Nesta etapa são realizados:
- carregamento dos dados
- padronização de estruturas
- preparação dos insumos para uso no pipeline
A demanda de nutrientes é calculada utilizando a biblioteca Fertpy, com base em:
- produtividade esperada
- classe de resposta da cultura
- atributos químicos do solo
São estimados:
- Nitrogênio (N)
- Fósforo (P₂O₅)
- Potássio (K₂O)
Além disso, é calculada:
- necessidade de calagem com base em V% e CTC
O pipeline implementa uma lógica de decisão baseada em avaliação de alternativas:
- tentativa de atendimento via fonte única
- fallback para mistura de fertilizantes, quando necessário
A escolha considera:
- viabilidade nutricional
- custo total
Quando nenhuma fonte única atende à demanda, o sistema gera um diagnóstico técnico explicando a inviabilidade.
A calagem é tratada como um problema de seleção direta.
Cada fonte é avaliada com base em:
- PRNT (eficiência agronômica)
- custo
A escolha é feita selecionando a fonte com melhor relação entre eficiência e custo, sem necessidade de combinação entre insumos.
Os resultados são estruturados em dois níveis:
-
visão consolidada por talhão
- demanda
- fontes selecionadas
- custos
-
visão detalhada por produto
- fertilizante
- fornecedor
- fase de aplicação
- quantidade total
Essa estrutura permite uso direto em análises e ferramentas de BI.
O pipeline gera automaticamente:
- gráficos de distribuição de fertilidade (ex: V%)
- demanda de insumos por propriedade
- demanda por talhão
- custos de adubação e calagem
Os resultados são exportados em:
- arquivos Excel estruturados
- conjunto de gráficos para análise
Nesta versão, a análise exploratória é intencionalmente simplificada, sendo utilizada apenas para:
- validação visual dos dados
- leitura geral da fertilidade (ex: boxplot de V%)
A expansão da EDA está prevista para versões futuras do projeto.
O pipeline utiliza dois conjuntos principais de dados:
- análise de solo por talhão
- base de insumos (fornecedores, fertilizantes e corretivos)
Cada linha representa um talhão agrícola.
| propriedade | talhao | area_ha | v_atual | ctc | classe_resp_N | p | k | produtividade_esperada |
-
propriedade→ identificação da fazenda -
talhao→ unidade de manejo dentro da propriedade -
area_ha→ área do talhão (hectares) -
v_atual→ saturação por bases (%) -
ctc→ capacidade de troca catiônica -
classe_resp_N→ classe de resposta ao nitrogênio (base para cálculo de demanda) -
p→ fósforo disponível no solo -
k→ potássio trocável -
produtividade_esperada→ meta produtiva utilizada no cálculo da demanda nutricional
O arquivo de insumos é estruturado em três abas:
| fornecedor | perfil |
fornecedor→ nome do fornecedorperfil→ classificação ou tipo do fornecedor
| fornecedor | produto | tipo | n | p2o5 | k2o | preco | frete_a | frete_b | frete_c | custo_aplicacao |
-
produto→ nome comercial do fertilizante -
tipo→ classificação (simples, formulado, etc.) -
n,p2o5,k2o→ teores de nutrientes (%) -
preco→ preço por tonelada -
frete_a,frete_b,frete_c→ custo de frete por propriedade -
custo_aplicacao→ custo operacional de aplicação
Esses dados são utilizados para:
- cálculo de formulações
- avaliação de viabilidade nutricional
- seleção de estratégias de adubação
| fornecedor | produto | prnt | preco | frete_a | frete_b | frete_c | custo_aplicacao |
-
produto→ fonte de calcário -
prnt→ Poder Relativo de Neutralização Total -
preco→ preço por tonelada -
frete_a,frete_b,frete_c→ custo de frete por propriedade -
custo_aplicacao→ custo operacional de aplicação
Esses dados são utilizados para:
- cálculo da necessidade de calagem
- seleção da fonte com melhor relação entre eficiência e custo
Os dados utilizados no projeto são hipotéticos, construídos para fins de demonstração e portfólio.
- Python 3.11+
- Pandas — estruturação, transformação e agregação de dados tabulares
- NumPy — operações numéricas e suporte a cálculos vetorizados
- Fertpy — cálculo determinístico de demanda de nutrientes e proporção NPK
- Matplotlib — geração de gráficos estáticos
- Seaborn — visualizações estatísticas e estilização
- OpenPyXL — leitura e escrita de arquivos Excel
- XLSXWriter (via Pandas) — exportação estruturada de resultados
- Arquitetura modular em Python (src/)
- separação em camadas:
core,infra,app,analytics - organização orientada a domínio (Domain-Driven Design simplificado)
- separação em camadas:
- SciPy — suporte a cálculos matemáticos (dependência indireta)
- PyYAML — suporte a configurações (dependência indireta)
- adjustText — ajuste automático de rótulos em gráficos
-
Pipeline completo de processamento de dados de solo e insumos
-
Cálculo de demanda de nutrientes (N, P₂O₅, K₂O)
-
Cálculo de necessidade de calagem (V% e CTC)
-
Implementação da lógica de decisão de adubação:
- tentativa de fonte única
- fallback para mistura de fertilizantes
- geração de diagnóstico em casos inviáveis
-
Seleção de fonte de calcário baseada em:
- PRNT
- custo
-
Consolidação de custos por talhão e propriedade
-
Geração de outputs:
resultado.xlsx(visão consolidada)doses.xlsx(visão detalhada)- gráficos automáticos
-
Estrutura modular do pipeline (arquitetura em
src/) -
Notebook de execução do pipeline
-
Geração automática de relatórios em PDF
-
Consolidação por propriedade e talhão
-
Inclusão de:
- demanda de insumos
- custos
- gráficos
-
Estrutura de relatório padronizada para uso técnico
- Comparação estruturada entre fertilizantes
- Análise de custo por nutriente (R$/kg N, P₂O₅, K₂O)
- Simulação de cenários com diferentes fornecedores
- Avaliação de sensibilidade a preço e frete
- Comparação entre fontes de corretivos
- Avaliação mais detalhada de eficiência (PRNT)
- Simulação de impacto na dose aplicada
- Preparação para cenários com múltiplas fontes
- Inclusão de novos nutrientes (macro e micro)
- Suporte a múltiplas culturas
- Parametrização agronômica mais flexível
- Expansão da base de regras do sistema
- Estrutura otimizada para integração com Power BI
- Criação de métricas analíticas adicionais
- Padronização de outputs para consumo externo
- Dashboards operacionais
- Evolução da lógica de seleção de insumos
- Introdução de critérios multicritério
- Preparação para otimização matemática (ex: programação linear)
- Pipeline completo e estável
- Suporte a múltiplos cenários produtivos
- Geração automatizada de relatórios
- Estrutura pronta para expansão contínua
- Documentação técnica consolidada
O projeto evolui em três eixos principais:
- Escopo agronômico → mais nutrientes, culturas e regras
- Capacidade analítica → métricas, comparações e BI
- Lógica de decisão → de heurística determinística para modelos mais robustos
- Integração com Power BI (dashboards interativos)
- Integração com dados geoespaciais (shapefiles)
- Análise espacial de fertilidade
- Suporte a taxa variável por talhão
- Integração com APIs externas (ex: clima, preços)
Este projeto está licenciado sob a Apache License 2.0.
Este projeto foi desenvolvido por:
- Luiz Henrique de Lima Peguin
- Pedro Henrique Escaranaro Brasil
Para mais informações veja o arquivo AUTHORS.md.
Este projeto implementa um pipeline computacional para processamento de dados de análise de solo e cálculo de demanda de insumos agrícolas, utilizando a biblioteca Fertpy.
O sistema realiza exclusivamente cálculos determinísticos e seleção técnica de cenários de insumos, com base em parâmetros definidos em código.
Ele não realiza recomendações agronômicas.
Todos os resultados possuem caráter estritamente técnico, educacional e demonstrativo, sendo inadequados para uso direto em tomada de decisão agronômica.
A definição de estratégias de manejo da fertilidade do solo — incluindo recomendação de adubação e calagem — exige análise contextual e responsabilidade técnica, considerando fatores como:
- sistema de produção
- cultura
- histórico da área
- condições edafoclimáticas
- metodologias regionais de interpretação
De acordo com o sistema CONFEA/CREA, a elaboração e validação de recomendações agronômicas são atribuições exclusivas de profissionais legalmente habilitados, como Engenheiros Agrônomos ou Técnicos Agrícolas.
Este projeto não substitui avaliação técnica profissional e não deve ser utilizado como base única para decisões em sistemas produtivos reais.
Os autores e colaboradores isentam-se de qualquer responsabilidade por decisões, perdas ou danos decorrentes do uso direto ou indireto dos resultados gerados por este projeto.
O uso deste projeto implica concordância com os termos deste aviso.