File size: 1,805 Bytes
61841c2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path
import pandas as pd
@dataclass(frozen=True)
class DataBundle:
df_base: pd.DataFrame
df_culturas_pragas: pd.DataFrame
diag_base_col: str
diag_trat_col: str
trat1_col: str | None
trat2_col: str | None
trat3_col: str | None
def _first_existing_column(df: pd.DataFrame, candidates: list[str]) -> str | None:
for col in candidates:
if col in df.columns:
return col
return None
def load_csv_data(base_csv_path: str | Path, culturas_csv_path: str | Path) -> DataBundle:
df_base = pd.read_csv(base_csv_path)
df_culturas_pragas = pd.read_csv(culturas_csv_path)
diag_base_col = _first_existing_column(
df_base, ["DIAGNÓSTICO", "DIAGNOSTICO", "Diagnostico", "Diagnóstico"]
)
diag_trat_col = _first_existing_column(
df_culturas_pragas, ["Categoria da Praga", "Diagnostico", "Diagnóstico"]
)
trat1_col = _first_existing_column(
df_culturas_pragas, ["Tratamento Nível 1 (Orgânico)", "Tratamento Nível 1"]
)
trat2_col = _first_existing_column(
df_culturas_pragas, ["Tratamento Nível 2 (Genérico)", "Tratamento Nível 2"]
)
trat3_col = _first_existing_column(
df_culturas_pragas,
["Tratamento Nível 3 (Agrotóxico Controlado)", "Tratamento Nível 3"],
)
if diag_base_col is None or diag_trat_col is None:
raise ValueError("Colunas de diagnóstico não encontradas nas planilhas.")
return DataBundle(
df_base=df_base,
df_culturas_pragas=df_culturas_pragas,
diag_base_col=diag_base_col,
diag_trat_col=diag_trat_col,
trat1_col=trat1_col,
trat2_col=trat2_col,
trat3_col=trat3_col,
)
|