Graphiques budget

import plotly.io as pio

pio.renderers.default = "iframe"
# Activate multi-output in notebook
from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"
# import os

# For profiling of code
# import timeit
# import unittest

# tc = unittest.TestCase()
# import matplotlib as mpl


# from leximpact_common_python_libraries.config import Configuration
# from leximpact_socio_fisca_simu_etat.quantiles import SimulationError, quantile_to_df
from leximpact_socio_fisca_simu_etat.schema import (
    AllSimulationResult,
    OneSimulationResult,
    ReformeSocioFiscale,
)
from leximpact_socio_fisca_simu_etat.simu_budget_survey_scenario import (
    compute_all_simulation,
)

# import psutil
# import seaborn as sns
DEBUG : Unable to read env from /media/2To-nvme/dev/src/LEXIMPAC/.env but it could be OK. Error : [Errno 2] No such file or directory: '/media/2To-nvme/dev/src/LEXIMPAC/.env'
DEBUG : Using decouple.AutoConfig()
iaidrdi has been updated in leximpact-survey-scenario
plus_values_prelevement_forfaitaire_unique_ir has been updated in leximpact-survey-scenario
rfr_plus_values_hors_rni has been updated in leximpact-survey-scenario
rpns_imposables has been updated in leximpact-survey-scenario
rpns_autres_revenus has been updated in leximpact-survey-scenario
prelevement_forfaitaire_non_liberatoire has been updated in leximpact-survey-scenario
paje_naissance has been updated in leximpact-survey-scenario
reform_quantile_rfr = ReformeSocioFiscale(
    base=2023,
    plf=2024,
    amendement={
        "impot_revenu.bareme_ir_depuis_1945.bareme": {
            "scale": [
                {"rate": {"value": 0.0}, "threshold": {"value": 1}},
                {"rate": {"value": 0.11}, "threshold": {"value": 10_000}},
                {"rate": {"value": 0.30}, "threshold": {"value": 27_000}},
                {"rate": {"value": 0.41}, "threshold": {"value": 80_000}},
                {"rate": {"value": 0.45}, "threshold": {"value": 172_000}},
            ],
            "start": "2023-01-01",
            "type": "scale",
            "variable": "irpp_economique",
        }
    },
    output_variables=["rfr", "irpp"],
    quantile_nb=10,
    quantile_base_variable=["rfr"],
    quantile_compare_variables=[
        "irpp",
    ],
)
resultat_quantile_rfr = compute_all_simulation(reform_quantile_rfr)
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:17] reformParameters.amendement : {'impot_revenu.bareme_ir_depuis_1945.bareme': {'scale': [{'rate': {'value': 0.0}, 'threshold': {'value': 1}}, {'rate': {'value': 0.11}, 'threshold': {'value': 10000}}, {'rate': {'value': 0.3}, 'threshold': {'value': 27000}}, {'rate': {'value': 0.41}, 'threshold': {'value': 80000}}, {'rate': {'value': 0.45}, 'threshold': {'value': 172000}}], 'start': '2023-01-01', 'type': 'scale', 'variable': 'irpp_economique'}}
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:17] compute_reform - reformParameters : base=2023 plf=2024 amendement={'impot_revenu.bareme_ir_depuis_1945.bareme': {'scale': [{'rate': {'value': 0.0}, 'threshold': {'value': 1}}, {'rate': {'value': 0.11}, 'threshold': {'value': 10000}}, {'rate': {'value': 0.3}, 'threshold': {'value': 27000}}, {'rate': {'value': 0.41}, 'threshold': {'value': 80000}}, {'rate': {'value': 0.45}, 'threshold': {'value': 172000}}], 'start': '2023-01-01', 'type': 'scale', 'variable': 'irpp_economique'}} output_variables=['rfr', 'irpp'] quantile_nb=10 quantile_entity='foyer_fiscal' quantile_base_variable=['rfr'] quantile_compare_variables=['irpp']
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:17] compute_reform - annee_de_calcul : 2023
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:17] Il y a un amendement
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:20] create_survey_scenario - start
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:29] create_survey_scenario - done
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:29] Calcul de variable='rfr'
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:40] calculate_add : La somme de rfr pour 2023 est 1,140,464,791,873 pour les amendement_tax_benefit_system.get_variable(variable).entity.key='foyer_fiscal'
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:40] OpenFisca a retourné des foyer_fiscal pour rfr en 2023.
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:40] Calcul de variable='irpp'
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:41] calculate_add : La somme de irpp pour 2023 est -87,753,494,543 pour les amendement_tax_benefit_system.get_variable(variable).entity.key='foyer_fiscal'
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:41] OpenFisca a retourné des foyer_fiscal pour irpp en 2023.
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:42] compute_reform - Temps de traitement pour une simulation 24.866901353001595 secondes.
[leximpact_socio-fisca-simu-etat DEBUG @ 13:02:42] Temps de traitement total pour la simulation 24.86756323836744 secondes. Annee ERFS 2018 Annee TBS 2023
LeximpactErfsSurveyScenario : Using /home/jupyter-benoit/leximpact-socio-fiscal-simu-etat/deploy as config_dirpath
years_available=[2019] vs years=[2019, 2020, 2021, 2022, 2023]
WARNING: no data for 2020, will took 2019
WARNING: no data for 2021, will took 2019
WARNING: no data for 2022, will took 2019
WARNING: no data for 2023, will took 2019
Données du scénario : 
 {'input_data_table_by_entity_by_period': {2019: {'individu': 'individu_2019', 'famille': 'famille_2019', 'foyer_fiscal': 'foyer_fiscal_2019', 'menage': 'menage_2019', 'faoyer_fiscal': 'faoyer_fiscal_2019'}, 2020: {'individu': 'individu_2019', 'famille': 'famille_2019', 'foyer_fiscal': 'foyer_fiscal_2019', 'menage': 'menage_2019', 'faoyer_fiscal': 'faoyer_fiscal_2019'}, 2021: {'individu': 'individu_2019', 'famille': 'famille_2019', 'foyer_fiscal': 'foyer_fiscal_2019', 'menage': 'menage_2019', 'faoyer_fiscal': 'faoyer_fiscal_2019'}, 2022: {'individu': 'individu_2019', 'famille': 'famille_2019', 'foyer_fiscal': 'foyer_fiscal_2019', 'menage': 'menage_2019', 'faoyer_fiscal': 'faoyer_fiscal_2019'}, 2023: {'individu': 'individu_2019', 'famille': 'famille_2019', 'foyer_fiscal': 'foyer_fiscal_2019', 'menage': 'menage_2019', 'faoyer_fiscal': 'faoyer_fiscal_2019'}}, 'survey': 'leximpact_2019'}
