Commit 9217e0f4 authored by Benjam's avatar Benjam
Browse files

fix suite review

parent dccad0cc
......@@ -34,11 +34,6 @@ def charger(chemin_fichier, fichier):
}
).rename(
columns={
'FRANCE': 'id_pays',
'FRDOM': 'id_frdom',
'REGION': 'id_region',
'DEP': 'id_departement',
'COM': 'id_commune',
'G_2005_LIB_DIM1': 'taille_exploitation',
'G_2005_LIB_DIM2': 'lien_avec_exploitation',
'G_2005_LIB_DIM3': 'indicateur',
......@@ -50,11 +45,11 @@ def charger(chemin_fichier, fichier):
" & lien_avec_exploitation == 'Ensemble'" +
" & indicateur == 'Nombre de personnes'"
).reindex(
columns=['id_pays',
'id_frdom',
'id_region',
'id_departement',
'id_commune',
columns=['FRANCE',
'FRDOM',
'REGION',
'DEP',
'COM',
'taille_exploitation',
'lien_avec_exploitation',
'indicateur',
......@@ -65,24 +60,21 @@ def charger(chemin_fichier, fichier):
{"valeur": "Int64"}
)
df.insert(0, "id_territoire", np.nan)
df_communes = df.query("id_commune != '............'")
df_departements = df.query("id_commune == '............' & id_departement != '............'")
df_regions = df.query("id_departement == '............' & id_region != '............'")
df_pays = df.query("id_frdom == 'METRO' & id_region == '............'")
return _creer_df_actifs_agricoles_permanents(df)
df_communes.id_territoire = traduire_code_insee_vers_id_commune_crater(df_communes.id_commune)
df_departements.id_territoire = traduire_code_insee_vers_id_departement_crater(df_departements.id_departement)
df_regions.id_region = df_regions.id_region.str.replace('NR', '')
df_regions.id_territoire = traduire_code_insee_vers_id_region_crater(df_regions.id_region)
df_pays.id_territoire = traduire_code_insee_vers_id_pays_crater(df_pays.id_pays)
colonnes_a_supprimer = ['id_pays', 'id_frdom', 'id_region', 'id_departement', 'id_commune']
df_communes.drop(columns=colonnes_a_supprimer, inplace = True)
df_departements.drop(columns=colonnes_a_supprimer, inplace = True)
df_regions.drop(columns=colonnes_a_supprimer, inplace = True)
df_pays.drop(columns=colonnes_a_supprimer, inplace = True)
def _creer_df_actifs_agricoles_permanents(df):
df.insert(0, "id_territoire", np.nan)
df_communes = df.query("COM != '............'")
df_departements = df.query("COM == '............' & DEP != '............'")
df_regions = df.query("DEP == '............' & REGION != '............'")
df_pays = df.query("FRDOM == 'METRO' & REGION == '............'")
return pd.concat([df_communes, df_departements, df_regions, df_pays])
\ No newline at end of file
df_communes.id_territoire = traduire_code_insee_vers_id_commune_crater(df_communes.COM)
df_departements.id_territoire = traduire_code_insee_vers_id_departement_crater(df_departements.DEP)
df_regions.id_territoire = traduire_code_insee_vers_id_region_crater(df_regions.REGION.str.replace('NR', ''))
df_pays.id_territoire = traduire_code_insee_vers_id_pays_crater(df_pays.FRANCE)
return pd.concat([df_communes, df_departements, df_regions, df_pays]).drop(columns=['FRANCE', 'FRDOM', 'REGION', 'DEP', 'COM'])
......@@ -7,11 +7,11 @@ import crater.territoires.outils as outils_territoires
from crater.crater_logger import log
def ajouter_part_population_agricole_1988(donnees_politique_fonciere: DataFrame) -> DataFrame:
def ajouter_part_population_agricole_1988(donnees_population_agricole: DataFrame) -> DataFrame:
log.info(" => Indicateur part population agricole 1988")
donnees_politique_fonciere.loc[:, 'part_population_agricole_1988_valeur_pourcent'] = (
donnees_politique_fonciere.apply(
donnees_population_agricole.loc[:, 'part_population_agricole_1988_valeur_pourcent'] = (
donnees_population_agricole.apply(
lambda x:
_part_population_agricole_1988_valeur_pourcent(
x['actifs_agricoles_permanents_1988'],
......@@ -21,12 +21,12 @@ def ajouter_part_population_agricole_1988(donnees_politique_fonciere: DataFrame)
)
)
donnees_politique_fonciere.loc[:, 'part_population_agricole_1988_note'] = (
donnees_politique_fonciere.apply(
donnees_population_agricole.loc[:, 'part_population_agricole_1988_note'] = (
donnees_population_agricole.apply(
lambda x:
outils.calculerNoteParInterpolation2Seuils(
x['part_population_agricole_1988_valeur_pourcent'],
0, donnees_politique_fonciere.query(f"id_territoire=='{outils_territoires.ID_FRANCE}'")[
0, donnees_population_agricole.query(f"id_territoire=='{outils_territoires.ID_FRANCE}'")[
'part_population_agricole_1988_valeur_pourcent'][0],
0, 5
),
......@@ -34,7 +34,7 @@ def ajouter_part_population_agricole_1988(donnees_politique_fonciere: DataFrame)
)
)
return donnees_politique_fonciere
return donnees_population_agricole
def _part_population_agricole_1988_valeur_pourcent(
......
......@@ -7,11 +7,11 @@ import crater.territoires.outils as outils_territoires
from crater.crater_logger import log
def ajouter_part_population_agricole_2010(donnees_politique_fonciere: DataFrame) -> DataFrame:
def ajouter_part_population_agricole_2010(donnees_population_agricole: DataFrame) -> DataFrame:
log.info(" => Indicateur part population agricole 2010")
donnees_politique_fonciere.loc[:, 'part_population_agricole_2010_valeur_pourcent'] = (
donnees_politique_fonciere.apply(
donnees_population_agricole.loc[:, 'part_population_agricole_2010_valeur_pourcent'] = (
donnees_population_agricole.apply(
lambda x:
_part_population_agricole_2010_valeur_pourcent(
x['actifs_agricoles_permanents_2010'],
......@@ -21,12 +21,12 @@ def ajouter_part_population_agricole_2010(donnees_politique_fonciere: DataFrame)
)
)
donnees_politique_fonciere.loc[:, 'part_population_agricole_2010_note'] = (
donnees_politique_fonciere.apply(
donnees_population_agricole.loc[:, 'part_population_agricole_2010_note'] = (
donnees_population_agricole.apply(
lambda x:
outils.calculerNoteParInterpolation2Seuils(
x['part_population_agricole_2010_valeur_pourcent'],
0, donnees_politique_fonciere.query(f"id_territoire=='{outils_territoires.ID_FRANCE}'")[
0, donnees_population_agricole.query(f"id_territoire=='{outils_territoires.ID_FRANCE}'")[
'part_population_agricole_2010_valeur_pourcent'][0],
0, 5
),
......@@ -34,7 +34,7 @@ def ajouter_part_population_agricole_2010(donnees_politique_fonciere: DataFrame)
)
)
return donnees_politique_fonciere
return donnees_population_agricole
def _part_population_agricole_2010_valeur_pourcent(actifs_agricoles_permanents_2010, population_totale_2010):
......
......@@ -7,12 +7,12 @@ import crater.outils as outils
from crater.crater_logger import log
def ajouter_synthese_population_agricole(donnees_politique_fonciere: DataFrame) -> DataFrame:
def ajouter_synthese_population_agricole(donnees_population_agricole: DataFrame) -> DataFrame:
log.info(" => Synthèse")
donnees_politique_fonciere.loc[:, 'synthese_note'] = (
donnees_politique_fonciere.apply(
donnees_population_agricole.loc[:, 'synthese_note'] = (
donnees_population_agricole.apply(
lambda x:
_note(
x['part_population_agricole_2010_note'],
......@@ -21,11 +21,11 @@ def ajouter_synthese_population_agricole(donnees_politique_fonciere: DataFrame)
axis=1
)
).astype('Int64')
donnees_politique_fonciere.loc[:, 'synthese_message'] = (
donnees_politique_fonciere.apply(
donnees_population_agricole.loc[:, 'synthese_message'] = (
donnees_population_agricole.apply(
lambda x:
_message(
donnees_politique_fonciere.query(f"id_territoire=='{outils_territoires.ID_FRANCE}'")[
donnees_population_agricole.query(f"id_territoire=='{outils_territoires.ID_FRANCE}'")[
'part_population_agricole_2010_valeur_pourcent'][0],
x['part_population_agricole_2010_valeur_pourcent'],
x['evolution_part_population_agricole_valeur_pt_de_pourcentage']
......@@ -34,7 +34,7 @@ def ajouter_synthese_population_agricole(donnees_politique_fonciere: DataFrame)
)
)
return donnees_politique_fonciere
return donnees_population_agricole
def _note(
......
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 tests.test_outils import augmenter_nombre_colonnes_affichees_pandas
augmenter_nombre_colonnes_affichees_pandas()
class TestUnitairePopulationAgricole(unittest.TestCase):
def test_part_population_agricole_2010_valeur_pourcent(self):
# given
df_population_agricole = pd.DataFrame(
columns=['id_territoire','actifs_agricoles_permanents_2010', 'population_totale_2010'],
data=[['P-FR', 12 ,100],
['C-1', 6 ,100]
])
resultat_attendu = pd.DataFrame(
columns=['part_population_agricole_2010_valeur_pourcent','part_population_agricole_2010_note'],
data=[[12.0, 5],
[6.0, 2.5]
]
)
# when
df_resultat = ajouter_part_population_agricole_2010(df_population_agricole)
# then
pd.testing.assert_series_equal(df_resultat['part_population_agricole_2010_valeur_pourcent'], resultat_attendu['part_population_agricole_2010_valeur_pourcent'], check_names=False)
pd.testing.assert_series_equal(df_resultat['part_population_agricole_2010_note'], resultat_attendu['part_population_agricole_2010_note'], check_names=False)
def test_part_population_agricole_1988_valeur_pourcent(self):
# given
df_population_agricole = pd.DataFrame(
columns=['id_territoire','actifs_agricoles_permanents_1988', 'population_totale_1990'],
data=[['P-FR', 12, 100],
['C-1', 6, 100]
])
resultat_attendu = pd.DataFrame(
columns=['part_population_agricole_1988_valeur_pourcent','part_population_agricole_1988_note'],
data=[[12.0, 5],
[6.0, 2.5]
]
)
# when
df_resultat = ajouter_part_population_agricole_1988(df_population_agricole)
# then
pd.testing.assert_series_equal(df_resultat['part_population_agricole_1988_valeur_pourcent'], resultat_attendu['part_population_agricole_1988_valeur_pourcent'], check_names=False)
pd.testing.assert_series_equal(df_resultat['part_population_agricole_1988_note'], resultat_attendu['part_population_agricole_1988_note'], check_names=False)
def test_evolution_part_population_agricole(self):
# given
df_population_agricole = pd.DataFrame(
columns=['id_territoire','population_totale_2010', 'population_totale_1990', 'actifs_agricoles_permanents_2010', 'actifs_agricoles_permanents_1988'],
data=[['P-FR', 100, 100, 5, 10],
['C-1', 10, 10, 2, 1],
['C-2', 10, 10, 0, 2]
])
resultat_attendu = pd.DataFrame(
columns=['evolution_part_population_agricole_valeur_pt_de_pourcentage','evolution_part_population_agricole_note'],
data=[[-5.0, 5.0],
[10.0, 10.0],
[-20.0, 0.0]
]
)
# when
df_resultat = ajouter_evolution_part_population_agricole(df_population_agricole)
# then
pd.testing.assert_series_equal(df_resultat['evolution_part_population_agricole_valeur_pt_de_pourcentage'], resultat_attendu['evolution_part_population_agricole_valeur_pt_de_pourcentage'], check_names=False)
pd.testing.assert_series_equal(df_resultat['evolution_part_population_agricole_note'], resultat_attendu['evolution_part_population_agricole_note'], check_names=False)
def test_synthese(self):
# given
df_population_agricole = pd.DataFrame(
columns=['id_territoire','part_population_agricole_2010_note', 'evolution_part_population_agricole_note', 'part_population_agricole_2010_valeur_pourcent', 'evolution_part_population_agricole_valeur_pt_de_pourcentage'],
data=[['P-FR', 5, 5, 10.0, -5.0],
['C-1', np.nan, np.nan, np.nan, np.nan],
['C-2', 0, 0, 0.0, -15.0],
['C-3', 10, 10, 20.0, 10.0]
])
resultat_attendu = pd.DataFrame(
columns=['synthese_note','synthese_message'],
data=[[5, 'Population agricole <strong>en proportion proche de la moyenne française</strong> mais <strong>en déclin</strong>'],
[np.nan, 'Données non disponibles'],
[0, 'Population agricole <strong>en proportion plus faible que la moyenne française</strong> et <strong>en déclin</strong>'],
[10, 'Population agricole <strong>en proportion plus élevée que la moyenne française</strong> et <strong>en croissance</strong>']
]
).astype({'synthese_note': 'Int64'})
# when
df_resultat = ajouter_synthese_population_agricole(df_population_agricole)
# then
pd.testing.assert_series_equal(df_resultat['synthese_note'], resultat_attendu['synthese_note'], check_names=False)
pd.testing.assert_series_equal(df_resultat['synthese_message'], resultat_attendu['synthese_message'], check_names=False)
if __name__ == '__main__':
unittest.main()
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment