Commit a4f9d7c8 authored by Lionel's avatar Lionel
Browse files

Resolve "Ajouter 2 groupes de colonnes...

Resolve "Ajouter 2 groupes de colonnes nb_exploitations_par_age_chef_exploitation et nb_exploitations_par_sau dans population_agricole.csv
parent 1500f5a8
......@@ -25,8 +25,8 @@ from crater.reglages import (
DOSSIER_IGN, URL_SOURCE_RPG, NOMS_FICHIERS_RPG,
CHEMIN_OUTPUT_DATA,
DOSSIER_TERRITOIRES, DOSSIER_SURFACE_AGRICOLE_UTILE, DOSSIER_RPG, DOSSIER_PARCEL,
DOSSIER_POPULATION_AGRICOLE,
DOSSIER_POLITIQUE_FONCIERE,
DOSSIER_POPULATION_AGRICOLE,
DOSSIER_POLITIQUE_FONCIERE,
DOSSIER_PRATIQUES_AGRICOLES, CHEMIN_SOURCE_SAU_BIO,
DOSSIER_PRODUCTION_BESOINS,
DOSSIER_CARTES
......
import io
import shutil
from pathlib import Path
from typing import Dict, List
......@@ -16,48 +17,6 @@ def reinitialiser_dossier(nom_dossier: Path):
nom_dossier.mkdir(parents=True)
def membre_commun_dans_2_listes(liste_a, liste_b):
a_set = set(liste_a)
b_set = set(liste_b)
if a_set & b_set:
return True
else:
return False
def comparer_valeurs(a, b):
return \
"\nValeur cible = " + str(a) + \
" - Valeur testée = " + str(b) + \
" - Différence absolue = " + str(a - b) + \
" - Différence relative = " + str(round((b / a - 1) * 100, 1)) + "%"
def verifier_donnees_communes(
donnnes: pd.DataFrame,
source: pd.DataFrame,
colonnes: List[str],
verifier_totaux: bool=False
) -> str:
r = ""
for colonne in colonnes:
communes_sans_donnee = list(donnnes[donnnes[colonne].isnull()]['id_commune'])
communes_donnee_nulle = list(donnnes[donnnes[colonne] == 0]['id_commune'])
r += "\n\n*** " + colonne.upper() + " ***"
r += "\n" + str(len(communes_sans_donnee)) + " commune(s) sans " + colonne + \
"\n" + ", ".join(communes_sans_donnee)
if verifier_totaux:
r += comparer_valeurs(
round(source[colonne].abs().sum(), 3),
round(donnnes[colonne].abs().sum(), 3)
)
r += "\n" + str(len(communes_donnee_nulle)) + " commune(s) avec " + colonne + " = 0"
return r
def message_synthese(
intro,
parametres
......@@ -185,3 +144,11 @@ def calculerNoteParInterpolation3Seuils(valeur, seuil1, seuil2, seuil3, note_seu
def produit_cartesien(df_1, df_2):
return df_1.assign(key=1).merge(df_2.assign(key=1), on='key').drop('key', axis=1)
def exporter_description_dataframe(df, fichier_sortie):
buffer = io.StringIO()
df.info(verbose=True, buf=buffer)
s = buffer.getvalue()
with open(fichier_sortie, "w", encoding="utf-8") as f:
f.write(s)
\ No newline at end of file
from pathlib import Path
import pandas as pd
from pandas import DataFrame
import numpy as np
from pandas import DataFrame
import crater.population_agricole.chargeur_actifs_agricoles_permanents as chargeur_actifs_agricoles_permanents
from crater.population_agricole.evolution_part_population_agricole import ajouter_evolution_part_population_agricole
from crater.population_agricole.part_population_agricole_1988 import ajouter_part_population_agricole_1988
from crater.population_agricole.part_population_agricole_2010 import ajouter_part_population_agricole_2010
from crater.population_agricole.synthese_population_agricole import ajouter_synthese_population_agricole
import crater.territoires.outils as outils_territoires
from crater.crater_logger import log
from crater.outils import reinitialiser_dossier, DictDataFrames
from crater.outils import reinitialiser_dossier, DictDataFrames, exporter_description_dataframe
from crater.population_agricole import chargeur_sources_population_agricole
from crater.population_agricole.evolution_part_population_agricole import \
ajouter_colonne_evolution_part_population_agricole
from crater.population_agricole.part_population_agricole_1988 import ajouter_colonne_part_population_agricole_1988
from crater.population_agricole.part_population_agricole_2010 import ajouter_colonne_part_population_agricole_2010
from crater.population_agricole.synthese_population_agricole import ajouter_colonne_synthese_population_agricole
from crater.territoires.outils import IDS_CATEGORIES_TERRITOIRES_SUPRACOMMUNAUX, trier_territoires
def calculer_population_agricole(
territoires: DataFrame,
chemin_fichier_actifs_agricoles_permanents: Path,
dossier_sources_agreste: Path,
chemin_dossier_output: Path
) -> None:
log.info("##### CALCUL POPULATION AGRICOLE #####")
sources_population_agricole = _charger_sources(chemin_fichier_actifs_agricoles_permanents)
sources_population_agricole = _charger_sources(dossier_sources_agreste)
donnees_population_agricole = _calculer_donnees_population_agricole(
donnees_population_agricole = _construire_df_population_agricole(
territoires,
sources_population_agricole
)
donnees_population_agricole = ajouter_part_population_agricole_2010(donnees_population_agricole)
donnees_population_agricole = ajouter_part_population_agricole_1988(donnees_population_agricole)
donnees_population_agricole = ajouter_evolution_part_population_agricole(donnees_population_agricole)
donnees_population_agricole = ajouter_synthese_population_agricole(donnees_population_agricole)
donnees_population_agricole = ajouter_colonne_part_population_agricole_2010(donnees_population_agricole)
donnees_population_agricole = ajouter_colonne_part_population_agricole_1988(donnees_population_agricole)
donnees_population_agricole = ajouter_colonne_evolution_part_population_agricole(donnees_population_agricole)
donnees_population_agricole = ajouter_colonne_synthese_population_agricole(donnees_population_agricole)
_exporter(
donnees_population_agricole,
......@@ -45,7 +46,8 @@ def _exporter(
log.info("##### EXPORT POPULATION AGRICOLE #####")
reinitialiser_dossier(chemin_dossier_output)
donnees_population_agricole.drop(columns=['annee_dernier_mouvement_commune'] + IDS_CATEGORIES_TERRITOIRES_SUPRACOMMUNAUX
donnees_population_agricole.drop(
columns=['annee_dernier_mouvement_commune'] + IDS_CATEGORIES_TERRITOIRES_SUPRACOMMUNAUX
).to_csv(
chemin_dossier_output / "population_agricole.csv",
sep=";",
......@@ -53,70 +55,90 @@ def _exporter(
index=True,
float_format='%.2f'
)
exporter_description_dataframe(donnees_population_agricole, chemin_dossier_output / "population_agricole.txt")
def _charger_sources(
chemin_fichier_actifs_agricoles_permanents: Path
chemin_sources_agreste: Path
) -> DictDataFrames:
log.info("##### CHARGEMEMENT DES DONNEES SOURCES POPULATION AGRICOLE #####")
df_agreste_actifs_agricoles_2010 = chargeur_actifs_agricoles_permanents.charger(chemin_fichier_actifs_agricoles_permanents,
"FDS_G_2005_2010.txt"
).rename(columns={'Nombre de personnes': 'actifs_agricoles_permanents_2010',
'Nombre d\'exploitations': 'nb_exploitations_2010'})
df_agreste_actifs_agricoles_1988 = chargeur_actifs_agricoles_permanents.charger(chemin_fichier_actifs_agricoles_permanents,
"FDS_G_2005_1988.txt"
).rename(columns={'Nombre de personnes': 'actifs_agricoles_permanents_1988',
'Nombre d\'exploitations': 'nb_exploitations_1988'})
actifs_agricoles_permanents = pd.merge(
df_agreste_actifs_agricoles_2010,
df_agreste_actifs_agricoles_1988,
how="outer",
on="id_territoire"
df_actifs_et_exploitations_2010 = chargeur_sources_population_agricole.charger_agreste_actifs_agricoles(
chemin_sources_agreste / 'FDS_G_2005.zip',
"FDS_G_2005_2010.txt"
).rename(columns={'actifs_agricoles_permanents': 'actifs_agricoles_permanents_2010',
'nb_exploitations': 'nb_exploitations_2010'})
df_actifs_et_exploitations_1988 = chargeur_sources_population_agricole.charger_agreste_actifs_agricoles(
chemin_sources_agreste / 'FDS_G_2005.zip',
"FDS_G_2005_1988.txt"
).rename(columns={'actifs_agricoles_permanents': 'actifs_agricoles_permanents_1988',
'nb_exploitations': 'nb_exploitations_1988'})
df_exploitations_par_age_exploitant = chargeur_sources_population_agricole.charger_agreste_nb_exploitation_par_age_chef_exploitation(
chemin_sources_agreste / 'FDS_G_2004.zip',
"FDS_G_2004_2010.txt"
)
df_exploitations_par_sau = chargeur_sources_population_agricole.charger_agreste_nb_exploitations_par_sau(
chemin_sources_agreste / 'FDS_G_2003.zip',
"FDS_G_2003_2010.txt"
)
df_sources_population_agricole = (df_actifs_et_exploitations_2010
.merge(df_actifs_et_exploitations_1988, how="outer")
.merge(df_exploitations_par_age_exploitant, how="outer")
.merge(df_exploitations_par_sau, how="outer"))
return actifs_agricoles_permanents
return df_sources_population_agricole
def _calculer_donnees_population_agricole(
def _construire_df_population_agricole(
territoires: DataFrame,
sources_population_agricole: DataFrame
) -> DataFrame:
donnees_population_agricole = _assembler_df_territoire_et_population_agricole(territoires,
sources_population_agricole)
donnees_population_agricole = _remplir_valeurs_manquantes(donnees_population_agricole)
donnees_population_agricole = _traiter_mouvements_communes(donnees_population_agricole)
donnees_population_agricole = _consolider_indicateurs_sur_epcis_et_regroupements_communes(
donnees_population_agricole)
donnees_population_agricole = trier_territoires(donnees_population_agricole)
return donnees_population_agricole
def _assembler_df_territoire_et_population_agricole(territoires, sources_population_agricole):
colonnes = ['nom_territoire', 'categorie_territoire'] + IDS_CATEGORIES_TERRITOIRES_SUPRACOMMUNAUX + [
'annee_dernier_mouvement_commune', 'population_totale_2010', 'population_totale_1990']
donnees_population_agricole = territoires[colonnes]
sources_population_agricole = sources_population_agricole.set_index('id_territoire')
donnees_population_agricole = donnees_population_agricole.join(sources_population_agricole)
return donnees_population_agricole
donnees_actifs_agricoles_permanents = sources_population_agricole.set_index('id_territoire')
donnees_population_agricole = donnees_population_agricole.join(donnees_actifs_agricoles_permanents)
donnees_population_agricole = nettoyer_et_consolider_champ_indicateur(donnees_population_agricole,
'actifs_agricoles_permanents_2010')
donnees_population_agricole = nettoyer_et_consolider_champ_indicateur(donnees_population_agricole,
'actifs_agricoles_permanents_1988')
donnees_population_agricole = nettoyer_et_consolider_champ_indicateur(donnees_population_agricole,
'nb_exploitations_2010')
donnees_population_agricole = nettoyer_et_consolider_champ_indicateur(donnees_population_agricole,
'nb_exploitations_1988')
def _remplir_valeurs_manquantes(donnees_population_agricole):
donnees_population_agricole.loc[
donnees_population_agricole['categorie_territoire'] == 'COMMUNE',
'nb_exploitations_2010':'nb_exploitations_par_sau.plus_200_ha'
] = donnees_population_agricole.loc[
donnees_population_agricole['categorie_territoire'] == 'COMMUNE',
'nb_exploitations_2010':'nb_exploitations_par_sau.plus_200_ha'
].fillna(0)
return donnees_population_agricole
donnees_population_agricole = trier_territoires(donnees_population_agricole)
def _traiter_mouvements_communes(donnees_population_agricole):
donnees_population_agricole.loc[
donnees_population_agricole.annee_dernier_mouvement_commune > 2011,
'nb_exploitations_2010':'nb_exploitations_par_sau.plus_200_ha'] = np.nan
return donnees_population_agricole
def nettoyer_et_consolider_champ_indicateur(donnees_population_agricole, nom_champ_indicateur):
donnees_population_agricole.loc[
(donnees_population_agricole['categorie_territoire'] == 'COMMUNE') &
(donnees_population_agricole[nom_champ_indicateur].isnull()),
nom_champ_indicateur] = 0
donnees_population_agricole.loc[
donnees_population_agricole.annee_dernier_mouvement_commune > 2011, nom_champ_indicateur] = np.nan
donnees_population_agricole = outils_territoires.ajouter_donnees_epcis_et_regroupements_communes_par_somme_donnees_communales(
donnees_population_agricole,
nom_champ_indicateur,
type='Int64'
)
def _consolider_indicateurs_sur_epcis_et_regroupements_communes(donnees_population_agricole):
for nom_colonne in donnees_population_agricole.loc[:, 'nb_exploitations_2010':'nb_exploitations_par_sau.plus_200_ha'].columns:
donnees_population_agricole = outils_territoires.ajouter_donnees_epcis_et_regroupements_communes_par_somme_donnees_communales(
donnees_population_agricole,
nom_colonne,
type='Int64'
)
return donnees_population_agricole
......@@ -6,11 +6,11 @@ from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, traduire_code_insee_vers_id_departement_crater, \
traduire_code_insee_vers_id_region_crater, traduire_code_insee_vers_id_pays_crater
def charger(chemin_fichier, fichier):
log.info(" => Chargement actifs agricoles permanents depuis %s contenu dans %s", fichier, chemin_fichier)
def charger_agreste_actifs_agricoles(chemin_fichier_zip, fichier):
log.info(" => Chargement fichier AGRESTE des actifs agricoles permanents depuis %s/%s", chemin_fichier_zip, fichier)
df = pd.read_csv(
zipfile.ZipFile(chemin_fichier, 'r').open(fichier),
zipfile.ZipFile(chemin_fichier_zip, 'r').open(fichier),
sep=';',
dtype={
'NOM': 'str',
......@@ -60,16 +60,145 @@ def charger(chemin_fichier, fichier):
{"valeur": "Int64"}
)
return _creer_df_actifs_agricoles_permanents(df)
df = _filtrer_et_ajouter_colonne_id_territoire(df)
df = df.pivot(index='id_territoire', columns='indicateur', values='valeur').reset_index()
df = df.rename(columns={
'Nombre de personnes': 'actifs_agricoles_permanents',
'Nombre d\'exploitations': 'nb_exploitations'
})
return df
def charger_agreste_nb_exploitation_par_age_chef_exploitation(chemin_fichier_zip, fichier):
log.info(" => Chargement fichier AGRESTE du nb d'exploitations selon l'âge du chef d'exploitation depuis %s/%s", chemin_fichier_zip, fichier)
df = pd.read_csv(
zipfile.ZipFile(chemin_fichier_zip, 'r').open(fichier),
sep=';',
dtype={
'NOM': 'str',
'ANNREF': 'str',
'FRANCE': 'str',
'FRDOM': 'str',
'REGION': 'str',
'DEP': 'str',
'COM': 'str',
'G_2004_DIM1': 'str',
'G_2004_MOD_DIM1': 'str',
'G_2004_LIB_DIM1': 'str',
'G_2004_DIM2': 'str',
'G_2004_MOD_DIM2': 'str',
'G_2004_LIB_DIM2': 'str',
'G_2004_DIM3': 'str',
'G_2004_MOD_DIM3': 'str',
'G_2004_LIB_DIM3': 'str',
'VALEUR': 'float',
'QUALITE': 'str'
}
).rename(
columns={
'G_2004_LIB_DIM1': 'taille_exploitation',
'G_2004_LIB_DIM2': 'classe_age_chef_exploitation',
'G_2004_LIB_DIM3': 'indicateur',
'VALEUR': 'valeur'
},
errors='raise'
).query('taille_exploitation == "Ensemble des exploitations (hors pacages collectifs)"'
' & classe_age_chef_exploitation != "Ensemble"'
' & indicateur == "Exploitations"'
).reindex(
columns=['FRANCE',
'FRDOM',
'REGION',
'DEP',
'COM',
'taille_exploitation',
'classe_age_chef_exploitation',
'indicateur',
'valeur'
]
).astype(
{"valeur": "Int64"}
)
df = _filtrer_et_ajouter_colonne_id_territoire(df)
df = df.pivot(index='id_territoire', columns='classe_age_chef_exploitation', values='valeur').reset_index()
df = df.loc[:, ['id_territoire', 'Moins de 40 ans', 'De 40 à 49 ans', 'De 50 à 59 ans', '60 ans ou plus']
].rename(columns={
'Moins de 40 ans': 'nb_exploitations_par_age_chef_exploitation.moins_40_ans',
'De 40 à 49 ans': 'nb_exploitations_par_age_chef_exploitation.40_a_49_ans',
'De 50 à 59 ans': 'nb_exploitations_par_age_chef_exploitation.50_a_59_ans',
'60 ans ou plus': 'nb_exploitations_par_age_chef_exploitation.plus_60_ans',
})
return df
def charger_agreste_nb_exploitations_par_sau(chemin_fichier_zip, fichier):
log.info(" => Chargement fichier AGRESTE du nombre d'exploitation selon leur SAU depuis %s/%s", chemin_fichier_zip, fichier)
df = pd.read_csv(
zipfile.ZipFile(chemin_fichier_zip, 'r').open(fichier),
sep=';',
dtype={
'NOM': 'str',
'ANNREF': 'str',
'FRANCE': 'str',
'FRDOM': 'str',
'REGION': 'str',
'DEP': 'str',
'COM': 'str',
'G_2003_DIM1': 'str',
'G_2003_MOD_DIM1': 'str',
'G_2003_LIB_DIM1': 'str',
'G_2003_DIM2': 'str',
'G_2003_MOD_DIM2': 'str',
'G_2003_LIB_DIM2': 'str',
'G_2003_DIM3': 'str',
'G_2003_MOD_DIM3': 'str',
'G_2003_LIB_DIM3': 'str',
'VALEUR': 'float',
'QUALITE': 'str'
}
).rename(
columns={
'G_2003_LIB_DIM1': 'taille_exploitation',
'G_2003_LIB_DIM2': 'surface_exploitation',
'G_2003_LIB_DIM3': 'indicateur',
'VALEUR': 'valeur'
},
errors='raise'
).query('taille_exploitation == "Ensemble des exploitations (hors pacages collectifs)"'
' & surface_exploitation != "Ensemble"'
' & indicateur == "Exploitations"'
).reindex(
columns=['FRANCE',
'FRDOM',
'REGION',
'DEP',
'COM',
'taille_exploitation',
'surface_exploitation',
'indicateur',
'valeur'
]
).astype(
{"valeur": "Int64"}
)
df = _filtrer_et_ajouter_colonne_id_territoire(df)
df = df.pivot(index='id_territoire', columns='surface_exploitation', values='valeur').reset_index()
df = df.loc[:, ['id_territoire', 'Moins de 20 hectares (ha) y compris sans SAU','De 20 à moins de 50 ha',
'De 50 à moins de 100 ha', 'De 100 à moins de 200 ha', '200 ha ou plus']
].rename(columns={
'Moins de 20 hectares (ha) y compris sans SAU': 'nb_exploitations_par_sau.moins_20_ha',
'De 20 à moins de 50 ha': 'nb_exploitations_par_sau.20_a_50_ha',
'De 50 à moins de 100 ha': 'nb_exploitations_par_sau.50_a_100_ha',
'De 100 à moins de 200 ha': 'nb_exploitations_par_sau.100_a_200_ha',
'200 ha ou plus': 'nb_exploitations_par_sau.plus_200_ha',
})
def _creer_df_actifs_agricoles_permanents(df):
df = _selectionner_et_renommer_les_territoires(df)
df = _extraire_colonnes_par_pivot(df)
return df
def _selectionner_et_renommer_les_territoires(df):
def _filtrer_et_ajouter_colonne_id_territoire(df):
mask_communes = df['COM'] != '............'
df.loc[mask_communes, "id_territoire"] = traduire_code_insee_vers_id_commune_crater(df.loc[mask_communes, 'COM'])
......@@ -84,7 +213,3 @@ def _selectionner_et_renommer_les_territoires(df):
df = df[df['id_territoire'].notna()]
return df
def _extraire_colonnes_par_pivot(df):
return df.pivot(index='id_territoire', columns='indicateur', values='valeur').reset_index()
......@@ -7,7 +7,7 @@ import crater.territoires.outils as outils_territoires
from crater.crater_logger import log
def ajouter_evolution_part_population_agricole(population_agricole: DataFrame) -> DataFrame:
def ajouter_colonne_evolution_part_population_agricole(population_agricole: DataFrame) -> DataFrame:
log.info(" => Indicateur évolution part population agricole")
population_agricole.loc[:, 'evolution_part_population_agricole_valeur_pt_de_pourcentage'] = (
......
......@@ -7,7 +7,7 @@ import crater.territoires.outils as outils_territoires
from crater.crater_logger import log
def ajouter_part_population_agricole_1988(donnees_population_agricole: DataFrame) -> DataFrame:
def ajouter_colonne_part_population_agricole_1988(donnees_population_agricole: DataFrame) -> DataFrame:
log.info(" => Indicateur part population agricole 1988")
donnees_population_agricole.loc[:, 'part_population_agricole_1988_valeur_pourcent'] = (
......
......@@ -7,7 +7,7 @@ import crater.territoires.outils as outils_territoires
from crater.crater_logger import log
def ajouter_part_population_agricole_2010(donnees_population_agricole: DataFrame) -> DataFrame:
def ajouter_colonne_part_population_agricole_2010(donnees_population_agricole: DataFrame) -> DataFrame:
log.info(" => Indicateur part population agricole 2010")
donnees_population_agricole.loc[:, 'part_population_agricole_2010_valeur_pourcent'] = (
......
......@@ -7,7 +7,7 @@ import crater.outils as outils
from crater.crater_logger import log
def ajouter_synthese_population_agricole(population_agricole: DataFrame) -> DataFrame:
def ajouter_colonne_synthese_population_agricole(population_agricole: DataFrame) -> DataFrame:
log.info(" => Synthèse")
......
......@@ -40,7 +40,7 @@ CHEMIN_SOURCE_POPULATION_TOTALE_HISTORIQUE = Path(
)
CHEMIN_SOURCE_POPULATION_AGRICOLE = Path(
CHEMIN_CRATER_DATA_SOURCES /
"agreste/1970-2010/FDS_G_2005.zip"
"agreste/1970-2010"
)
CHEMIN_SOURCE_ARTIFICIALISATION = Path(
......
id_territoire;nom_territoire;categorie_territoire;population_totale_2010;population_totale_1990;nb_exploitations_2010;actifs_agricoles_permanents_2010;nb_exploitations_1988;actifs_agricoles_permanents_1988;part_population_agricole_2010_valeur_pourcent;part_population_agricole_2010_note;part_population_agricole_1988_valeur_pourcent;part_population_agricole_1988_note;evolution_part_population_agricole_valeur_pt_de_pourcentage;evolution_part_population_agricole_note;synthese_note;synthese_message
P-FR;France;PAYS;26494;8421;514694;102;1067156;344;0.38;5.00;4.09;5.00;-3.70;5.00;5;Population agricole <strong>en proportion proche de la moyenne française</strong> mais <strong>en déclin</strong>
R-11;Île-de-France;REGION;20000;2000;;;;;;;;;;;;Données non disponibles
R-75;Nouvelle-Aquitaine;REGION;6445;6370;;;;;;;;;;;;Données non disponibles
R-76;Occitanie;REGION;49;51;;;;;;;;;;;;Données non disponibles
D-32;Gers;DEPARTEMENT;49;51;;;;;;;;;;;;Données non disponibles
D-40;Landes;DEPARTEMENT;6445;6370;;;;;;;;;;;;Données non disponibles
D-75;Paris;DEPARTEMENT;20000;2000;;;;;;;;;;;;Données non disponibles
PAT-1;Le PAT monocommunal du Gée-Rivière;REGROUPEMENT_COMMUNES;49;51;9;24;44;87;48.98;10.00;170.59;10.00;-121.61;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
PAT-2;Le PAT interdepartemental D-32 (3 communes) D-40 (2 communes);REGROUPEMENT_COMMUNES;6494;6421;54;102;184;344;1.57;10.00;5.36;6.55;-3.79;4.88;10;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
SCOT-1;Le SCOT monocommunal de Paris;REGROUPEMENT_COMMUNES;20000;2000;0;0;0;0;0.00;0.00;0.00;0.00;0.00;10.00;2;Population agricole <strong>stable</strong> mais <strong>en proportion plus faible que la moyenne française</strong>
SCOT-2;Le SCOT monocommunal de Gée-Rivière;REGROUPEMENT_COMMUNES;49;51;9;24;44;87;48.98;10.00;170.59;10.00;-121.61;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
SCOT-3;Le SCOT interdepartemental D-32 (3 communes) D-40 (2 communes);REGROUPEMENT_COMMUNES;6494;6421;54;102;184;344;1.57;10.00;5.36;6.55;-3.79;4.88;10;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
E-200030435;CC d'Aire-sur-l'Adour;EPCI;6494;6421;54;102;184;344;1.57;10.00;5.36;6.55;-3.79;4.88;10;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
E-200054781;Métropole du Grand Paris;EPCI;20000;2000;0;0;0;0;0.00;0.00;0.00;0.00;0.00;10.00;2;Population agricole <strong>stable</strong> mais <strong>en proportion plus faible que la moyenne française</strong>
C-32145;Gée-Rivière;COMMUNE;49;51;9;24;44;87;48.98;10.00;170.59;10.00;-121.61;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
C-32333;Projan(scission2020);COMMUNE;;;;;;;;;;;;;;Données non disponibles
C-32424;Ségos(fusion2017);COMMUNE;;;;;;;;;;;;;;Données non disponibles
C-40001;Aire-sur-l'Adour;COMMUNE;6279;6205;9;14;38;71;0.22;2.89;1.14;1.39;-0.92;8.76;5;Population agricole <strong>en proportion plus faible que la moyenne française</strong> et <strong>en déclin</strong>
C-40146;Latrille;COMMUNE;166;165;36;64;102;186;38.55;10.00;112.73;10.00;-74.17;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
C-75056;Paris;COMMUNE;20000;2000;0;0;0;0;0.00;0.00;0.00;0.00;0.00;10.00;2;Population agricole <strong>stable</strong> mais <strong>en proportion plus faible que la moyenne française</strong>
id_territoire;nom_territoire;categorie_territoire;population_totale_2010;population_totale_1990;nb_exploitations_2010;actifs_agricoles_permanents_2010;nb_exploitations_1988;actifs_agricoles_permanents_1988;nb_exploitations_par_age_chef_exploitation.moins_40_ans;nb_exploitations_par_age_chef_exploitation.40_a_49_ans;nb_exploitations_par_age_chef_exploitation.50_a_59_ans;nb_exploitations_par_age_chef_exploitation.plus_60_ans;nb_exploitations_par_sau.moins_20_ha;nb_exploitations_par_sau.20_a_50_ha;nb_exploitations_par_sau.50_a_100_ha;nb_exploitations_par_sau.100_a_200_ha;nb_exploitations_par_sau.plus_200_ha;part_population_agricole_2010_valeur_pourcent;part_population_agricole_2010_note;part_population_agricole_1988_valeur_pourcent;part_population_agricole_1988_note;evolution_part_population_agricole_valeur_pt_de_pourcentage;evolution_part_population_agricole_note;synthese_note;synthese_message
P-FR;France;PAYS;26494;8421;514694;102;1067156;344;84293;138636;159384;107664;211406;87915;97440;72622;20594;0.38;5.00;4.09;5.00;-3.70;5.00;5;Population agricole <strong>en proportion proche de la moyenne française</strong> mais <strong>en déclin</strong>
R-11;Île-de-France;REGION;20000;2000;;;;;;;;;;;;;;;;;;;;;Données non disponibles
R-75;Nouvelle-Aquitaine;REGION;6445;6370;;;;;;;;;;;;;;;;;;;;;Données non disponibles
R-76;Occitanie;REGION;49;51;;;;;;;;;;;;;;;;;;;;;Données non disponibles
D-32;Gers;DEPARTEMENT;49;51;;;;;;;;;;;;;;;;;;;;;Données non disponibles
D-40;Landes;DEPARTEMENT;6445;6370;;;;;;;;;;;;;;;;;;;;;Données non disponibles
D-75;Paris;DEPARTEMENT;20000;2000;;;;;;;;;;;;;;;;;;;;;Données non disponibles
PAT-1;Le PAT monocommunal du Gée-Rivière;REGROUPEMENT_COMMUNES;49;51;9;24;44;87;0;0;0;0;0;0;0;0;0;48.98;10.00;170.59;10.00;-121.61;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
PAT-2;Le PAT interdepartemental D-32 (3 communes) D-40 (2 communes);REGROUPEMENT_COMMUNES;6494;6421;54;102;184;344;14;23;26;21;46;17;15;0;0;1.57;10.00;5.36;6.55;-3.79;4.88;10;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
SCOT-1;Le SCOT monocommunal de Paris;REGROUPEMENT_COMMUNES;20000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0.00;0.00;0.00;0.00;0.00;10.00;2;Population agricole <strong>stable</strong> mais <strong>en proportion plus faible que la moyenne française</strong>
SCOT-2;Le SCOT monocommunal de Gée-Rivière;REGROUPEMENT_COMMUNES;49;51;9;24;44;87;0;0;0;0;0;0;0;0;0;48.98;10.00;170.59;10.00;-121.61;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
SCOT-3;Le SCOT interdepartemental D-32 (3 communes) D-40 (2 communes);REGROUPEMENT_COMMUNES;6494;6421;54;102;184;344;14;23;26;21;46;17;15;0;0;1.57;10.00;5.36;6.55;-3.79;4.88;10;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
E-200030435;CC d'Aire-sur-l'Adour;EPCI;6494;6421;54;102;184;344;14;23;26;21;46;17;15;0;0;1.57;10.00;5.36;6.55;-3.79;4.88;10;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
E-200054781;Métropole du Grand Paris;EPCI;20000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0.00;0.00;0.00;0.00;0.00;10.00;2;Population agricole <strong>stable</strong> mais <strong>en proportion plus faible que la moyenne française</strong>
C-32145;Gée-Rivière;COMMUNE;49;51;9;24;44;87;0;0;0;0;0;0;0;0;0;48.98;10.00;170.59;10.00;-121.61;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
C-32333;Projan(scission2020);COMMUNE;;;;;;;;;;;;;;;;;;;;;;;Données non disponibles
C-32424;Ségos(fusion2017);COMMUNE;;;;;;;;;;;;;;;;;;;;;;;Données non disponibles
C-40001;Aire-sur-l'Adour;COMMUNE;6279;6205;9;14;38;71;14;23;26;21;46;17;15;0;0;0.22;2.89;1.14;1.39;-0.92;8.76;5;Population agricole <strong>en proportion plus faible que la moyenne française</strong> et <strong>en déclin</strong>
C-40146;Latrille;COMMUNE;166;165;36;64;102;186;0;0;0;0;0;0;0;0;0;38.55;10.00;112.73;10.00;-74.17;0.00;8;Population agricole <strong>en proportion plus élevée que la moyenne française</strong> mais <strong>en déclin</strong>
C-75056;Paris;COMMUNE;20000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0.00;0.00;0.00;0.00;0.00;10.00;2;Population agricole <strong>stable</strong> mais <strong>en proportion plus faible que la moyenne française</strong>
......@@ -35,7 +35,7 @@ def assert_csv_files_are_equals(expected_file_path, result_file_path, colonnes_a
result_dataframe = pandas.read_csv(Path(result_file_path), sep=';', dtype=str
).drop(columns=colonnes_a_exclure)
pandas.testing.assert_frame_equal(expected_dataframe, result_dataframe, check_like=True)
pandas.testing.assert_frame_equal(expected_dataframe, result_dataframe)
def assert_list_of_csv_files_are_equals(expected_folder_path, result_folder_path, file_names_list):
......
......@@ -25,7 +25,7 @@ class TestPopulationAgricole(unittest.TestCase):
# when
calculer_population_agricole(
territoires,
CHEMIN_INPUT_DATA / DOSSIER_POPULATION_AGRICOLE / 'FDS_G_2005.zip',
CHEMIN_INPUT_DATA / DOSSIER_POPULATION_AGRICOLE,
CHEMIN_OUTPUT_DATA / DOSSIER_POPULATION_AGRICOLE
)
# then
......
......@@ -2,10 +2,10 @@ import unittest
import pandas as pd
import numpy as np
from crater.population_agricole.part_population_agricole_2010 import ajouter_part_population_agricole_2010
from crater.population_agricole.part_population_agricole_1988 import ajouter_part_population_agricole_1988
from crater.population_agricole.evolution_part_population_agricole import ajouter_evolution_part_population_agricole
from crater.population_agricole.synthese_population_agricole import ajouter_synthese_population_agricole
from crater.population_agricole.part_population_agricole_2010 import ajouter_colonne_part_population_agricole_2010
from crater.population_agricole.part_population_agricole_1988 import ajouter_colonne_part_population_agricole_1988
from crater.population_agricole.evolution_part_population_agricole import ajouter_colonne_evolution_part_population_agricole
from crater.population_agricole.synthese_population_agricole import ajouter_colonne_synthese_population_agricole
from tests.test_outils import augmenter_nombre_colonnes_affichees_pandas
augmenter_nombre_colonnes_affichees_pandas()
......@@ -27,7 +27,7 @@ class TestUnitairePopulationAgricole(unittest.TestCase):
]
)
# when