baseline
plf
amendement
{'total': 33390851.038661957, 'non_zero_before': 33390851.038661957, 'non_zero_after': 33390851.038661957, 'above_after': 33390851.038661957, 'lower_after': 0.0, 'neutral': 0.0, 'tolerance_factor_used': 0.1, 'weight_factor': 1}
quantiles_baseline = [{'irpp_max': 1205.9132080078125, 'irpp_mean': 106.90776079980795, 'irpp_min': 0.0, 'irpp_sum': 357033036.8133356, 'rfr_max': 4930.01220703125, 'rfr_mean': 1399.2841849688537, 'rfr_min': 0.0, 'rfr_sum': 4673100233.198416, 'count': 3339636.2821769714, 'quantile_num': 1, 'fraction': 0.1}, {'irpp_max': 787.8517456054688, 'irpp_mean': 132.23992868572972, 'irpp_min': 0.0, 'irpp_sum': 441519184.4162087, 'rfr_max': 11357.0029296875, 'rfr_mean': 8376.618875474238, 'rfr_min': 4930.9990234375, 'rfr_sum': 27967634063.49228, 'count': 3338773.612510681, 'quantile_num': 2, 'fraction': 0.2}, {'irpp_max': 694.7799072265625, 'irpp_mean': 176.71526607597514, 'irpp_min': -95.0, 'irpp_sum': 590097695.0551947, 'rfr_max': 16581.705078125, 'rfr_mean': 13943.609470937565, 'rfr_min': 11357.2294921875, 'rfr_sum': 46561295989.06605, 'count': 3339257.0328445435, 'quantile_num': 3, 'fraction': 0.3}, {'irpp_max': 646.0764770507812, 'irpp_mean': -27.312243370198726, 'irpp_min': -742.0, 'irpp_sum': -91165366.36509918, 'rfr_max': 20640.91796875, 'rfr_mean': 18600.66068102042, 'rfr_min': 16582.0, 'rfr_sum': 62087028979.40615, 'count': 3337893.747116089, 'quantile_num': 4, 'fraction': 0.4}, {'irpp_max': 732.6367797851562, 'irpp_mean': -346.4191971591506, 'irpp_min': -1507.0, 'irpp_sum': -1156896952.5983489, 'rfr_max': 25428.14453125, 'rfr_mean': 22909.216515526234, 'rfr_min': 20641.0, 'rfr_sum': 76507315387.1778, 'count': 3339586.726387024, 'quantile_num': 5, 'fraction': 0.5}, {'irpp_max': 705.9767456054688, 'irpp_mean': -771.3320849231815, 'irpp_min': -3124.0, 'irpp_sum': -2575853166.281143, 'rfr_max': 31768.51171875, 'rfr_mean': 28596.52621441492, 'rfr_min': 25428.701171875, 'rfr_sum': 95497716267.53784, 'count': 3339486.605873108, 'quantile_num': 6, 'fraction': 0.6}, {'irpp_max': 626.471435546875, 'irpp_mean': -1544.5756883978845, 'irpp_min': -5407.0, 'irpp_sum': -5157190056.149861, 'rfr_max': 39383.71875, 'rfr_mean': 35431.90982272599, 'rfr_min': 31769.994140625, 'rfr_sum': 118303748000.65468, 'count': 3338904.072418213, 'quantile_num': 7, 'fraction': 0.7}, {'irpp_max': 639.8275146484375, 'irpp_mean': -2696.538456758809, 'irpp_min': -8422.0, 'irpp_sum': -9003908666.682943, 'rfr_max': 49484.77734375, 'rfr_mean': 44133.02085030298, 'rfr_min': 39384.33203125, 'rfr_sum': 147362885897.26746, 'count': 3339061.842086792, 'quantile_num': 8, 'fraction': 0.8}, {'irpp_max': 2021.9317626953125, 'irpp_mean': -4744.9083619954945, 'irpp_min': -13666.0, 'irpp_sum': -15844180696.774479, 'rfr_max': 66955.0859375, 'rfr_mean': 57118.00797096622, 'rfr_min': 49487.0, 'rfr_sum': 190728243896.19965, 'count': 3339196.3528060913, 'quantile_num': 9, 'fraction': 0.9}, {'irpp_max': 15176.8203125, 'irpp_mean': -15500.926367717611, 'irpp_min': -968522.0, 'irpp_sum': -51758442041.398994, 'rfr_max': 2104588.0, 'rfr_mean': 111252.15603135424, 'rfr_min': 66956.421875, 'rfr_sum': 371477041650.98755, 'count': 3339054.764442444, 'quantile_num': 10, 'fraction': 1.0}]
reform_quantile_rfr
ReformeSocioFiscale(base=2023, plf=2024, amendement={'impot_revenu.bareme_ir_depuis_1945.bareme': {'scale': [{'rate': {'value': 0.0}, 'threshold': {'value': 1}}, {'rate': {'value': 0.11}, 'threshold': {'value': 10000}}, {'rate': {'value': 0.3}, 'threshold': {'value': 27000}}, {'rate': {'value': 0.41}, 'threshold': {'value': 80000}}, {'rate': {'value': 0.45}, 'threshold': {'value': 172000}}], 'start': '2023-01-01', 'type': 'scale', 'variable': 'irpp_economique'}}, output_variables=['rfr', 'irpp'], quantile_nb=10, quantile_entity='foyer_fiscal', quantile_base_variable=['rfr'], quantile_compare_variables=['irpp'])
resultat_quantile_rfr.result["base"].state_budget
resultat_quantile_rfr.result["plf"].state_budget
resultat_quantile_rfr.result["amendement"].state_budget
{'rfr': 1141166010364.9878, 'irpp': -84198987029.96613}
{'rfr': 1140464791872.9365, 'irpp': -81542654690.9178}
{'rfr': 1140464791872.9365, 'irpp': -87753494542.6839}
resultat_quantile_rfr.result["base"].quantiles[5]
{'irpp_max': 705.9767456054688,
 'irpp_mean': -771.3320849231815,
 'irpp_min': -3124.0,
 'irpp_sum': -2575853166.281143,
 'rfr_max': 31768.51171875,
 'rfr_mean': 28596.52621441492,
 'rfr_min': 25428.701171875,
 'rfr_sum': 95497716267.53784,
 'count': 3339486.605873108,
 'quantile_num': 6.0,
 'fraction': 0.6}

quantile_to_df

 quantile_to_df (resultat_quantile, variable, function='sum')
df_sum = quantile_to_df(resultat_quantile_rfr, "irpp")
df_sum
irpp_max irpp_mean irpp_min irpp_sum rfr_max rfr_mean rfr_min rfr_sum count quantile_num fraction plf amendement base
0 1205.913208 106.907761 0.0 3.570330e+08 4.930012e+03 1399.284185 0.000000 4.673100e+09 3.339636e+06 1.0 0.1 3.570330e+08 3.570330e+08 3.570330e+08
1 787.851746 132.239929 0.0 4.415192e+08 1.135700e+04 8376.618875 4930.999023 2.796763e+10 3.338774e+06 2.0 0.2 4.415192e+08 4.415192e+08 4.415192e+08
2 694.779907 176.715266 -95.0 5.900977e+08 1.658171e+04 13943.609471 11357.229492 4.656130e+10 3.339257e+06 3.0 0.3 5.969468e+08 5.487708e+08 5.900977e+08
3 646.076477 -27.312243 -742.0 -9.116537e+07 2.064092e+04 18600.660681 16582.000000 6.208703e+10 3.337894e+06 4.0 0.4 1.653979e+07 -3.102050e+08 -9.116537e+07
4 732.636780 -346.419197 -1507.0 -1.156897e+09 2.542814e+04 22909.216516 20641.000000 7.650732e+10 3.339587e+06 5.0 0.5 -1.039735e+09 -1.400810e+09 -1.156897e+09
5 705.976746 -771.332085 -3124.0 -2.575853e+09 3.176851e+04 28596.526214 25428.701172 9.549772e+10 3.339487e+06 6.0 0.6 -2.367498e+09 -2.953175e+09 -2.575853e+09
6 626.471436 -1544.575688 -5407.0 -5.157190e+09 3.938372e+04 35431.909823 31769.994141 1.183037e+11 3.338904e+06 7.0 0.7 -4.831190e+09 -5.729429e+09 -5.157190e+09
7 639.827515 -2696.538457 -8422.0 -9.003909e+09 4.948478e+04 44133.020850 39384.332031 1.473629e+11 3.339062e+06 8.0 0.8 -8.606449e+09 -9.657204e+09 -9.003909e+09
8 2021.931763 -4744.908362 -13666.0 -1.584418e+10 6.695509e+04 57118.007971 49487.000000 1.907282e+11 3.339196e+06 9.0 0.9 -1.535020e+10 -1.660992e+10 -1.584418e+10
9 15176.820312 -15500.926368 -968522.0 -5.175844e+10 2.104588e+06 111252.156031 66956.421875 3.714770e+11 3.339055e+06 10.0 1.0 -5.075962e+10 -5.244008e+10 -5.175844e+10
df_mean = quantile_to_df(resultat_quantile_rfr, "irpp", function="mean")
df_ratio = quantile_to_df(resultat_quantile_rfr, "irpp", function="ratio")

plot_quantile_df

 plot_quantile_df (df:pandas.core.frame.DataFrame, mode:str='delta',
                   title:str='Répartition par dixième',
                   xtitle:str='Dixièmes', ytitle:str=None)

Graph du montant de l’impôt

plot_quantile_df(df_sum, mode="old")
plot_quantile_df(df_sum)

Graph de la moyenne de l’impôt

plot_quantile_df(
    df_mean,
    mode="old",
    title="Montants moyens de l'impôt",
    ytitle="Contributions moyennes à l'impôt",
)
plot_quantile_df(
    df_mean,
    title="Montants moyens de l'impôt",
    ytitle="Ecart des contributions moyennes à l'impôt",
)

Graph du ratio entre la moyenne de l’impôt et le RFR

plot_quantile_df(
    df_ratio,
    mode="old",
    title="Pourcentage entre le montant moyen de l'impôt et le RFR",
    ytitle="Pourcentage",
)
plot_quantile_df(
    df_ratio,
    mode="delta",
    title="Pourcentage entre le montant moyen de l'impôt et le RFR",
    ytitle="Ecart en point de pourcentage",
)