Skip to content

lhpeguin/soil-fertility-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Status License Data Science Pipeline GitHub last commit GitHub repo size

Pipeline de Fertilidade do Solo e Dimensionamento de Insumos

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.


Destaques do Projeto

  • 🌱 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

Objetivo do Projeto

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.


Motivação

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)

Cenário do Projeto

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.


Lógica de decisão de adubação e calagem

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)

Adubação

1. Cálculo da demanda nutricional

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.


2. Estratégia de fonte única

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

3. Estratégia de mistura

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

4. Seleção da estratégia

Entre as alternativas viáveis, é selecionada a melhor com base em:

  • custo total
  • adequação nutricional

Calagem

1. Cálculo da necessidade de calagem

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).


2. Avaliação das fontes de calcário

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

3. Seleção da fonte

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

Observação importante

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.


Resumo da lógica

Adubação

  1. Calcula demanda nutricional
  2. Tenta fonte única
  3. Se falhar → gera diagnóstico
  4. Calcula mistura
  5. Seleciona melhor alternativa

Calagem

  1. Calcula necessidade de calagem
  2. Avalia fontes disponíveis
  3. Seleciona melhor fonte (PRNT + custo)

Como Executar o Projeto

1. Clone o repositório

git clone https://github.com/seu-usuario/fertilidade-do-solo.git
cd fertilidade-do-solo

2. Crie um ambiente virtual

python -m venv venv
# Linux / macOS:
source venv/bin/activate  
# Windows: 
venv\Scripts\activate

3. Instale as dependências

Recomenda-se instalar o projeto em modo editável:

pip install -e .

Para ambiente de desenvolvimento (incluindo Jupyter e ferramentas auxiliares):

pip install -e .[dev]

4. Execute o pipeline

python main.py --input data/raw/dataset_fazendas.xlsx --insumos data/raw/lista_de_fornecedores.xlsx --output data/processed

Saídas geradas

O 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


Arquitetura do Projeto

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)

Fluxo do Pipeline

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

Observação

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)

Abordagem Técnica

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.


1 — Estruturação dos dados

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

2 — Cálculo da demanda agronômica

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

3 — Avaliação de estratégias de adubação

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.


4 — Seleção de insumos para calagem

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.


5 — Consolidação de resultados

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.


6 — Visualização e outputs

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

Observação sobre EDA

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.


Estrutura dos Dados

O pipeline utiliza dois conjuntos principais de dados:

  • análise de solo por talhão
  • base de insumos (fornecedores, fertilizantes e corretivos)

1. Dataset de análise de solo

Cada linha representa um talhão agrícola.

| propriedade | talhao | area_ha | v_atual | ctc | classe_resp_N | p | k | produtividade_esperada |

Descrição das variáveis

  • 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


2. Dataset de insumos

O arquivo de insumos é estruturado em três abas:

2.1 Fornecedores

| fornecedor | perfil |

  • fornecedor → nome do fornecedor
  • perfil → classificação ou tipo do fornecedor

2.2 Adubos

| 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

2.3 Calagem

| 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

Observação

Os dados utilizados no projeto são hipotéticos, construídos para fins de demonstração e portfólio.


Tecnologias Utilizadas

Linguagem e Base Computacional

  • Python 3.11+

Processamento e Manipulação de Dados

  • Pandas — estruturação, transformação e agregação de dados tabulares
  • NumPy — operações numéricas e suporte a cálculos vetorizados

Modelagem Agronômica

  • Fertpy — cálculo determinístico de demanda de nutrientes e proporção NPK

Visualização de Dados

  • Matplotlib — geração de gráficos estáticos
  • Seaborn — visualizações estatísticas e estilização

Exportação e Integração

  • OpenPyXL — leitura e escrita de arquivos Excel
  • XLSXWriter (via Pandas) — exportação estruturada de resultados

Pipeline e Arquitetura

  • Arquitetura modular em Python (src/)
    • separação em camadas: core, infra, app, analytics
    • organização orientada a domínio (Domain-Driven Design simplificado)

Dependências auxiliares

  • 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

Roadmap

v0.1.0 — Pipeline determinístico de cálculo e decisão

  • 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


v0.2.0 — Relatórios operacionais (PDF)

  • 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


v0.3.0 — Expansão da análise de insumos

  • 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

v0.4.0 — Evolução da calagem

  • 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

v0.5.0 — Expansão agronômica e estrutural

  • 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

v0.6.0 — Camada analítica e BI

  • 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

v0.7.0 — Modelos de decisão avançados

  • 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)

v1.0.0 — Sistema consolidado

  • 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

Direção de evolução

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

Ideias futuras

  • 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)

Licença

Este projeto está licenciado sob a Apache License 2.0.


Autores

Este projeto foi desenvolvido por:

  • Luiz Henrique de Lima Peguin
  • Pedro Henrique Escaranaro Brasil

Para mais informações veja o arquivo AUTHORS.md.


Aviso Legal

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.


About

Deterministic pipeline for soil fertility analysis and fertilizer demand optimization, powered by Fertpy for agronomic calculations

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors