From 02e27f721795df60e50b9bd8e2aa0f97d7a62248 Mon Sep 17 00:00:00 2001 From: clallemand <=> Date: Mon, 24 Mar 2025 14:26:19 +0100 Subject: [PATCH] fix pre-commit --- .pre-commit-config.yaml | 6 +- .../analyse/test_cas_types_cotisations.ipynb | 24 +- .../test_cas_types_cotisations_boucle.ipynb | 21 +- .../cas_type_prestations_familiales.ipynb | 40 +- .../00_generate_fake_data.ipynb | 968 ------------------ .../00_tests_avant_casd.ipynb | 234 ----- .../20_Convert_SAS.ipynb | 291 ------ .../30a_Agregats_POTE-Quantiles.ipynb | 381 ------- .../30b_Copules_POTE.ipynb | 714 ------------- .../40_Verifications.ipynb | 208 ---- .../Colonnes_POTE_2019.xlsx | Bin 140720 -> 0 bytes .../_test_install.ipynb | 497 --------- .../_test_spark.ipynb | 156 --- .../_test_vispy.ipynb | 148 --- .../fake_pote_light.parquet | Bin 58985 -> 0 bytes .../20_Convert_SAS_DADS.ipynb | 63 +- .../30_DADS-Quantiles.ipynb | 13 +- .../30a_Agregats_POTE-PER.ipynb | 8 +- .../40_categorical_bi-variate.ipynb | 4 +- notebooks/memos/memo_aah.ipynb | 3 +- .../memos/memo_cotisations_sociales_dash.py | 2 +- poetry.lock | 4 +- 22 files changed, 98 insertions(+), 3687 deletions(-) delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/00_generate_fake_data.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/00_tests_avant_casd.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/20_Convert_SAS.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/30a_Agregats_POTE-Quantiles.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/30b_Copules_POTE.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/40_Verifications.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/Colonnes_POTE_2019.xlsx delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/_test_install.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/_test_spark.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/_test_vispy.ipynb delete mode 100644 notebooks/code_CASD/extractions_base_des_impots/fake_pote_light.parquet diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2e8040d3..960d2424 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,18 +5,18 @@ repos: - id: nbdev_clean - repo: https://github.com/charliermarsh/ruff-pre-commit # Ruff version. - rev: 'v0.6.9' + rev: 'v0.11.2' hooks: - id: ruff exclude: ^(notebooks/analyse/|notebooks/code_CASD/|notebooks/analyses/) - repo: https://github.com/psf/black - rev: 24.10.0 + rev: 25.1.0 hooks: - id: black args: [--safe] # Check notebook formating - repo: https://github.com/nbQA-dev/nbQA - rev: 1.8.7 + rev: 1.9.1 hooks: - id: nbqa-black - id: nbqa-pyupgrade diff --git a/notebooks/analyse/test_cas_types_cotisations.ipynb b/notebooks/analyse/test_cas_types_cotisations.ipynb index 3a55caea..210360eb 100644 --- a/notebooks/analyse/test_cas_types_cotisations.ipynb +++ b/notebooks/analyse/test_cas_types_cotisations.ipynb @@ -550,10 +550,10 @@ "metadata": {}, "outputs": [], "source": [ - "# cotisations non nulles\n", - "selection = copy.deepcopy(donnees_01)\n", - "donnees_check = selection.loc[:, selection.any()]\n", - "donnees_check.columns" + "# # cotisations non nulles\n", + "# selection = copy.deepcopy(donnees_01)\n", + "# donnees_check = selection.loc[:, selection.any()]\n", + "# donnees_check.columns" ] }, { @@ -562,7 +562,7 @@ "metadata": {}, "outputs": [], "source": [ - "dessiner_graphique(donnees=donnees_07, revenu=\"salaire_de_base\", affichage_en_taux=True)" + "# dessiner_graphique(donnees=donnees_07, revenu=\"salaire_de_base\", affichage_en_taux=True)" ] }, { @@ -571,12 +571,12 @@ "metadata": {}, "outputs": [], "source": [ - "comparer_donnees(\n", - " donnees_A=donnees_01,\n", - " donnees_B=donnees_02,\n", - " revenu=\"salaire_de_base\",\n", - " affichage_en_taux=False,\n", - ")" + "# comparer_donnees(\n", + "# donnees_A=donnees_01,\n", + "# donnees_B=donnees_02,\n", + "# revenu=\"salaire_de_base\",\n", + "# affichage_en_taux=False,\n", + "# )" ] }, { @@ -592,7 +592,7 @@ "metadata": {}, "outputs": [], "source": [ - "exporter(donnees_C)" + "# exporter(donnees_C)" ] }, { diff --git a/notebooks/analyse/test_cas_types_cotisations_boucle.ipynb b/notebooks/analyse/test_cas_types_cotisations_boucle.ipynb index 19a45d19..41939e53 100644 --- a/notebooks/analyse/test_cas_types_cotisations_boucle.ipynb +++ b/notebooks/analyse/test_cas_types_cotisations_boucle.ipynb @@ -14,7 +14,6 @@ "import copy\n", "import plotly.graph_objects as go\n", "from datetime import datetime\n", - "import copy\n", "\n", "from openfisca_core.simulation_builder import SimulationBuilder\n", "from leximpact_survey_scenario.leximpact_tax_and_benefit_system import leximpact_tbs" @@ -555,9 +554,9 @@ "metadata": {}, "outputs": [], "source": [ - "dessiner_graphique(\n", - " donnees=donnees_03, revenu=\"traitement_indiciaire_brut\", affichage_en_taux=True\n", - ")" + "# dessiner_graphique(\n", + "# donnees=donnees_03, revenu=\"traitement_indiciaire_brut\", affichage_en_taux=True\n", + "# )" ] }, { @@ -2000,12 +1999,12 @@ } ], "source": [ - "comparer_donnees(\n", - " donnees_A=donnees_03,\n", - " donnees_B=donnees_05,\n", - " revenu=\"traitement_indiciaire_brut\",\n", - " affichage_en_taux=True,\n", - ")" + "# comparer_donnees(\n", + "# donnees_A=donnees_03,\n", + "# donnees_B=donnees_05,\n", + "# revenu=\"traitement_indiciaire_brut\",\n", + "# affichage_en_taux=True,\n", + "# )" ] }, { @@ -2021,7 +2020,7 @@ "metadata": {}, "outputs": [], "source": [ - "exporter(donnees_C)" + "# exporter(donnees_C)" ] }, { diff --git a/notebooks/analyses/graphiques_cas_type/cas_type_prestations_familiales.ipynb b/notebooks/analyses/graphiques_cas_type/cas_type_prestations_familiales.ipynb index 36302a72..4242fd32 100644 --- a/notebooks/analyses/graphiques_cas_type/cas_type_prestations_familiales.ipynb +++ b/notebooks/analyses/graphiques_cas_type/cas_type_prestations_familiales.ipynb @@ -9,26 +9,27 @@ "name": "stderr", "output_type": "stream", "text": [ + "revenus_capital has been updated in leximpact-survey-scenario\n", "iaidrdi has been updated in leximpact-survey-scenario\n", - "plus_values_prelevement_forfaitaire_unique_ir has been updated in leximpact-survey-scenario\n", "rfr_plus_values_hors_rni has been updated in leximpact-survey-scenario\n", + "assiette_csg_plus_values has been updated in leximpact-survey-scenario\n", "rpns_imposables has been updated in leximpact-survey-scenario\n", "rpns_autres_revenus has been updated in leximpact-survey-scenario\n", - "prelevement_forfaitaire_non_liberatoire has been updated in leximpact-survey-scenario\n", - "paje_naissance has been updated in leximpact-survey-scenario\n" + "paje_naissance has been updated in leximpact-survey-scenario\n", + "allegement_general_mode_recouvrement has been updated in leximpact-survey-scenario\n" ] }, { "ename": "ImportError", - "evalue": "cannot import name 'smic_annuel_brut_by_year' from 'openfisca_france_data.erfs_fpr.input_data_builder.step_03_variables_individuelles' (/home/cgl/leximpact/leximpact-survey-scenario/.venv/lib/python3.10/site-packages/openfisca_france_data/erfs_fpr/input_data_builder/step_03_variables_individuelles.py)", + "evalue": "cannot import name 'smic_annuel_brut_by_year' from 'openfisca_france_data.erfs_fpr.input_data_builder.step_03_variables_individuelles' (/home/cgl/leximpact/simulateur_socio_fiscal/budget/leximpact-prepare-data/.venv/lib/python3.11/site-packages/openfisca_france_data/erfs_fpr/input_data_builder/step_03_variables_individuelles.py)", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[2], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mleximpact_survey_scenario\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mgraphiques_cas_type\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdecomposition\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (decomposition_data, decompo_prestations_familiales)\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mplotly\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mgraph_objects\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mgo\u001b[39;00m\n", - "File \u001b[0;32m~/leximpact/leximpact-survey-scenario/leximpact_survey_scenario/graphiques_cas_type/decomposition.py:3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mleximpact_survey_scenario\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mleximpact_tax_and_benefit_system\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m leximpact_tbs\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mleximpact_survey_scenario\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mgraphiques_cas_type\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcas_type_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 4\u001b[0m calculate,\n\u001b[1;32m 5\u001b[0m create_scenario_inferieur_smic,\n\u001b[1;32m 6\u001b[0m create_scenario_superieur_smic,\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# smic_annuel_brut_by_year,\u001b[39;00m\n\u001b[1;32m 8\u001b[0m )\n\u001b[1;32m 10\u001b[0m decompo_revenu_disponible \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 11\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrevenu_disponible\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 12\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprestations_sociales\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcotisations_salariales\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 20\u001b[0m ]\n\u001b[1;32m 22\u001b[0m decompo_ir \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 23\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mirpp\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 24\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontribution_exceptionnelle_hauts_revenus\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrni\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 31\u001b[0m ]\n", - "File \u001b[0;32m~/leximpact/leximpact-survey-scenario/leximpact_survey_scenario/graphiques_cas_type/cas_type_utils.py:12\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mopenfisca_core\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m periods\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mopenfisca_core\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrates\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m marginal_rate, average_rate\n\u001b[0;32m---> 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mopenfisca_france_data\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01merfs_fpr\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minput_data_builder\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstep_03_variables_individuelles\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 13\u001b[0m smic_annuel_net_by_year,\n\u001b[1;32m 14\u001b[0m smic_annuel_brut_by_year,\n\u001b[1;32m 15\u001b[0m )\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtaxipp\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mgeneral_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m to_percent_round_formatter\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtaxipp\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtest_case\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m base\n", - "\u001b[0;31mImportError\u001b[0m: cannot import name 'smic_annuel_brut_by_year' from 'openfisca_france_data.erfs_fpr.input_data_builder.step_03_variables_individuelles' (/home/cgl/leximpact/leximpact-survey-scenario/.venv/lib/python3.10/site-packages/openfisca_france_data/erfs_fpr/input_data_builder/step_03_variables_individuelles.py)" + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mImportError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mleximpact_survey_scenario\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mgraphiques_cas_type\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mdecomposition\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[32m 2\u001b[39m decomposition_data,\n\u001b[32m 3\u001b[39m decompo_prestations_familiales,\n\u001b[32m 4\u001b[39m )\n\u001b[32m 7\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mplotly\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mgraph_objects\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mgo\u001b[39;00m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/leximpact/simulateur_socio_fiscal/budget/leximpact-prepare-data/.venv/lib/python3.11/site-packages/leximpact_survey_scenario/graphiques_cas_type/decomposition.py:3\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mleximpact_survey_scenario\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mleximpact_survey_scenario\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m leximpact_tbs\n\u001b[32m----> \u001b[39m\u001b[32m3\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mleximpact_survey_scenario\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mgraphiques_cas_type\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mcas_type_utils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[32m 4\u001b[39m calculate,\n\u001b[32m 5\u001b[39m create_scenario_inferieur_smic,\n\u001b[32m 6\u001b[39m create_scenario_superieur_smic,\n\u001b[32m 7\u001b[39m \u001b[38;5;66;03m# smic_annuel_brut_by_year,\u001b[39;00m\n\u001b[32m 8\u001b[39m )\n\u001b[32m 10\u001b[39m decompo_revenu_disponible = [\n\u001b[32m 11\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mrevenu_disponible\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 12\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mprestations_sociales\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 19\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mcotisations_salariales\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 20\u001b[39m ]\n\u001b[32m 22\u001b[39m decompo_ir = [\n\u001b[32m 23\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mirpp\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 24\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mcontribution_exceptionnelle_hauts_revenus\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 30\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mrni\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 31\u001b[39m ]\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/leximpact/simulateur_socio_fiscal/budget/leximpact-prepare-data/.venv/lib/python3.11/site-packages/leximpact_survey_scenario/graphiques_cas_type/cas_type_utils.py:12\u001b[39m\n\u001b[32m 10\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mopenfisca_core\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m periods\n\u001b[32m 11\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mopenfisca_core\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mrates\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m marginal_rate, average_rate\n\u001b[32m---> \u001b[39m\u001b[32m12\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mopenfisca_france_data\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01merfs_fpr\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01minput_data_builder\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mstep_03_variables_individuelles\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[32m 13\u001b[39m smic_annuel_net_by_year,\n\u001b[32m 14\u001b[39m smic_annuel_brut_by_year,\n\u001b[32m 15\u001b[39m )\n\u001b[32m 16\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtaxipp\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mgeneral_utils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m to_percent_round_formatter\n\u001b[32m 17\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtaxipp\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mtest_case\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m base\n", + "\u001b[31mImportError\u001b[39m: cannot import name 'smic_annuel_brut_by_year' from 'openfisca_france_data.erfs_fpr.input_data_builder.step_03_variables_individuelles' (/home/cgl/leximpact/simulateur_socio_fiscal/budget/leximpact-prepare-data/.venv/lib/python3.11/site-packages/openfisca_france_data/erfs_fpr/input_data_builder/step_03_variables_individuelles.py)" ] } ], @@ -49,12 +50,13 @@ "outputs": [], "source": [ "year = 2023\n", - "smic = (\n", - " tax_and_benefit_system.parameters(\n", - " year\n", - " ).marche_travail.salaire_minimum.smic.smic_b_mensuel\n", - " * 12\n", - ")" + "smic = 12\n", + "# smic = (\n", + "# tax_and_benefit_system.parameters(\n", + "# year\n", + "# ).marche_travail.salaire_minimum.smic.smic_b_mensuel\n", + "# * 12\n", + "# )" ] }, { @@ -96818,7 +96820,7 @@ "\n", "# fig_paje.show()\n", "# fig_ars.show()\n", - "fig_af.show()\n", + "# fig_af.show()\n", "# fig_cf.show()" ] }, @@ -118951,9 +118953,9 @@ ], "metadata": { "kernelspec": { - "display_name": "leximpact-survey-scenario-kernel", + "display_name": "python3", "language": "python", - "name": "leximpact-survey-scenario-kernel" + "name": "python3" } }, "nbformat": 4, diff --git a/notebooks/code_CASD/extractions_base_des_impots/00_generate_fake_data.ipynb b/notebooks/code_CASD/extractions_base_des_impots/00_generate_fake_data.ipynb deleted file mode 100644 index ca58c33a..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/00_generate_fake_data.ipynb +++ /dev/null @@ -1,968 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "western-orientation", - "metadata": {}, - "source": [ - "# Generate a fake POTE input file\n", - "\n", - "The goal is to be able to test CASD script locally.\n", - "\n", - "Objectif : nous voulons des revenus entre 0 et 300 millions avec beaucoup de personnes vers 0 et un petit peut vers le million.\n", - "\n", - "La distribution de Pareto peut nous donner cela.\n", - "\n", - "TODO:\n", - "- Actuellement tous les revenus sont indépendants, il faudrait plutôt tout calculer à partir du RFR (avec un random)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "downtown-player", - "metadata": {}, - "outputs": [], - "source": [ - "from leximpact_common_python_libraries.config import Configuration" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "72ee9624", - "metadata": {}, - "outputs": [], - "source": [ - "config = Configuration(project_folder=\"leximpact-prepare-data\")\n", - "OUT_PATH = config.get(\"FAKE_DATA\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "mental-composition", - "metadata": {}, - "outputs": [], - "source": [ - "# Activate multi-output in notebook\n", - "from IPython.core.interactiveshell import InteractiveShell\n", - "\n", - "InteractiveShell.ast_node_interactivity = \"all\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "enhanced-shopping", - "metadata": {}, - "outputs": [], - "source": [ - "# import numpy\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import vaex\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "hungarian-freeze", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Python 3.10.12\n" - ] - } - ], - "source": [ - "!python --version" - ] - }, - { - "cell_type": "markdown", - "id": "inside-complex", - "metadata": {}, - "source": [ - "## Utilisation de Pareto généralisé\n", - "Voir la doc de scipy : https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.genpareto.html" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "unlike-harmony", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mean=array(1.11111111) var=array(1.54320988) skew=array(2.81105689) kurt=array(14.82857143)\n", - "x.shape=(100,)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAydUlEQVR4nO3de3hU5bn+8XtymIQAGQ6BHCAQUASRQ2gwMVKr3USDtbRWuzdFd0GKWBWLmHqiSqJIjVpBPFBTUVD7E6F2V+suFmujYFWUAtKNiigIBoGcQJIQYJLMrN8fKSMJM5MMmVlrkvl+rmsuyXrXmnkyJszN875rLZthGIYAAAAsEmV1AQAAILIRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAloqxuoD2cLvd2r9/v3r27CmbzWZ1OQAAoB0Mw1BdXZ3S0tIUFeW7/9Epwsj+/fuVnp5udRkAAOA07N27VwMHDvQ53inCSM+ePSU1fzOJiYkWVwMAANqjtrZW6enpns9xXzpFGDkxNZOYmEgYAQCgk2lriQULWAEAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALBVwGHn77bc1efJkpaWlyWaz6ZVXXmnzmHXr1ulb3/qW4uLidOaZZ+rZZ589jVIBAEBXFHAYqa+v19ixY7V06dJ27b97925ddtll+u53v6utW7dq7ty5uvbaa/X6668HXCwAAOh6Ar7o2aWXXqpLL7203fuXlJRoyJAhWrRokSTp7LPP1jvvvKNHHnlE+fn5gb48AADoYkK+ZmTDhg3Ky8trsS0/P18bNmzweYzT6VRtbW2LBwAACK2MjAwtWbLE83V5ebkuvvhide/eXb169QrZ64Y8jJSXlys5ObnFtuTkZNXW1urYsWNejykuLpbD4fA8gnqTPMOQjh+XDh+WKiqkL7+UduyQ/vUvafv24L0OAAAB2LNnj2w2m7Zu3Wp1KR6PPPKIDhw4oK1bt+qzzz4L2euE5b1p5s2bp4KCAs/XJ260ExTl5dI993gfGzxYOvvs4LwOAAD/1tjYqNjYWKvLCNiuXbuUlZWlYcOGhfR1Qh5GUlJSVFFR0WJbRUWFEhMT1a1bN6/HxMXFKS4uLjQFxcf7Hjt+PDSvCQDhas4cyeWytoboaOmxx/zuUldXp+uvv16vvPKKEhMTdfvtt+vPf/6zMjMzPdMKTqdTd911l1588UUdPnxYo0aN0oMPPqiLLrpIkvTss89q7ty5Wr16tebOnau9e/fq29/+tlasWKHU1FRJ0jXXXKPDhw9r3LhxeuKJJ+R0OnXVVVfpsccek91ulyStXbtWCxcu1EcffaTo6Gjl5ubq0Ucf1RlnnCGpucMxZMgQrVq1Sr/97W/1wQcfqKSkRNdcc42efvppLVq0SLt371ZGRobmzJmjG2+8UZI0ZMgQSdK4ceMkSRdeeKHWrVsnt9uthQsX6qmnnlJVVZXOPvtsPfDAA5o0aZLP9+uiiy7SqFGjJEm///3vFRsbqxtuuEELFizw3LSusrJSM2fO1N///nelpKRo4cKFLZ4jIyNDX375pSTp+eef1/Tp00N2NmzIw0hubq5ee+21FtveeOMN5ebmhvqlvfMXcpxO8+oAgHDgcklNTVZX0aaCggK9++67evXVV5WcnKzCwkJt2bJFmZmZnn1uuukmffLJJ1q1apXS0tL08ssva9KkSdq2bZvnX/ZHjx7Vww8/rN///veKiorSf//3f+vWW2/VCy+84Hme0tJSxcfHa926ddqzZ49mzJihvn376te//rWk5rNKCwoKNGbMGB05ckSFhYX60Y9+pK1btyoq6pvVD3feeacWLVqkcePGKT4+Xi+88IIKCwv1xBNPaNy4cfrwww81a9Ysde/eXdOnT9fGjRuVnZ2tv//97zrnnHM84efRRx/VokWL9Lvf/U7jxo3T8uXL9YMf/EAff/yx347Fc889p5kzZ2rjxo3atGmTrrvuOg0aNEizZs2S1By89u/fr7feekuxsbGaM2eOKisrPcf/85//1LRp05SYmKhHH33UZwMhGAIOI0eOHNHOnTs9X+/evVtbt25Vnz59NGjQIM2bN0/79u3T888/L0m6/vrr9cQTT+j222/Xz372M7355pv6wx/+oDVr1gTvuwgEnREA6FTq6ur03HPPaeXKlZo4caIkacWKFUpLS/PsU1ZWphUrVqisrMyz/dZbb9XatWu1YsUK3X///ZKap0tKSko8XYybbrpJCxYsaPF6drtdy5cvV0JCgs455xwtWLBAt912m+677z5FRUXpyiuvbLH/8uXL1a9fP33yySeeboQkzZ07V1dccYXn66KiIi1atMizbciQIfrkk0/0u9/9TtOnT1e/fv0kSX379lVKSornuIcfflh33HGHfvKTn0iSHnzwQb311ltasmSJ38tspKen65FHHpHNZtPw4cO1bds2PfLII5o1a5Y+++wz/fWvf9XGjRt17rnnSpKeeeYZnX3SUoV+/fopLi5O3bp1a1FPKAS8gHXTpk0aN26cp41UUFCgcePGqbCwUJJ04MABlZWVefYfMmSI1qxZozfeeENjx47VokWL9PTTT1t3Wm9UlORr3s7pbF7gCgAIG1988YUaGxuVnZ3t2eZwODR8+HDP19u2bZPL5dJZZ52lHj16eB7r16/Xrl27PPslJCR4gogkpaamtugGSNLYsWOVkJDg+To3N1dHjhzR3r17JUmff/65pk6dqqFDhyoxMVEZGRmS1OKzT5LGjx/v+XN9fb127dqlmTNntqhv4cKFLeprrba2Vvv379eECRNabJ8wYYK2t3HSxXnnneeZkjnxfXz++edyuVzavn27YmJilJWV5RkfMWJESM+Y8SfgzshFF10kw88Htrf5pIsuukgffvhhoC8VOvHxUmPjqdsNQ2po8D+VAwAIO0eOHFF0dLQ2b96s6OjoFmM9evTw/Ln1IlKbzeb3M82byZMna/DgwVq2bJnS0tLkdrs1atQoNTQ0tNive/fuLeqTpGXLliknJ6fFfq3rjUSReW8apmoAoNMYOnSoYmNj9c9//tOzraampsWppuPGjZPL5VJlZaXOPPPMFo9Apxj+9a9/tbj0xPvvv68ePXooPT1dBw8e1I4dO3T33Xdr4sSJOvvss/X111+3+ZzJyclKS0vTF198cUp9Jxaunlgj4jppQXFiYqLS0tL07rvvtni+d999VyNHjvT7mh988EGLr99//30NGzZM0dHRGjFihJqamrR582bP+I4dO3T48OE2v5dQCMtTe0OurTDicJhXCwBYKRz+Vd5GDT179tT06dN12223qU+fPurfv7+KiooUFRXlmYY466yzdPXVV2vatGmeRaNVVVUqLS3VmDFjdNlll7W7nIaGBs2cOVN333239uzZo6KiIt10002KiopS79691bdvXz311FNKTU1VWVmZ7rzzznY977333qs5c+bI4XBo0qRJcjqd2rRpk77++msVFBSof//+6tatm9auXauBAwcqPj5eDodDt912m4qKinTGGWcoMzNTK1as0NatW1ssuvWmrKxMBQUF+vnPf64tW7bo8ccf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fKkaBg+RbGFwMd+ePa2uAABwGgL+BFm9erUKCgpUVFSkLVu2aOzYscrPz1dlZaXX/d977z1NnTpVM2fO1IcffqjLL79cl19+uT766KMOFw8L2WxqTBuouon5qr7hZh0oul+Hpl+rIxd8V40DB1kTTggjANApBXw2TU5Ojs4991w98cQTkiS326309HT94he/0J133nnK/lOmTFF9fb3+8pe/eLadd955yszMVElJSbtek7NpOh9bQ4Ni9+1V7Fd7Zf+qTLH79irmYHXI7gZs2O06sOChoD8v10cBgNMXkrNpGhoatHnzZs2bN8+zLSoqSnl5edqwYYPXYzZs2KCCgoIW2/Lz8/XKK6/4fB2n0ymn0+n5uqamOTDU1tYGUm67HKkL/nPi35L6NT8yvyVJsjU0KqaqXDGVFYqpqlRMVZViqysV/fXXktwdeilX9x4h+X9ZW9vxOxYDQKQ68bndVt8joDBSXV0tl8ul5OTkFtuTk5P16aefej2mvLzc6/7l5eU+X6e4uFj33nvvKdvT09MDKReR5qknrK4AAOBFXV2dHA7fneawPJtm3rx5Lbopbrdbhw4dUt++fWXzce+T01FbW6v09HTt3bs36NM/8I/33jq899bi/bcO7735DMNQXV2d0tLS/O4XUBhJSkpSdHS0KioqWmyvqKhQSor328qnpKQEtL8kxcXFKS4ursW2Xr16BVJqQBITE/nBtAjvvXV4763F+28d3ntz+euInBDQKQ92u11ZWVkqLS31bHO73SotLVVubq7XY3Jzc1vsL0lvvPGGz/0BAEBkCXiapqCgQNOnT9f48eOVnZ2tJUuWqL6+XjNmzJAkTZs2TQMGDFBxcbEk6eabb9aFF16oRYsW6bLLLtOqVau0adMmPfXUU8H9TgAAQKcUcBiZMmWKqqqqVFhYqPLycmVmZmrt2rWeRaplZWWKivqm4XL++edr5cqVuvvuu/WrX/1Kw4YN0yuvvKJRo0YF77s4TXFxcSoqKjplSgihx3tvHd57a/H+W4f3Pnx1irv2AgCArisMruENAAAiGWEEAABYijACAAAsRRgBAACWiugwsnTpUmVkZCg+Pl45OTnauHGj1SV1effcc49sNluLx4gRI6wuq0t6++23NXnyZKWlpclms51yPyjDMFRYWKjU1FR169ZNeXl5+vzzz60ptotp672/5pprTvk9mDRpkjXFdjHFxcU699xz1bNnT/Xv31+XX365duzY0WKf48ePa/bs2erbt6969OihK6+88pSLc8JcERtGVq9erYKCAhUVFWnLli0aO3as8vPzVVlZaXVpXd4555yjAwcOeB7vvPOO1SV1SfX19Ro7dqyWLl3qdfyhhx7SY489ppKSEn3wwQfq3r278vPzdfz4cZMr7Xraeu8ladKkSS1+D1588UUTK+y61q9fr9mzZ+v999/XG2+8ocbGRl1yySWqr6/37HPLLbfof//3f/XSSy9p/fr12r9/v6644goLq4aMCJWdnW3Mnj3b87XL5TLS0tKM4uJiC6vq+oqKioyxY8daXUbEkWS8/PLLnq/dbreRkpJi/OY3v/FsO3z4sBEXF2e8+OKLFlTYdbV+7w3DMKZPn2788Ic/tKSeSFNZWWlIMtavX28YRvPPeWxsrPHSSy959tm+fbshydiwYYNVZUa8iOyMNDQ0aPPmzcrLy/Nsi4qKUl5enjZs2GBhZZHh888/V1pamoYOHaqrr75aZWVlVpcUcXbv3q3y8vIWvwMOh0M5OTn8Dphk3bp16t+/v4YPH64bbrhBBw8etLqkLqmmpkaS1KdPH0nS5s2b1djY2OJnf8SIERo0aBA/+xaKyDBSXV0tl8vluWrsCcnJySovL7eoqsiQk5OjZ599VmvXrtWTTz6p3bt364ILLlBdXZ3VpUWUEz/n/A5YY9KkSXr++edVWlqqBx98UOvXr9ell14ql8tldWlditvt1ty5czVhwgTPVb/Ly8tlt9tPufkqP/vWCvhy8EBHXHrppZ4/jxkzRjk5ORo8eLD+8Ic/aObMmRZWBpjnJz/5iefPo0eP1pgxY3TGGWdo3bp1mjhxooWVdS2zZ8/WRx99xLq0TiAiOyNJSUmKjo4+ZfV0RUWFUlJSLKoqMvXq1UtnnXWWdu7caXUpEeXEzzm/A+Fh6NChSkpK4vcgiG666Sb95S9/0VtvvaWBAwd6tqekpKihoUGHDx9usT8/+9aKyDBit9uVlZWl0tJSzza3263S0lLl5uZaWFnkOXLkiHbt2qXU1FSrS4koQ4YMUUpKSovfgdraWn3wwQf8Dljgq6++0sGDB/k9CALDMHTTTTfp5Zdf1ptvvqkhQ4a0GM/KylJsbGyLn/0dO3aorKyMn30LRew0TUFBgaZPn67x48crOztbS5YsUX19vWbMmGF1aV3arbfeqsmTJ2vw4MHav3+/ioqKFB0dralTp1pdWpdz5MiRFv/S3r17t7Zu3ao+ffpo0KBBmjt3rhYuXKhhw4ZpyJAhmj9/vtLS0nT55ZdbV3QX4e+979Onj+69915deeWVSklJ0a5du3T77bfrzDPPVH5+voVVdw2zZ8/WypUr9ec//1k9e/b0rANxOBzq1q2bHA6HZs6cqYKCAvXp00eJiYn6xS9+odzcXJ133nkWVx/BrD6dx0qPP/64MWjQIMNutxvZ2dnG+++/b3VJXd6UKVOM1NRUw263GwMGDDCmTJli7Ny50+qyuqS33nrLkHTKY/r06YZhNJ/eO3/+fCM5OdmIi4szJk6caOzYscPaorsIf+/90aNHjUsuucTo16+fERsbawwePNiYNWuWUV5ebnXZXYK3912SsWLFCs8+x44dM2688Uajd+/eRkJCgvGjH/3IOHDggHVFw7AZhmGYH4EAAACaReSaEQAAED4IIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACw1P8HYuI0ZOCNBakAAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from scipy.stats import genpareto\n", - "\n", - "c = 0.1\n", - "\n", - "mean, var, skew, kurt = genpareto.stats(c, moments=\"mvsk\")\n", - "\n", - "print(f\"{mean=} {var=} {skew=} {kurt=}\")\n", - "\n", - "x = np.linspace(genpareto.ppf(0.01, c), genpareto.ppf(0.99, c), 100)\n", - "print(f\"{x.shape=}\")\n", - "\n", - "fig, ax = plt.subplots(1, 1)\n", - "_ = ax.plot(x, genpareto.pdf(x, c), \"r-\", lw=5, alpha=0.6, label=\"genpareto pdf\")\n", - "\n", - "r = genpareto.rvs(c, size=100_000)\n", - "_ = ax.hist(r, density=True, histtype=\"stepfilled\", alpha=0.2)\n", - "_ = ax.legend(loc=\"best\", frameon=False)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "incomplete-olympus", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1092.9815492159842]" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted(r * 10e6)[10:2:-10]" - ] - }, - { - "cell_type": "markdown", - "id": "legal-powell", - "metadata": {}, - "source": [ - "## Exemple de distribution" - ] - }, - { - "cell_type": "markdown", - "id": "wireless-function", - "metadata": {}, - "source": [ - "Par exemple, ici on demande :\n", - "- Un coefficient c (de Pareto ?) de 0.5, plus il se rapproche de 1, plus la \"cassure\" entre haut et bas revenus est forte\n", - "- size=100 personnes\n", - "- scale=100 l'amplitude de revenu : le revenu maximum dépendra de ce paramètre et du coéfficient c. Avec c=0.5 et scale=1 000, le revenu maximum est de 17 000.\n", - "- loc=0 le revenu minimum." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "incorrect-valuation", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAGdCAYAAADey0OaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAgm0lEQVR4nO3de1DVdf7H8ReoXLwAinGABEUzLW95SSK7TTKh65Suzmatu5m52gUrszVlN/VnW0HaqpNrWo23povlTNqWZmN46SJqklamkZq3TcHK4HhJRHn//nA4dYQsFIIP5/mYOTPw/X7Ol8/59BWefc85EGRmJgAAgFouuKYnAAAA8FsQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcUL+mJ3C20tJSHThwQE2aNFFQUFBNTwcAAPwGZqYjR44oPj5ewcHVc02k1kXLgQMHlJCQUNPTAAAA52H//v1q0aJFtRy71kVLkyZNJJ150BERETU8GwAA8Ft4vV4lJCT4fo5Xh1oXLWVPCUVERBAtAAA4pjpf2sELcQEAgBOIFgAA4ASiBQAAOIFoAQAATiBaAACAE4gWAADgBKIFAAA4gWgBAABOIFoAAIATiBYAAOAEogUAADiBaAEAAE4gWgAAgBOIFgAA4IT6NT2B31ur8ctqegq4QHuy+tX0FAAANYArLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHBCpaLl9OnTmjBhgpKSkhQeHq42bdroX//6l8zMN8bMNHHiRMXFxSk8PFypqanasWNHlU8cAAAElkpFy1NPPaXZs2frP//5j7Zv366nnnpKU6ZM0cyZM31jpkyZomeeeUZz5szRhg0b1KhRI6WlpenEiRNVPnkAABA46ldm8Lp169S/f3/169dPktSqVSu9+uqr2rhxo6QzV1lmzJihRx99VP3795ckvfjii/J4PFq6dKluu+22Kp4+AAAIFJW60nL11VcrOztbX331lSTp008/1Ycffqi+fftKknbv3q38/Hylpqb67hMZGank5GTl5ORUeMzi4mJ5vV6/GwAAwNkqdaVl/Pjx8nq9at++verVq6fTp0/riSee0JAhQyRJ+fn5kiSPx+N3P4/H49t3tszMTE2ePPl85g4AAAJIpa60vP7663r55Zf1yiuv6JNPPtHChQv19NNPa+HChec9gYyMDBUVFflu+/fvP+9jAQCAuqtSV1rGjh2r8ePH+16b0qlTJ+3du1eZmZkaOnSoYmNjJUkFBQWKi4vz3a+goEBXXHFFhccMDQ1VaGjoeU4fAAAEikpdaTl+/LiCg/3vUq9ePZWWlkqSkpKSFBsbq+zsbN9+r9erDRs2KCUlpQqmCwAAAlWlrrTcfPPNeuKJJ5SYmKgOHTpo8+bNmjZtmu666y5JUlBQkEaPHq3HH39cbdu2VVJSkiZMmKD4+HgNGDCgOuYPAAACRKWiZebMmZowYYLuu+8+HTp0SPHx8br77rs1ceJE35hHHnlEx44d08iRI1VYWKhrrrlGK1asUFhYWJVPHgAABI4g+/mvs60FvF6vIiMjVVRUpIiIiCo/fqvxy6r8mPh97cnqV9NTAACcpbp/fkv87SEAAOAIogUAADiBaAEAAE4gWgAAgBOIFgAA4ASiBQAAOIFoAQAATiBaAACAE4gWAADgBKIFAAA4gWgBAABOIFoAAIATiBYAAOAEogUAADiBaAEAAE4gWgAAgBOIFgAA4ASiBQAAOIFoAQAATiBaAACAE4gWAADgBKIFAAA4gWgBAABOIFoAAIATiBYAAOAEogUAADiBaAEAAE4gWgAAgBOIFgAA4ASiBQAAOIFoAQAATiBaAACAE4gWAADgBKIFAAA4gWgBAABOIFoAAIATiBYAAOAEogUAADiBaAEAAE4gWgAAgBOIFgAA4ASiBQAAOIFoAQAATiBaAACAE4gWAADgBKIFAAA4gWgBAABOIFoAAIATiBYAAOAEogUAADiBaAEAAE4gWgAAgBOIFgAA4ASiBQAAOIFoAQAATiBaAACAE4gWAADgBKIFAAA4gWgBAABOIFoAAIATiBYAAOAEogUAADiBaAEAAE4gWgAAgBOIFgAA4ASiBQAAOIFoAQAATqh0tHzzzTf6y1/+oujoaIWHh6tTp07atGmTb7+ZaeLEiYqLi1N4eLhSU1O1Y8eOKp00AAAIPJWKlh9++EG9evVSgwYN9M4772jbtm3697//raZNm/rGTJkyRc8884zmzJmjDRs2qFGjRkpLS9OJEyeqfPIAACBw1K/M4KeeekoJCQmaP3++b1tSUpLvYzPTjBkz9Oijj6p///6SpBdffFEej0dLly7VbbfdVkXTBgAAgaZSV1r++9//qkePHvrTn/6kmJgYde3aVS+88IJv/+7du5Wfn6/U1FTftsjISCUnJysnJ6fqZg0AAAJOpaLl66+/1uzZs9W2bVu9++67uvfee/XAAw9o4cKFkqT8/HxJksfj8bufx+Px7TtbcXGxvF6v3w0AAOBslXp6qLS0VD169NCTTz4pSeratau2bt2qOXPmaOjQoec1gczMTE2ePPm87gsAAAJHpa60xMXF6fLLL/fbdtlll2nfvn2SpNjYWElSQUGB35iCggLfvrNlZGSoqKjId9u/f39lpgQAAAJEpaKlV69eysvL89v21VdfqWXLlpLOvCg3NjZW2dnZvv1er1cbNmxQSkpKhccMDQ1VRESE3w0AAOBslXp66KGHHtLVV1+tJ598Urfeeqs2btyo559/Xs8//7wkKSgoSKNHj9bjjz+utm3bKikpSRMmTFB8fLwGDBhQHfMHAAABolLRcuWVV2rJkiXKyMjQY489pqSkJM2YMUNDhgzxjXnkkUd07NgxjRw5UoWFhbrmmmu0YsUKhYWFVfnkAQBA4AgyM6vpSfyc1+tVZGSkioqKquWpolbjl1X5MfH72pPVr6anAAA4S3X//Jb420MAAMARRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJ1xQtGRlZSkoKEijR4/2bTtx4oTS09MVHR2txo0ba9CgQSooKLjQeQIAgAB33tHy8ccf67nnnlPnzp39tj/00EN66623tHjxYq1du1YHDhzQwIEDL3iiAAAgsJ1XtBw9elRDhgzRCy+8oKZNm/q2FxUVae7cuZo2bZpuvPFGde/eXfPnz9e6deu0fv36Kps0AAAIPOcVLenp6erXr59SU1P9tufm5qqkpMRve/v27ZWYmKicnJwKj1VcXCyv1+t3AwAAOFv9yt5h0aJF+uSTT/Txxx+X25efn6+QkBBFRUX5bfd4PMrPz6/weJmZmZo8eXJlpwEAAAJMpa607N+/Xw8++KBefvllhYWFVckEMjIyVFRU5Lvt37+/So4LAADqlkpFS25urg4dOqRu3bqpfv36ql+/vtauXatnnnlG9evXl8fj0cmTJ1VYWOh3v4KCAsXGxlZ4zNDQUEVERPjdAAAAzlapp4d69+6tzz//3G/bsGHD1L59e40bN04JCQlq0KCBsrOzNWjQIElSXl6e9u3bp5SUlKqbNQAACDiVipYmTZqoY8eOftsaNWqk6Oho3/bhw4drzJgxatasmSIiInT//fcrJSVFV111VdXNGgAABJxKvxD310yfPl3BwcEaNGiQiouLlZaWpmeffbaqvwwAAAgwQWZmNT2Jn/N6vYqMjFRRUVG1vL6l1fhlVX5M/L72ZPWr6SkAAM5S3T+/Jf72EAAAcATRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnVCpaMjMzdeWVV6pJkyaKiYnRgAEDlJeX5zfmxIkTSk9PV3R0tBo3bqxBgwapoKCgSicNAAACT6WiZe3atUpPT9f69eu1cuVKlZSU6KabbtKxY8d8Yx566CG99dZbWrx4sdauXasDBw5o4MCBVT5xAAAQWOpXZvCKFSv8Pl+wYIFiYmKUm5ur6667TkVFRZo7d65eeeUV3XjjjZKk+fPn67LLLtP69et11VVXVd3MAQBAQLmg17QUFRVJkpo1ayZJys3NVUlJiVJTU31j2rdvr8TEROXk5FR4jOLiYnm9Xr8bAADA2c47WkpLSzV69Gj16tVLHTt2lCTl5+crJCREUVFRfmM9Ho/y8/MrPE5mZqYiIyN9t4SEhPOdEgAAqMPOO1rS09O1detWLVq06IImkJGRoaKiIt9t//79F3Q8AABQN1XqNS1lRo0apbffflvvv/++WrRo4dseGxurkydPqrCw0O9qS0FBgWJjYys8VmhoqEJDQ89nGgAAIIBU6kqLmWnUqFFasmSJVq1apaSkJL/93bt3V4MGDZSdne3blpeXp3379iklJaVqZgwAAAJSpa60pKen65VXXtGbb76pJk2a+F6nEhkZqfDwcEVGRmr48OEaM2aMmjVrpoiICN1///1KSUnhnUMAAOCCVCpaZs+eLUm64YYb/LbPnz9fd955pyRp+vTpCg4O1qBBg1RcXKy0tDQ9++yzVTJZAAAQuCoVLWb2q2PCwsI0a9YszZo167wnBQAAcDb+9hAAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACfVregJAZbUav6ymp4ALsCerX01PAYCjuNICAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACcQLQAAwAlECwAAcALRAgAAnEC0AAAAJxAtAADACUQLAABwAtECAACcQLQAAAAnEC0AAMAJRAsAAHAC0QIAAJxAtAAAACfUr+kJAAgsrcYvq+kp4ALtyepX01NAgOJKCwAAcALRAgAAnEC0AAAAJ1Tba1pmzZqlqVOnKj8/X126dNHMmTPVs2fP6vpyAIDfCa9Lcp+rr0uqlistr732msaMGaNJkybpk08+UZcuXZSWlqZDhw5Vx5cDAAABoFqiZdq0aRoxYoSGDRumyy+/XHPmzFHDhg01b9686vhyAAAgAFT500MnT55Ubm6uMjIyfNuCg4OVmpqqnJyccuOLi4tVXFzs+7yoqEiS5PV6q3pqkqTS4uPVclwAAFxRHT9jy45pZlV+7DJVHi3fffedTp8+LY/H47fd4/Hoyy+/LDc+MzNTkydPLrc9ISGhqqcGAAAkRc6ovmMfOXJEkZGR1XLsGv/lchkZGRozZozv89LSUh0+fFjR0dEKCgqq0q/l9XqVkJCg/fv3KyIiokqP7RLW4SesxRmsw09YizNYh5+wFmf82jqYmY4cOaL4+Phqm0OVR0vz5s1Vr149FRQU+G0vKChQbGxsufGhoaEKDQ312xYVFVXV0/ITERER0CdeGdbhJ6zFGazDT1iLM1iHn7AWZ5xrHarrCkuZKn8hbkhIiLp3767s7GzfttLSUmVnZyslJaWqvxwAAAgQ1fL00JgxYzR06FD16NFDPXv21IwZM3Ts2DENGzasOr4cAAAIANUSLYMHD9a3336riRMnKj8/X1dccYVWrFhR7sW5v7fQ0FBNmjSp3NNRgYZ1+AlrcQbr8BPW4gzW4SesxRm1YR2CrDrfmwQAAFBF+NtDAADACUQLAABwAtECAACcQLQAAAAnBEy0zJo1S61atVJYWJiSk5O1cePGmp7SBcnMzNSVV16pJk2aKCYmRgMGDFBeXp7fmBtuuEFBQUF+t3vuucdvzL59+9SvXz81bNhQMTExGjt2rE6dOuU3Zs2aNerWrZtCQ0N1ySWXaMGCBdX98H6z//u//yv3GNu3b+/bf+LECaWnpys6OlqNGzfWoEGDyv3iQ9fXoEyrVq3KrUVQUJDS09Ml1e3z4f3339fNN9+s+Ph4BQUFaenSpX77zUwTJ05UXFycwsPDlZqaqh07dviNOXz4sIYMGaKIiAhFRUVp+PDhOnr0qN+Yzz77TNdee63CwsKUkJCgKVOmlJvL4sWL1b59e4WFhalTp05avnx5lT/eX3KudSgpKdG4cePUqVMnNWrUSPHx8brjjjt04MABv2NUdB5lZWX5jant6yD9+jlx5513lnucffr08RtT188JSRV+zwgKCtLUqVN9Y2rVOWEBYNGiRRYSEmLz5s2zL774wkaMGGFRUVFWUFBQ01M7b2lpaTZ//nzbunWrbdmyxf7whz9YYmKiHT161Dfm+uuvtxEjRtjBgwd9t6KiIt/+U6dOWceOHS01NdU2b95sy5cvt+bNm1tGRoZvzNdff20NGza0MWPG2LZt22zmzJlWr149W7Fixe/6eH/JpEmTrEOHDn6P8dtvv/Xtv+eeeywhIcGys7Nt06ZNdtVVV9nVV1/t218X1qDMoUOH/NZh5cqVJslWr15tZnX7fFi+fLn985//tDfeeMMk2ZIlS/z2Z2VlWWRkpC1dutQ+/fRTu+WWWywpKcl+/PFH35g+ffpYly5dbP369fbBBx/YJZdcYrfffrtvf1FRkXk8HhsyZIht3brVXn31VQsPD7fnnnvON+ajjz6yevXq2ZQpU2zbtm326KOPWoMGDezzzz+v9jUwO/c6FBYWWmpqqr322mv25ZdfWk5OjvXs2dO6d+/ud4yWLVvaY4895nee/Pz7igvrYPbr58TQoUOtT58+fo/z8OHDfmPq+jlhZn6P/+DBgzZv3jwLCgqyXbt2+cbUpnMiIKKlZ8+elp6e7vv89OnTFh8fb5mZmTU4q6p16NAhk2Rr1671bbv++uvtwQcf/MX7LF++3IKDgy0/P9+3bfbs2RYREWHFxcVmZvbII49Yhw4d/O43ePBgS0tLq9oHcJ4mTZpkXbp0qXBfYWGhNWjQwBYvXuzbtn37dpNkOTk5ZlY31uCXPPjgg9amTRsrLS01s8A4H8ys3Dfm0tJSi42NtalTp/q2FRYWWmhoqL366qtmZrZt2zaTZB9//LFvzDvvvGNBQUH2zTffmJnZs88+a02bNvWthZnZuHHjrF27dr7Pb731VuvXr5/ffJKTk+3uu++u0sf4W1T0A+psGzduNEm2d+9e37aWLVva9OnTf/E+rq2DWcVrMXToUOvfv/8v3idQz4n+/fvbjTfe6LetNp0Tdf7poZMnTyo3N1epqam+bcHBwUpNTVVOTk4NzqxqFRUVSZKaNWvmt/3ll19W8+bN1bFjR2VkZOj48eO+fTk5OerUqZPfL/1LS0uT1+vVF1984Rvz87UrG1Ob1m7Hjh2Kj49X69atNWTIEO3bt0+SlJubq5KSEr/5t2/fXomJib7515U1ONvJkyf10ksv6a677vL7w6OBcD6cbffu3crPz/ebd2RkpJKTk/3Og6ioKPXo0cM3JjU1VcHBwdqwYYNvzHXXXaeQkBDfmLS0NOXl5emHH37wjXFpfYqKihQUFFTu771lZWUpOjpaXbt21dSpU/2eIqxL67BmzRrFxMSoXbt2uvfee/X999/79gXiOVFQUKBly5Zp+PDh5fbVlnOixv/Kc3X77rvvdPr06XK/jdfj8ejLL7+soVlVrdLSUo0ePVq9evVSx44dfdv//Oc/q2XLloqPj9dnn32mcePGKS8vT2+88YYkKT8/v8J1Kdt3rjFer1c//vijwsPDq/Oh/ark5GQtWLBA7dq108GDBzV58mRde+212rp1q/Lz8xUSElLuG7LH4/nVx1e271xjassaVGTp0qUqLCzUnXfe6dsWCOdDRcrmXtG8f/64YmJi/PbXr19fzZo18xuTlJRU7hhl+5o2bfqL61N2jNrkxIkTGjdunG6//Xa/P373wAMPqFu3bmrWrJnWrVunjIwMHTx4UNOmTZNUd9ahT58+GjhwoJKSkrRr1y794x//UN++fZWTk6N69eoF5DmxcOFCNWnSRAMHDvTbXpvOiTofLYEgPT1dW7du1Ycffui3feTIkb6PO3XqpLi4OPXu3Vu7du1SmzZtfu9pVou+ffv6Pu7cubOSk5PVsmVLvf7667XyB+jvZe7cuerbt6/fn4gPhPMBv01JSYluvfVWmZlmz57tt2/MmDG+jzt37qyQkBDdfffdyszMrFO/xv62227zfdypUyd17txZbdq00Zo1a9S7d+8anFnNmTdvnoYMGaKwsDC/7bXpnKjzTw81b95c9erVK/eOkYKCAsXGxtbQrKrOqFGj9Pbbb2v16tVq0aLFOccmJydLknbu3ClJio2NrXBdyvada0xEREStjIKoqChdeuml2rlzp2JjY3Xy5EkVFhb6jfn5f/u6uAZ79+7Ve++9p7/97W/nHBcI54P009zP9T0gNjZWhw4d8tt/6tQpHT58uErOldr0vaYsWPbu3auVK1f6XWWpSHJysk6dOqU9e/ZIqjvrcLbWrVurefPmfv8eAuWckKQPPvhAeXl5v/p9Q6rZc6LOR0tISIi6d++u7Oxs37bS0lJlZ2crJSWlBmd2YcxMo0aN0pIlS7Rq1apyl+YqsmXLFklSXFycJCklJUWff/653z/Msm9il19+uW/Mz9eubExtXbujR49q165diouLU/fu3dWgQQO/+efl5Wnfvn2++dfFNZg/f75iYmLUr1+/c44LhPNBkpKSkhQbG+s3b6/Xqw0bNvidB4WFhcrNzfWNWbVqlUpLS31xl5KSovfff18lJSW+MStXrlS7du3UtGlT35javD5lwbJjxw699957io6O/tX7bNmyRcHBwb6nSurCOlTkf//7n77//nu/fw+BcE6UmTt3rrp3764uXbr86tgaPScq9bJdRy1atMhCQ0NtwYIFtm3bNhs5cqRFRUX5vUvCNffee69FRkbamjVr/N6Gdvz4cTMz27lzpz322GO2adMm2717t7355pvWunVru+6663zHKHuL60033WRbtmyxFStW2EUXXVThW1zHjh1r27dvt1mzZtWKt7iWefjhh23NmjW2e/du++ijjyw1NdWaN29uhw4dMrMzb3lOTEy0VatW2aZNmywlJcVSUlJ8968La/Bzp0+ftsTERBs3bpzf9rp+Phw5csQ2b95smzdvNkk2bdo027x5s+9dMVlZWRYVFWVvvvmmffbZZ9a/f/8K3/LctWtX27Bhg3344YfWtm1bv7e3FhYWmsfjsb/+9a+2detWW7RokTVs2LDc2zrr169vTz/9tG3fvt0mTZr0u7699VzrcPLkSbvlllusRYsWtmXLFr/vG2Xv+li3bp1Nnz7dtmzZYrt27bKXXnrJLrroIrvjjjucWodfW4sjR47Y3//+d8vJybHdu3fbe++9Z926dbO2bdvaiRMnfMeo6+dEmaKiImvYsKHNnj273P1r2zkRENFiZjZz5kxLTEy0kJAQ69mzp61fv76mp3RBJFV4mz9/vpmZ7du3z6677jpr1qyZhYaG2iWXXGJjx471+70cZmZ79uyxvn37Wnh4uDVv3twefvhhKykp8RuzevVqu+KKKywkJMRat27t+xq1weDBgy0uLs5CQkLs4osvtsGDB9vOnTt9+3/88Ue77777rGnTptawYUP74x//aAcPHvQ7hutr8HPvvvuuSbK8vDy/7XX9fFi9enWF/x6GDh1qZmfe9jxhwgTzeDwWGhpqvXv3LrdG33//vd1+++3WuHFji4iIsGHDhtmRI0f8xnz66ad2zTXXWGhoqF188cWWlZVVbi6vv/66XXrppRYSEmIdOnSwZcuWVdvjPtu51mH37t2/+H2j7Hf55ObmWnJyskVGRlpYWJhddtll9uSTT/r9IDer/etgdu61OH78uN1000120UUXWYMGDaxly5Y2YsSIcv8jW9fPiTLPPfechYeHW2FhYbn717ZzIsjMrHLXZgAAAH5/df41LQAAoG4gWgAAgBOIFgAA4ASiBQAAOIFoAQAATiBaAACAE4gWAADgBKIFAAA4gWgBAABOIFoAAIATiBYAAOAEogUAADjh/wFCfCao5yKmiwAAAABJRU5ErkJggg==", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "c = 0.5\n", - "r = genpareto.rvs(c, size=100, loc=0, scale=1_000, random_state=1)\n", - "count, bins, ax = plt.hist(r, 4, density=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "increased-joseph", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "r.shape=(100,) r.min()=0.11438462947924068 r.mean()=1657.342156816486 r.max()=16949.974367913703\n", - "Frontière de l'histogramme :[1.14384629e-01 4.23757938e+03 8.47504438e+03 1.27125094e+04\n", - " 1.69499744e+04]\n", - "Nombre de personnes dans chaque bars :[90. 7. 2. 1.]\n" - ] - } - ], - "source": [ - "print(f\"{r.shape=} {r.min()=} {r.mean()=} {r.max()=}\")\n", - "print(f\"Frontière de l'histogramme :{bins}\")\n", - "print(f\"Nombre de personnes dans chaque bars :{count}\")" - ] - }, - { - "cell_type": "markdown", - "id": "exterior-knitting", - "metadata": {}, - "source": [ - "On voit sur l'histogramme qu'on a 90% des personnes qui gagnent moins de 4 237 €\n", - "\n", - "Et seulement 1% qui gagnent plus de 12 700 €, avec un maximum de 16 949 €" - ] - }, - { - "cell_type": "markdown", - "id": "standing-dispatch", - "metadata": {}, - "source": [ - "## Génération d'un grand nombre de données" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "excess-candy", - "metadata": {}, - "outputs": [], - "source": [ - "def get_random_data(nb_zeros: int, nb_above_zero: int, c=0.9, scale=80_000):\n", - " \"\"\"\n", - " ::nb_zeros:: Nombre d'individus à 0\n", - " ::nb_above_zero:: Nombre d'individus pour lesquels générer une valeur\n", - " \"\"\"\n", - " zeros = np.zeros((nb_zeros,))\n", - " # Using numpy.random.pareto() method\n", - " pareto = genpareto.rvs(c, size=nb_above_zero, loc=0, scale=scale, random_state=1)\n", - " return np.concatenate((zeros, pareto), axis=0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "variable-hunter", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "r.shape=(38000000,) r.min()=0.0 r.mean()=15795.173430857798 r.max()=375678496.8283032\n" - ] - } - ], - "source": [ - "c = 0.6\n", - "r = get_random_data(\n", - " nb_zeros=2_000_000, nb_above_zero=36_000_000, c=c, scale=4000 * (1 / c)\n", - ")\n", - "print(f\"{r.shape=} {r.min()=} {r.mean()=} {r.max()=}\")\n", - "df = pd.DataFrame({\"revkire\": r})" - ] - }, - { - "cell_type": "markdown", - "id": "imposed-scene", - "metadata": {}, - "source": [ - "### Calcul des centiles" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "terminal-minority", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.5" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "nb_quantiles = 100\n", - "centile = [(1 / nb_quantiles) * (i + 1) for i in range(nb_quantiles)]\n", - "centile[49]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "sized-benefit", - "metadata": {}, - "outputs": [], - "source": [ - "quantiles = df.quantile(centile)\n", - "df_quantiles = pd.DataFrame(quantiles)\n", - "df_quantiles[\"quantiles\"] = df_quantiles.index * 100\n", - "df_quantiles[\"quantiles\"] = df_quantiles[\"quantiles\"].astype(int)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eleven-excerpt", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABmIAAALoCAYAAABrpOraAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACo5ElEQVR4nOzdeZzVdb0/8NecQRKQGSANb4oLmpjXNRdSUpNIwyUSNyoVTY2MLC1NunlN018qLWrSzXJJxVy7pNmCSyZetUy7pllmBomAiQswM2wic+b3B3cmhgGZ7TBz4Pl8PHhc53s+n+/3fT5ztOt5+f58KhoaGhoCAAAAAABApyt0dQEAAAAAAADrK0EMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAACUwIQJEzJ8+PBm14YMGZKrrrqqiyr6l8cffzxDhgzJ448/3tWldIkN/f0DAADrVo+uLgAAADrqpZdeyrXXXptHH300r776ajbaaKPssMMOGTlyZI477rhsvPHGJXnu3Llzc8cdd2TEiBF573vfW5JnlIPZs2fnQx/6UNPPFRUVqaqqyq677prx48dnjz32aDb+qquuyqRJk1Z7rwsuuCAf//jHk6wIrlbWp0+f7LTTTjn11FPzwQ9+sHPfRDey6vtutOmmm+bRRx9t+rm2tjbDhg3LsmXL8stf/jLbbbddizkTJkzIvffem6eeeqrZ9b/+9a8ZO3Zs+vTpk5tuuilbbrllTjjhhPz+979f7bO33XbbTJ06dY01r/oZKBQKGThwYP793/89n/vc51r8/bF48eL86Ec/ytSpU/PSSy+lR48eGTJkSI499tiMGjUqFRUVTfX/9Kc/XeNzGx155JG59NJLO/Qe/vnPf+a///u/89BDD2XmzJkpFArZYYcdcvrpp2e//fZrMb62tjbf/OY3c//992fp0qXZZZddMmHChPz7v/97s3G//OUv8+CDD+aZZ57JzJkzs88++2Ty5MmrreHZZ5/N5ZdfnqeeeioNDQ3ZY489cs4552zQ/3wBAFgfCGIAAChrDz30UL7whS+kZ8+eGTVqVHbYYYe89dZb+cMf/pBvfvOb+fvf/56LLrqoJM9+9dVXM2nSpGyxxRYtvii96KKL0tDQUJLndleHH354DjjggBSLxbz44ou55ZZbcuKJJ+YnP/nJasOFCy64IL179252bbfddmv287BhwzJq1Kg0NDTk5Zdfzq233prPfOYzueaaa7L//vuX9P10pcb3vbJVA8WpU6emoqIim222WX72s5/lrLPOatW9//a3v+Wkk05K7969c+ONN2bLLbdsem3zzTfPF7/4xRZz+vbt26p7r/wZmD59em699dY8/PDDueOOO5r+Hnn99ddz0kknZfr06Tn00ENz/PHH580338x9992Xc889N9OmTcu3vvWtVFZW5rjjjsu+++7bdP/Zs2fnu9/9bo477rjsueeeTde32mqrDr+HX//617nmmmsyYsSIHHnkkVm+fHnuvvvunHzyyfnGN76Ro446qmlssVjMpz/96Tz//PM55ZRT0r9//9xyyy054YQTMmXKlGyzzTZNY2+99dY8++yz2WWXXbJgwYI1Pv/Pf/5zPvGJT+Tf/u3f8rnPfS7FYjG33HJLjj/++Nx5550ZPHjw29YPAED3JYgBAKBszZo1K2eddVbe/e5358Ybb8y73vWuptc++clPZubMmXnooYe6pLaNNtqoS57blXbaaadm4cGee+6Z0047LbfeemsuuOCCFuMPOeSQDBgw4G3vuc022zS75yGHHJJDDz00N91003odxKz6vlfnZz/7WQ488MC8+93vzs9//vNWBTEvvPBCxo4dm4033jg33XRTBg0a1Oz1vn37rvW5b2fVz8D73ve+nH766bn11lvz9a9/PUly7rnnZvr06Zk0aVKzLpoTTzwxl112Wa6//vq8973vzac//enssccezTqq/vSnP+W73/1udt999zXW2d73MHTo0PzmN79p9pn8+Mc/nlGjRuW73/1usyBm6tSpeeqpp3LllVfmIx/5SJJk5MiROeSQQ3LVVVfl29/+dtPYiRMnZuDAgSkUCjn88MPX+Pwrr7wyG2+8cW677bb0798/SfLRj340hxxySC6//PJusa0hAADt44wYAADK1rXXXpvFixfn//2//9cshGm09dZbZ+zYsc2u3X333Rk9enR23XXX7LPPPjnrrLPyz3/+s9mYE044IYcffnj+/ve/54QTTshuu+2W/fffP9dcc03TmMcffzxHH310kuQrX/lKhgwZkiFDhmTKlClJVn9GzOrMnTs3X/nKV7Lffvtl5513zmGHHZaf/OQnLcZNnjw5hx12WHbbbbfsvffeGT16dO6555613v+VV17JZz/72ey+++7Zd999841vfCPLli1b7dinn346p5xySvbcc8/stttuOf744/OHP/xhrc9Yk7322ivJisCss2y33Xbp379/XnrppVaNb+37f/LJJ/P5z38+H/zgB7PzzjvnwAMPzDe+8Y0sXbq02bgJEyZkjz32yNy5c/PZz342e+yxR97//vfnsssuS319fbOxv/jFLzJ69Ojsscceed/73pcjjjgiN954Y/vf/EpefvnlPPnkkzn00ENz2GGHZfbs2fnf//3ft50zffr0nHTSSenZs+dqQ5hSeP/7359kRSdLkvzxj3/MI488kiOPPLJZCNPoS1/6UrbZZptce+21Lda+1N7znve0CAZ79uyZAw88MK+88koWLlzYdP3ee+/NpptumoMPPrjp2oABAzJy5Mj8+te/bvYZ+7d/+7cUCmv/V+8nn3wy++67b1MIkyTvete7ss8+++Q3v/lNFi1a1JG3BwBAF9IRAwBA2frNb36TQYMG5X3ve1+rxn//+9/PlVdemZEjR+boo4/OvHnzcvPNN+eTn/xk7rrrrlRVVTWNrampyamnnpoPf/jDGTlyZO69995861vfyg477JADDzww2223XT7/+c+32CaptbUkK7ZoOvbYY1NRUZFPfvKTGTBgQB5++OF89atfzcKFC3PSSSclSe64445cfPHFOeSQQ3LiiSfmzTffzPPPP5+nn346RxxxxBrvv3Tp0owdOzb//Oc/c8IJJ+Rd73pX7r777vzud79rMfa3v/1tTjvttOy888753Oc+l4qKikyZMiVjx47NLbfckl133bXV76vRnDlzkqTZuq6spqam2c+VlZWprq5+23vW1dWltra22VZUa9KW9z916tQsXbo0H//4x9OvX78888wzufnmm/PKK6/ku9/9brOx9fX1OeWUU7Lrrrvmy1/+cn7729/m+uuvz6BBg/KJT3wiSfLoo4/mi1/8Yvbdd9+cffbZSZIZM2bkf//3f1uEg6vz5ptvZt68ec2ubbLJJunZs2eS5Oc//3l69eqVgw46KBtvvHG22mqr3HPPPWv8/M2YMSNjx45NZWVlbrrppjWuX319fYvnJiu2RVt1G7nWaAzM+vXrl2TF37NJ8rGPfWy143v06JHDDz88kyZNyv/+7/+u9myWtens9/Daa6+lV69e6dWrV9O15557LjvttFOLgGWXXXbJ7bffnn/84x9rPOtnTZYtW7ba86w23njjvPXWW3nhhRey++67t7l+AAC6niAGAICytHDhwsydO3e1/1X96syZMydXXXVVzjzzzHzmM59pun7wwQfnyCOPzC233NLs+quvvprLLrus6Qvjo48+OsOHD89///d/58ADD8ymm26aAw44YK3bJL2dyy+/PPX19bnnnnua/iv4j3/84/niF7+YSZMmZcyYMdl4443z0EMP5T3veU+LQGBtbr/99rz44ou54oorMnLkyCRpOgx9ZQ0NDbngggsydOjQXHvttU0HpY8ZMyaHHXZYrrjiilx//fVrfd6SJUsyb968pjNiLr300iQrthNbncYtnRptscUWefDBB5tdWzmQePnll3PFFVekvr5+jfdsz/tPkrPPPrvZl+DHHXdctt5663znO9/Jyy+/nHe/+93Naho5cmTGjx+fZMXv7Mgjj8xPfvKTpiDmoYceyiabbJLrrrsulZWVa611VT/5yU9adEZdcsklGT16dJLknnvuyYc+9KGmmg899NDcfvvt+epXv5oePZr/a95bb72VE088MRUVFbnpppuy9dZbr/G5M2bMaHYmy8rr0bi12NtZ+TMwY8aMXHLJJUn+9bv++9//niTZcccd13iPxtemT5/eriCmo+9hZTNnzsz999+fj3zkI81+j6+99lpTx9fKGjvzXn311TYHMdtuu23++Mc/pr6+vulZy5YtyzPPPJNkRfccAADlSRADAEBZatwmqE+fPq0af//996dYLGbkyJHN/mv5TTfdNFtvvXUef/zxZkFM7969m31h37Nnz+yyyy6dts1WQ0ND7rvvvowcOTINDQ3NavrABz6QX/ziF/nzn/+cPffcM1VVVXnllVfyzDPPtKkz5eGHH85mm23WLPDo1atXjj322Hzzm99suvbcc8/lxRdfzOmnn5758+c3u8e+++6bu+++O8Vica3bK1111VXNzrHo3bt3JkyY0CJwWXn8Jpts0vTzO97xjhZjVg0kNtpoo5x66qk5+eST37aWpPXvP0mzEGbx4sVZunRp9thjjzQ0NOQvf/lLsyAmWRG+rGzPPffMz372s6afq6qqsmTJkjz66KM54IAD1lrrqj70oQ/l+OOPb3Zt++23T5L89a9/zd/+9rd86UtfanrtsMMOy9VXX51HHnkkH/zgB5vNq6+vz4IFC7Lttts22/ZqdbbYYotcfPHFLa4PHDiwVXWv+hnYZJNNcvbZZzdt4dW4vdbb/X3b+NrKW4G1RUffQ6MlS5bkC1/4QjbeeONma52s6LZq7E5aWeO1N998s03PSpJPfOITueCCC/LVr341p556aorFYr7//e/ntddea3omAADlSRADAEBZavwCv7XnJrz44otpaGhodqbDylbtIth8882bOkMaVVdX5/nnn29HtS3NmzcvtbW1uf3223P77bevcUySnHbaaXnsscdyzDHHZOutt86wYcNy+OGHN22HtiZz5szJ1ltv3eJ9bLvtts1+fvHFF5OsOER9Terq6ta6bdhxxx2Xj3zkI3nzzTfzu9/9LpMnT25xbsrK9tprrxZncqyqMZB466238qc//SlXX311li5d2qozN1r7/pMV3Tbf/e538+CDD7bYMm3VQOAd73hHi7qrq6ubzfvEJz6RX/3qVznttNMycODADBs2LCNHjmx1KLP55puvsRvkZz/7WXr37p1BgwZl5syZTTVtscUWueeee1oEMRtvvHEuvvjinH322Rk3blyuv/76NW7R1bt373Z1oTRq/AxUVFSkqqoq73nPe5oFFo0hy6JFi9a4ZV1rwpq309H3kKwIr84666z8/e9/zzXXXNMixNl4441Xe9ZQ47XVhYpr8/GPfzyvvPJKrrvuuvz0pz9Nkuy888455ZRTcvXVV7d7PQAA6HqCGAAAytImm2ySd73rXXnhhRdaNb5YLKaioiLXXHPNareKWvWL6fZsJ9UWxWIxSfLRj340Rx555GrHNG5ttN1222Xq1Kl56KGH8j//8z+57777csstt2T8+PH5/Oc/3+FaGhoakiRf/vKX8973vne1Y1pztsbWW2/d9AX4QQcdlEKhkG9/+9sZOnRodtlll3bVtnIgceCBB6Z///75+te/nqFDh64xVGur+vr6nHzyyU3nAg0ePDi9e/fO3LlzM2HChKbfVaPWfDbe+c535q677sojjzyShx9+OA8//HCmTJmSj33sY7nsssvaXWtDQ0N+8YtfZPHixTn00ENbvD5v3rwsWrSoxZf2hx12WGpqanLhhRfmjDPOyPe///3VdnR01MqfgdXZbrvt8sADD+T555/P3nvvvdoxjWFnYwdQVzjvvPPy0EMP5Vvf+tZqtznbbLPNmjpVVvbqq68m+dcWZW111lln5VOf+lReeOGF9O3bN0OGDMl3vvOdJMk222zTrnsCAND1BDEAAJStgw46KLfffnueeuqp7LHHHm87dquttkpDQ0O23HLL1XZEtMeqnRZtMWDAgPTp0yfFYrFV//V+7969c+ihh+bQQw/NsmXLcsYZZ+Tqq6/OuHHj1vhf32+xxRb529/+loaGhma1/uMf/2g2btCgQUlWhFsd7SRY2emnn54777wzV1xxRa677rpOuedxxx2XG264IVdccUU+/OEPv+3voLXv/29/+1tefPHFZmcCJcmjjz7aoVp79uyZ4cOHZ/jw4SkWi7ngggty++2357Of/ezbntPydn7/+9/nlVdeyec///lst912zV6rra3Nf/7nf+aBBx5Y7Tk4n/jEJ1JTU5Mrrrgi55xzTi6//PJWdRZ1pg9+8IP5wQ9+kLvuumu1QUzjmUnV1dV53/vet05ra3TZZZdlypQp+Y//+I8cfvjhqx2z44475g9/+EOLLfueeeaZ9OrVq0P/jKmurm52/sxjjz2WzTffPIMHD273PQEA6Frr9v/rBgCATnTqqaemd+/eOe+88/L666+3eP2ll17KjTfemCQ5+OCDU1lZmUmTJjV1gDRqaGhocTZKa/Tq1SvJii/A26qysjKHHHJI7r333vztb39r8frKZ8asWlvPnj2z3XbbpaGhIW+99dYan3HAAQfk1VdfzdSpU5uuLVmyJHfccUezcTvvvHO22mqrXH/99avd6m3lWtqiqqoqxx13XB555JE899xz7brHqnr06JGTTz4506dPz69//eu3Hdva99/4RfrKn4uGhobcdNNN7a5z1d9ZoVBo6nBa3ZZWrdW4Ldmpp56aj3zkI83+HHvssdlmm21yzz33rHH+6aefnpNOOilTp07N+eef3+462ut973tf9ttvv0yZMiW/+c1vWrx++eWX58UXX8ypp57a7NyedeXaa6/N9ddfn8985jMZO3bsGsd95CMfyeuvv5777ruv6dq8efMyderUHHTQQZ3WbfTLX/4yf/rTnzJ27Nh1HpoBANB5dMQAAFC2ttpqq3zrW9/KWWedlUMPPTSjRo3KDjvskGXLluWpp57K1KlTM3r06KaxZ555Zr797W9nzpw5GTFiRPr06ZPZs2fngQceyLHHHptTTjmlzc+vqqrKbbfdlj59+qR3797ZddddmzpM1uZLX/pSHn/88Rx77LE55phjsv3226empiZ//vOf89vf/ja///3vkySnnHJKNt1007zvfe/LO9/5zsyYMSM333xzDjzwwGaH3a/q2GOPzY9//OOce+65+fOf/5zNNtssd999d4svuAuFQi6++OKcdtppOfzwwzN69OgMHDgwc+fOzeOPP55NNtkkV199dZvWptGJJ56YG2+8MT/84Q9z+eWXt+seqxo9enS++93v5pprrsmIESPWOK6173/w4MHZaqutctlll2Xu3LnZZJNNcu+997YrYGt03nnnpaamJu9///szcODAvPzyy7n55pvz3ve+t0UnS2stW7Ys9913X/bbb781dkENHz48N910U9544428853vXO2YCRMmpLa2NnfeeWeqq6tzzjnnNL1WV1eXu+++e7XzVtdl0x6XXXZZTjrppHz2s5/N4Ycfnr322qvpvf3+97/PoYce2ua/F1fW3vdw//3355vf/Ga22WabDB48uMU9hg0blk033TRJcsghh2T33XfPV77ylfz9739P//79c+utt6a+vj5nnHFGs3lPPPFEnnjiiSQrwprFixfnv/7rv5Ike++9d1Nn0BNPPJHvfe97GTZsWPr165enn346U6ZMyf77758TTzyxfYsBAEC3IIgBAKCsfehDH8rPfvazXHfddfn1r3+dW2+9NT179syQIUMyYcKEHHvssU1jP/3pT2ebbbbJDTfckO9973tJVpxBMmzYsAwfPrzNz95oo41y6aWX5jvf+U4uuOCCLF++PJdcckmrg5hNN900d955Z773ve/l/vvvz6233pp+/fpl++23z9lnn9007rjjjss999yTH/3oR1m8eHE233zznHDCCfnsZz/7tvfv1atXbrjhhlx00UW5+eabs/HGG+eII47IAQcckFNPPbXZ2KFDh+b222/Pf/3Xf+Xmm2/O4sWLs9lmm2XXXXfNcccd1+a1aTRw4MAcccQRufvuu/PSSy9lq622ave9Gm288cY5/vjjc9VVV+Xxxx/P0KFDVzuute9/o402ytVXX52LL744P/jBD/KOd7wjH/7wh/PJT36y3eHDRz/60dxxxx255ZZbUltbm8022ywjR47MGWec0e7Ohoceeii1tbU56KCD1jjmoIMOyvXXX59f/OIXa/zyvqKiIhdffHFqa2tz7bXXprq6Op/+9KeTJK+88kq+/OUvr3ZeZwUx73rXu3LnnXfmRz/6UaZOnZr77rsvlZWVGTJkSC699NJ87GMf69C2f+19D3/961+TJC+++OJq5990001NQUxlZWV++MMfZuLEiZk8eXLefPPN7LLLLrnkkktabCH2u9/9LpMmTWp27corr0ySfO5zn2sKYgYOHJjKyspcd911WbRoUbbccsuceeaZOemkk9Kjh391BwAoZxUNq+7LAAAAAAAAQKewySwAAAAAAECJCGIAAAAAAABKRBADAAAAAABQIoIYAAAAAACAEhHEAAAAAAAAlIggBgAAAAAAoEQEMQAAwBoNGTIkX//61zvtfrNnz86QIUMyZcqUpmtXXXVVhgwZ0mnPmDJlSoYMGZLZs2d32j1LYXVrsbax1113XcnrevzxxzNkyJA8/vjjJX8WAABsCHp0dQEAAEDnmTJlSr7yla+s8fXbb789u++++7oriDaZNm1annnmmZxxxhldXQoAANBJBDEAALAe+vznP58tt9yyxfWtttqqC6phdbbYYos888wz6dHjX/9aNm3atPz4xz/u0iBm7733zjPPPJONNtqoy2oAAID1iSAGAADWQwcccEB22WWXri6D1Vi+fHmKxWJ69uyZd7zjHV1dTguFQqFb1gUAAOXKGTEAALCBKhaLufHGG3PEEUdkl112yfvf//6ccsop+dOf/tRi7AMPPJDDDz88O++8cw477LA8/PDDLcbMnTs3X/nKV7Lffvs1jfvJT37S7vruvvvujB49Orvuumv22WefnHXWWfnnP//Z7vv9+Mc/zmGHHZadd945H/jAB3LhhRemtrZ2teM+9KEPZdddd83RRx+dJ598MieccEJOOOGEpjHLli3LlVdemdGjR2fPPffM7rvvnk984hP53e9+1+xeK5/tcsMNN2TEiBHZZZddMn369BZnxEyYMCE//vGPk6w4m6fxz6puv/32jBgxIjvvvHOOOuqoPPPMM81enzBhQvbYY4+8/PLLGTduXPbYY4/sv//+Tfd+/vnnc+KJJ2b33XfPQQcdlHvuuafZ/DWdEdP43LdblzWdz7Omez799NM55ZRTsueee2a33XbL8ccfnz/84Q8t3jMAAJQzHTEAALAeWrhwYebNm9fsWkVFRfr379/081e/+tVMmTIlBxxwQI4++ujU19fnySefzNNPP92sm+YPf/hD7rvvvnziE59Inz59Mnny5Hz+85/Pb37zm6b7vf766zn22GNTUVGRT37ykxkwYEAefvjhfPWrX83ChQtz0kkntan+73//+7nyyiszcuTIHH300Zk3b15uvvnmfPKTn8xdd92VqqqqNt3vqquuyqRJk7Lffvvl4x//eP7xj3/k1ltvzZ/+9KfceuutTdtw3XLLLfn617+evfbaKyeddFLmzJmT8ePHp6qqKptvvnmz9b3zzjtz+OGH55hjjsmiRYvyk5/8JKeeemruvPPOvPe97232/ClTpuTNN9/Msccem549e6a6ujrFYrHZmOOOOy6vvvpqHn300UycOHG17+PnP/95Fi1alOOOOy4VFRW59tprc8YZZ+SBBx5otpVYfX19TjvttOy11145++yzc8899+TrX/96evXqlcsvvzxHHHFEDj744Nx2220599xzs/vuu2fQoEFrXL8777wz559/fvbYY4+MHTs2s2bNyumnn57q6ur827/9W5t+F41++9vf5rTTTsvOO++cz33uc6moqMiUKVMyduzY3HLLLdl1113bdV8AAOhuBDEAALAeWl3w0bNnz6Zul9/97neZMmVKTjjhhJx33nlNYz71qU+loaGh2bzp06fnl7/8ZdP5MkOHDs2oUaPyi1/8Iscff3yS5PLLL099fX3uueeepnDm4x//eL74xS9m0qRJGTNmTDbeeONW1T5nzpxcddVVOfPMM/OZz3ym6frBBx+cI488Mrfcckuz62szb968/OAHP8gHPvCBXHPNNSkUVmwMMHjw4Hz961/Pz372sxx11FFNXS677LJLbrzxxqazW4YMGZIJEyY0C2Kqq6vz4IMPpmfPnk3Xjj322IwcOTKTJ0/ON77xjWY1vPLKK7n//vszYMCApmurdo3sscce2WabbfLoo49m1KhRq30vL7/8cu67775UV1cnSbbddtt89rOfzSOPPJKDDjqoadybb76Zj370oxk3blyS5Igjjsj++++f//iP/8h3vvOdHHrooUmS/fbbLyNHjsxdd921xnNp3nrrrVx++eV573vfm5tuuqnpPW+//fb5z//8z3YFMQ0NDbngggsydOjQXHvttamoqEiSjBkzJocddliuuOKKXH/99W2+LwAAdEe2JgMAgPXQ+eefnx/96EfN/lxzzTVNr993332pqKjI5z73uRZzG78Ub7Tffvs1hTBJsuOOO2aTTTbJrFmzkqz4Uv2+++7L8OHD09DQkHnz5jX9+cAHPpC6urr8+c9/bnXt999/f4rFYkaOHNnsXptuumm23nrrFttbrc1jjz2Wt956KyeeeGJTCJMkxxxzTDbZZJNMmzYtSfLss89mwYIFOfbYY5tCmGRFiNEYfDSqrKxsCiSKxWIWLFiQ5cuXZ+edd85f/vKXFjUcfPDBzUKY9jr00EOb1bLXXnslSdPvYmXHHHNM019XVVVl2223Ta9evTJy5Mim64MHD05VVdVq5zd69tln88Ybb2TMmDHNgqcjjzwyffv2bdf7eO655/Liiy/miCOOyPz585t+x4sXL86+++6bJ554okXHEAAAlCsdMQAAsB7addddm20vtqqXXnop73rXu9KvX7+13mt1HQ/V1dVN56vMmzcvtbW1uf3223P77bev9h6rbpP2dl588cU0NDTk4IMPXu3rK4ckrfHyyy8nWRE6rKxnz54ZNGhQ5syZ02zcyqFT4/O22GKLFvf96U9/muuvvz7/+Mc/8tZbbzVd33LLLVuMXd219lj1d9EYyqx61s073vGOFsFP3759s/nmm7cI2vr27bvas3IaNa7L1ltv3ez6Rhtt9Lbbmb2dF198MUly7rnnrnFMXV1diwAMAADKkSAGAAB4W5WVlau93riFWWPnwkc/+tEceeSRqx27ukPn16RYLKaioiLXXHPNap/du3fvVt+rVO6+++5MmDAhI0aMyCmnnJJ3vvOdqayszA9+8IPVdpe0dlu2tVnb72Jt41o7v71WDXkardrd0vi8L3/5yy3O02nUHX7PAADQGQQxAACwAdpqq63yyCOPZMGCBa3qink7AwYMSJ8+fVIsFrPffvt1Sm0NDQ3Zcssts+2223b4fu9+97uTJDNmzGjWwbFs2bLMnj27qebGcS+99FLe//73N41bvnx55syZ0yxMuvfeezNo0KBMmjSpWfjw3e9+t0O1rinI6EqN6zJz5szsu+++TdffeuutzJ49OzvuuGPTtaqqqiQrullW1th11Kjx97DJJpt0ymcGAAC6M2fEAADABujggw9OQ0NDJk2a1OK1tnZHVFZW5pBDDsm9996bv/3tby1eb8u2ZI21VVZWZtKkSS1qaWhoyPz589t0v/322y8bbbRRJk+e3Ox+P/nJT1JXV5cDDzwwSbLzzjunX79+ueOOO7J8+fKmcffcc09qamqa3bOxs2Tl+z399NP54x//2KbaVtWrV68kLbca60o777xzBgwYkNtuuy3Lli1ruv7Tn/60RZ2N27o98cQTTdfq6+tzxx13tLjnVlttleuvvz6LFi1q8cy2fmYAAKA70xEDAADroYcffjgzZsxocf1973tfBg0alPe///0ZNWpUJk+enJkzZ2b//fdPsVjMH/7whwwdOjTHH398m573pS99KY8//niOPfbYHHPMMdl+++1TU1OTP//5z/ntb3+b3//+962+11ZbbZUzzzwz3/72tzNnzpyMGDEiffr0yezZs/PAAw/k2GOPzSmnnNLq+w0YMCDjxo3LpEmTcuqpp2b48OH5xz/+kVtuuSW77LJLPvrRjyZZcWbMGWeckYsuuihjx47NyJEjM2fOnEyZMqXFuTEf/OAHc99992X8+PH54Ac/mNmzZ+e2227L9ttvn8WLF7e6tlX9+7//e5Lk4osvzgc+8IFUVlbmsMMOa/f9OsNGG22UM888M+eff37Gjh2bQw89NLNnz86UKVNanBHznve8J7vvvnu+853vpKamJtXV1fnlL3/ZLNhKkkKhkIsvvjinnXZaDj/88IwePToDBw7M3Llz8/jjj2eTTTbJ1VdfvS7fJgAAlIwgBgAA1kNr2iLrkksuafry/JJLLsmQIUPyk5/8JBMnTkzfvn2z8847Z4899mjz8zbddNPceeed+d73vpf7778/t956a/r165ftt98+Z599dpvv9+lPfzrbbLNNbrjhhnzve99Lkmy++eYZNmxYhg8f3ub7nXHGGRkwYEBuvvnmXHLJJamurs6xxx6bL37xi9loo42axh1//PFpaGjIj370o1x22WXZcccd8/3vfz8XX3xx3vGOdzSNGz16dF5//fXcfvvteeSRR7L99tvnm9/8ZqZOndqm0GlVBx98cE444YT84he/yM9+9rM0NDR0eRCTJMcdd1zq6+tz3XXXZeLEidlhhx3y/e9/P1deeWWLsd/61rdy/vnn54c//GGqqqpy9NFHZ+jQoTn55JObjRs6dGhuv/32/Nd//VduvvnmLF68OJtttll23XXXHHfccevqrQEAQMlVNHTWqYwAAADroWKxmH333Tcf/vCHc/HFF3d1Od3KCSeckCSZPHlyF1cCAADdlzNiAAAA/s+bb77Z4lyau+66KwsWLMg+++zTRVUBAADlzNZkAAAA/+ePf/xjLrnkknzkIx9Jv3798pe//CU/+clPssMOO+QjH/lIV5cHAACUIUEMAADA/9liiy2y+eabZ/LkyU2HzY8aNSpnn312evbs2dXlAQAAZcgZMQAAAAAAACXijBgAAAAAAIASEcQAAAAAAACUiDNiWqmhoSHFol3cAAAAAABgQ1coVKSioqJVYwUxrVQsNmTevEVdXQYAAAAAANDFBgzok8rK1gUxtiYDAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAokR5dXQAAAAAAAEBXKRQqUihUlOz+ghgAAAAAAGCDVChUZED/3qkotG0DsYaGhlaPFcQAAAAAAAAbpEKhIhWFQmru/13q59e2ak5l/6pUf/j9rX6GIAYAAAAAANig1c+vzfLXF5Tk3m3rtQEAAAAAAKDVBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCLrdRAzbdq0fOxjH8uoUaMyevToPPXUU11dEgAAAAAAsAHp0dUFlNJXv/rV3HDDDdl+++3zm9/8JhdffHH++7//u6vLAgAAAAAANhDdriNm5syZOf/88zNq1KjstNNOOfzww1c7bvr06Tn55JOz++67Z9iwYZk4cWKWLVvWbEyhUEhdXV2SpK6uLgMHDix5/QAAAAAAAI26XUfMCy+8kGnTpmW33XZLsVhMQ0NDizE1NTUZO3Zsttlmm1x11VWZO3duLr300ixdujTnn39+07hvfvObOf3007PxxhunoaEht95667p8KwAAAAAAwAau2wUxw4cPz4gRI5IkEyZMyLPPPttizG233ZZFixZl0qRJ6devX5Kkvr4+F154YcaNG5eBAwdm+fLl+eEPf5gbbrghO+64Y+64446cd955uf7669fl2wEAAAAAADZg3S6IKRTWvlvaww8/nH333bcphEmSkSNH5mtf+1oeffTRjB49Os8991xqamqy4447JkmOOOKI/L//9/86VFuPHt1uJzcAAAAAAKCdKitL/71/twtiWmPGjBk56qijml2rqqrKZpttlhkzZiRJNt9887z00kv55z//mX/7t3/L//zP/2T77bdv9zMLhYr079+nQ3UDAAAAAAAblrIMYmpra1NVVdXienV1dWpqapIkm222Wc4999yceuqpqaysTO/evTvUEVMsNqS2dnG75wMAAAAAAN1LZWUhVVW9SvqMsgxiWuuoo45q0TnTEcuXFzvtXgAAAAAAwPqvLA89qaqqSl1dXYvrNTU1qa6u7oKKAAAAAAAAWirLIGbw4MFNZ8E0qqury2uvvZbBgwd3UVUAAAAAAADNlWUQc8ABB+Sxxx5LbW1t07WpU6emUChk2LBhXVgZAAAAAADAv3S7M2KWLFmSadOmJUnmzJmThQsXZurUqUmSffbZJwMGDMiYMWMyefLkjB8/PuPGjcvcuXMzceLEjBkzJgMHDuzK8gEAAAAAAJpUNDQ0NHR1ESubPXt2PvShD632tZtuuilDhw5NkkyfPj0XXXRRnnrqqfTp0yejRo3KWWedlZ49e5akrvr6YubNW1SSewMAAAAAAOtejx6F9O/fJ/PuuC/LX1/Qujmb9suAYw9u9TO6XRDTXQliAAAAAABg/bIugpiyPCMGAAAAAACgHAhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIR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AAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJSIIAYAAAAAAKBEBDEAAAAAAAAlIogBAAAAAAAoEUEMAAAAAABAiQhiAAAAAAAASkQQAwAAAAAAUCKCGAAAAAAAgBIRxAAAAAAAAJRIj64uoJSWLl2aiy++OE888UR69OiRgw8+OF/4whe6uiwAAAAAAGADsV4HMZdddlk23XTT3HvvvUmS119/vYsrAgAAAAAANiTdLoiZOXNmrrvuujz99NN54YUXMnjw4Pz85z9vMW769Om5+OKL89RTT6VPnz4ZNWpUzjzzzPTs2TNJsmjRotx777156KGHmuZsuumm6+ptAAAAAAAAdL8g5oUXXsi0adOy2267pVgspqGhocWYmpqajB07Nttss02uuuqqzJ07N5deemmWLl2a888/P0kya9asvPOd78xll12Wp556Kv37988555yTHXfccV2/JQAAAAAAYANV6OoCVjV8+PBMmzYt3/3ud/Pv//7vqx1z2223ZdGiRZk0aVL233//HH300TnnnHNy2223Ze7cuUmS5cuX529/+1v23XffTJkyJSeffHLGjx+/Lt8KAAAAAACwget2QUyhsPaSHn744ey7777p169f07WRI0emWCzm0UcfTZK8+93vTq9evTJixIgkyQc+8IEsXrw48+bNK0ndAAAAAAAAq+p2W5O1xowZM3LUUUc1u1ZVVZXNNtssM2bMSJIMGDAgu+22W5588snstdde+dOf/pSePXumf//+7X5ujx7dLrcCAAAAAADaqbKy9N/7l2UQU1tbm6qqqhbXq6urU1NT0/TzhRdemP/4j/9IXV1devXqlSuvvDIVFRXtemahUJH+/fu0u2YAAAAAAGDDU5ZBTGtts802ueWWWzrlXsViQ2prF3fKvQAAAAAAgK5XWVlIVVWvkj6jLIOYqqqq1NXVtbheU1OT6urqkj13+fJiye4NAAAAAACsf8ry0JPBgwc3nQXTqK6uLq+99loGDx7cRVUBAAAAAAA0V5ZBzAEHHJDHHnsstbW1TdemTp2aQqGQYcOGdWFlAAAAAAAA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AACADVChI5P32Wef/Pd//3eOP/74fPCDH8xll12WZ555pkMFzZw5M+eff35GjRqVnXbaKYcffvhqx02fPj0nn3xydt999wwbNiwTJ07MsmXLOvRsAAAAAACAztShjpjvfOc7Wbp0aX7zm9/kV7/6VW699dbccMMN2WKLLXLooYdm5MiRee9739ume77wwguZNm1adttttxSLxTQ0NLQYU1NTk7Fjx2abbbbJVVddlblz5+bSSy/N0qVLc/755zcb+7nPfS7FYjEHHnhgPv/5zzdtUwYAAAAAAFBqHQpikmTjjTfOyJEjM3LkyCxevDgPPvhgfvnLX+aGG27INddck6233jpTp05t9f2GDx+eESNGJEkmTJiQZ599tsWY2267LYsWLcqkSZPSr1+/JEl9fX0uvPDCjBs3LgMHDkyS3HLLLdl8882zaNGifPnLX861116b008/vaNvGQAAAAAAoFU6HMSsrHfv3jn88MNz0EEH5ac//Wkuv/zyzJw5s033KBTWvlvaww8/nH333bcphEmSkSNH5mtf+1oeffTRjB49Okmy+eabJ0n69OmTo48+OrfffnuballVjx4d2skNAAAAAABYjYqKihQKFa0eXyw2pKGhIZWV7f/eviNz26LTgpglS5bkwQcfzK9+9av8z//8T5YtW5atttoqI0eO7KxHNJkxY0aOOuqoZteqqqqy2WabZcaMGUmSxYsXp1gsZpNNNsny5ctz3333ZciQIe1+ZqFQkf79+3SobgAAAAAAoKWGYkMq2hDEtHX86lRV9erQ/NbqUBDz5ptv5qGHHsovf/nLPPzww1myZEm22GKLnHDCCTn00EOz0047dVadzdTW1qaqqqrF9erq6tTU1CRJ3njjjabzYerr67PHHnvkM5/5TLufWSw2pLZ2cbvnAwAAAAAALVVWFlJV1Ss19/8h9fMWrn38gE1S/eE9U1u7JEn7A5WOzm+tDgUx73//+7N06dK8613vyrHHHptDDz00u+22W2fV1iGDBg3K3Xff3an3XL682Kn3AwAAAAAAVqiftzDLX69p/fj6jn1n39H5rdWhIGb06NEZOXJk9tprr86qp1WqqqpSV1fX4npNTU2qq6vXaS0AAAAAAABr0qEg5j//8z87q442GTx4cNNZMI3q6ury2muvZfDgwV1SEwAAAAAAwKoKHb3BwoUL88Mf/jCn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ImbWzzSXXCJNTUFNQgVR0czXJQXRzFfTLJMScEtFVAQtRURBlPX8/uCaE8M5AzPgOE7cn+vyKoZzz/PM8Mw53znPWYiIiPSEEzFERERERERERERERER6wokYIiIiIiIiIiIiIiIiPeFEDBERERERERERERERkZ5wIoaIiIiIiIiIiIiIiEhPOBFDRERERERERERERESkJ5yIISIiIiIiIiIiIiIi0hNOxBAREREREREREREREekJJ2KIiIiIiIiIiIiIiIj0hBMxREREREREREREREREesKJGCIiIiIiIiIiIiIiIj3hRAwREREREREREREREZGemBq6A1R9KJUKKJUKnTLFxQKKiwU99YiIiIiIiIiIiIiISL84EUPPhVKpQD0bcyiUup2EJRQXI/NBrp56RURERERERERERESkX5yIoedCqVRAoVQi68geFD7I0CpjatMAdb0H6nwWDRERERERERERERHRi4ITMfRcFT7IQGHGX4buBhERERERERERERHRc6HbdaKIiIiIiIiIiIiIiIhIa5yIISIiIiIiIiIiIiIi0hNOxBAREREREREREREREekJJ2KIiIiIiIiIiIiIiIj0hBMxREREREREREREREREesKJGCIiIiIiIiIiIiIiIj3hRAwREREREREREREREZGecCKGiIiIiIiIiIiIiIhITzgRQ0REREREREREREREpCeciCEiIiIiIiIiIiIiItITTsQQERERERERERERERHpCSdiiIiIiIiIiIiIiIiI9IQTMURERERERERERERERHrCiRgiIiIiIiIiIiIiIiI94UQMERERERERERERERGRnnAihoiIiIiIiIiIiIiISE84EUNERERERERERERERKQnnIghIiIiIiIiIiIiIiLSE07EEBERERERERERERER6QknYoiIiIiIiIiIiIiIiPSEEzFERERERERERERERER6wokYIiIiIiIiIiIiIiIiPeFEDBERERERERERERERkZ5wIoaIiIiIiIiIiIiIiEhPFIIgCIbuhDEQBAHFxXyrqsLERIminEcQiou0Wl6hNIGJhRWKiopL5R9CKCrULm9iChML6zL5LK3yJdm6YlaVL8y5D2jTvokpTC3qq7VdmHMfQlGBln03k+QLdMyblcnn52RAKNbyvVOaooZFg0rly2ZV+bzHGVq/9zXrqLed9zgDxVr+3ZUy+adatq1qv5ZMvljL915pYvbM808eZ6C4uOK8UmmG2nWk731l8yYmSuRqmVXlzZ9x/rGO+TqVzJfNls4XaZE3kWk7J1e3v7uFuTRfpGXeRCafnatd31X9t3zG+Uda5k2UZrAyl773D3XIW5dp+2FuBgq17LupTP7BE91eu01t9XzmE93ar1cmn/EkAwVarG/NlKZoUFv63mU8ydQhX69M21laZf/J1y2Tf6hj3lomr12dYKY0kck/0jFvVSafrVW+JGspyRZq2bapxnxxBUlVXimTz9GxfQuZvC7tl80/1qr9krbryIzbyuX/yerS9zL53Fzd3jtzcz3kK+6/qVKplq1qviT7RLf3zrz2C5W/n/sUBVrmzZRK1DevVal82ax6vuLviGZKhbTtJ3m69b12TZm8dt9PzZQK2XyhlnlT2Xy+VvmSbA3pe/ekQOtxW7+2WZm2C3Tse9l8oY550zJ1QiEKtfvTwVQJ2JTJP3xSpFP71rVN1GusJ0Uo0iJvolTAqlRWlc9+UqTVvg2lUgHLMm0/1rJtVft1ZPJaDnsolZDkc3XMm5fJP8nVLq9UArXNpe9dZfMmJko81TKryteSyQvabWqgMJHm83KLoOWmCkoToGbZ/OMiCFr2X6EEatZRz+c/1q7/ChOgRh3pe1/wWLv+K00AszJtF+QUQdBy3CqUCphZqOcLc4ogFGmZN1HAtGw+W7f2TS3V80XZ2rWvMFHAxFL63hVlF+qQNy3TtnZZzfkCHfNm0rwO7500n69jvoZMvuKBr1AqpdmcPN1eu0VNmbx2HzqFiVIm/xTQsn2YKGBiUUsmr+WH3kRZ+XyZ7D/5Jzrka5dpW8usxnyujnlz7ZYFJ2KIiIiIiIiIiIiIiIj0hpcmIyIiIiIiIiIiIiIi0hNOxBAREREREREREREREekJJ2KIiIiIiIiIiIiIiIj0hBMxREREREREREREREREesKJGCIiIiIiIiIiIiIiIj3hRAwREREREREREREREZGecCKGiIiIiIiIiIiIiIhITzgRQ0REREREREREREREpCeciCEiIiIiIiIiIiIiItITTsQQERERERERERERERHpCSdiiIiIiIiIiIiIiIiI9IQTMURERERERERERERERHrCiRgiIiIiIiIiIiIiIiI94UQMERERERERERERERGRnnAihoiIiIiIiIiI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/wuCgMTERMmXtytXrog3df835Y2574bODxw4EH/99RcmTZoEW1tbvPrqq7h79y58fX3Fo32zsrLg5uaGTz755Jllq3vemPv+LPIVqVmzJvr27Yu+ffvi0aNHzzVvyLare17fbU+cOBGBgYH47bffUKdOHSQnJ2PNmjX4+OOPkZaWBhcXF1y8eBFHjhzBggULnmnekG0be96Y+w4AgYGBmDJlCpKTk+Hu7g4zMzOcO3cOP/30E8aOHQsLCwsAwKVLl+Do6PhM84Zsu7rnDd13APD398e8efOQmpqK3r17o0WLFrCysgIAZGdnIyUlBXFxcThw4AAWLVok+xzlUQiaDv0homcmNTUVV69ehZeXV7nLPX36FPfv30eTJk1emLwx993QeUO2ffDgQWzevBnr16+XnP6rUlRUhAULFuDnn3/G0aNH1X7HfOXzxtx3ADh+/DgePnwIX19f2axKYGAg2rRpgwkTJrwweWPuu6Hzhu57eW7fvo20tDS0atVKLJ6fR5b5f/97L3cZs4YNG8Ld3V3tMT8/Pzg4OGD27Nn/mrwx9/1FyKukpKRg9+7dSExMREZGBoqLi2FtbQ1HR0d4eHjA29tb45lZVclW97wx970q+dGjR2PBggVwcHDQ+NzlqUrekG1X97yh+w6UHPkdGxuLwsJCDBw4EB06dMAff/yBJUuW4Nq1a3jllVcwfPhwjBkz5pnnDdm2seeNue8AkJCQgNDQUPz555/Iy8uDvb09Ro4ciUGDBonryKSkJNSoUQPOzs7PNG/Itqt73tB9B4CYmBiEhobixo0bku2xIAho1qwZAgMD0a9fP9l8eTgRQ0REREREREREREREBODWrVtISUkRzxa0srJCixYtYGdnV+nn5EQMERERERERERERERFRBR48eIDk5GR07NhRp5zmu6USERERERERERERERERAOC3337TeFm98nAihoiIiIiIiIiIiIiISE9MDd0BIiIiIiIiIiIiIiIiQ/Hx8dFqucePH1fq+TkRQ0RERERERERERERE1VZKSgocHR3RqlWrcpdLT0/HnTt3dH5+TsQQEREREREREREREVG11bJlS9jb2yM4OLjc5Q4dOoQzZ87o/Py8RwwREREREREREREREVVbbdq0QVJSklbLCoKg8/MrhMqkiIiIiIiIiIiIiIiI/gVSU1Nx9epVeHl5lbvc06dPcf/+fTRp0kSn5+dEDBERERERERERERERkZ7w0mRERERERERERERERER6wokYIiIiIiIiIiIiIiIiPeFEDBERERERERERERERkZ5wIoaIiIiIiIiIiIiIiEhPOBFDRERERESkJ6dPn4aTkxNOnz4tPjZr1ix4enoasFdERERERPQ8cSKGiIiIiIioirZt24bdu3cbuhtERERERPQCMjV0B4iIiIiIiIzd9u3bYWNjg0GDBqk93rFjRyQlJcHMzMxAPSMiIiIiIkPjRAwREREREZGeKJVK1KxZ09DdICIiIiIiA+KlyYiIiIiI6IUXHx+Pd999F61bt4a3tzd27NiB0NBQODk5AQDS0tLg5OQke3kwJycnhIaGij+np6djwYIF6NWrF9q0aYPOnTtj2rRpSEtLU8vt3r0bTk5O+P333xEcHIw33ngD7dq1w5QpU5CZmSku5+npiatXr+K3336Dk5MTnJycMHr0aADy94iRU1xcjMjISPTr1w+tW7dGly5dMG/ePDx8+FBtuXPnzsHPzw+dO3dGmzZt4OnpiU8++US3N5OIiIiIiJ4rnhFDREREREQvtMuXL8PPzw/16tVDYGAgCgsLERoaivr161fq+c6dO4ezZ8+iX79+eOmll5Ceno7t27djzJgxiImJQe3atdWWX7x4MaysrDB16lSkp6dj8+bNWLhwIVatWgUAmD17NhYtWgRzc3NMmjQJANCgQQOd+jRv3jzs2bMHgwYNwujRo5GWloZt27bh4sWL2L59O8zMzHD//n34+fnBxsYGAQEBsLKyQlpaGn744YdKvQ9ERERERPR8cCKGiIiIiIheaCEhIRAEAdu2bcMrr7wCAOjVqxd8fHwq9Xw9evRA79691R7z8PDAsGHDcOjQIbzzzjtqv6tbty42bdoEhUIBoOTslS1btiA7OxuWlpbw9vbGqlWrYGNjgwEDBujcn/j4eHz33XdYvny52mvq3Lkz/P39ERcXBx8fH5w9exYPHz7Exo0b0bp1a3G5Dz74QOc2iYiIiIjo+eGlyYiIiIiI6IVVVFSEkydPwtvbW5yEAQAHBwe4u7tX6jlr1aol/n9BQQEePHiApk2bwsrKChcvXpQsP3ToUHESBgA6dOiAoqIipKenV6r9suLi4mBpaYmuXbsiMzNT/Ofq6gpzc3PxsmaWlpYAgGPHjqGgoOCZtE1ERERERPrHM2KIiIiIiOiFlZmZiadPn8Le3l7yu+bNm+P48eM6P+fTp08RFhaG3bt34++//4YgCOLvsrOzJcuXngACACsrKwDAo0ePdG5bzs2bN5GdnY0333xT9vf3798HAHTq1Am9evXCmjVrEBkZiU6dOsHb2xs+Pj6oUaPGM+kLERERERE9e5yIISIiIiIio1f6jJXSioqKJI8tWrQIu3fvxtixY9GuXTtYWlpCoVDggw8+UJuUUVEq5S8kILdsZRQXF6N+/fpYvny57O/r1asHoOQ1hoSEICEhAf/73/9w4sQJzJ49GxEREfj2229Rp06dZ9IfIiIiIiJ6tjgRQ0REREREL6x69eqhVq1auHnzpuR3169fF//f2toagPQsldu3b0tyqvvAzJo1S3wsLy9P9mwYbWmaCNJG06ZN8csvv6B9+/Zql03TpF27dmjXrh0++OAD7N+/HzNnzkRsbCyGDBlS6T4QEREREZH+8B4xRERERET0wjIxMYG7uzuOHDmiNqly7do1nDx5UvzZwsICNjY2iI+PV8tHR0fLPmdZW7ZskT17Rlu1a9eu9KXK+vTpg6KiIqxbt07yu8LCQvF5Hz58KDkLx8XFBQCQn59fqbaJiIiIiEj/eEYMERERERG90AIDA3HixAmMGjUKI0aMQFFREbZu3QpHR0dcvnxZXG7IkCH45ptvMGfOHLi5uSE+Pl7trBmVHj16YN++fbCwsICjoyMSEhJw6tQp1K1bt9J9dHV1xfbt27Fu3TrY29ujXr16Gu/5UlanTp0wbNgwhIWF4dKlS+jatSvMzMxw48YNxMXFYc6cOejduzf27NmD7du3w9vbG02bNsXjx4+xc+dOWFhY4K233qp034mIiIiISL84EUNERERERC80Z2dnbNy4EcHBwQgJCcFLL72EwMBA3Lt3T20iZsqUKcjMzMShQ4dw8OBBvPXWW9iwYYNkQmTOnDlQKpXYv38/8vLy0L59e0RERMDf37/SfZwyZQpu376NDRs24PHjx+jUqZPWEzEAsHDhQri5uWHHjh346quvYGJigiZNmsDX1xft27cHUDJhc+7cOcTGxiIjIwOWlpZo06YNli9fDjs7u0r3nYiIiIiI9EshPKs7TBIRERERET1HoaGhWLNmjdpkDBERERER0YuG94ghIiIiIiIiIiIiIiLSE07EEBERERERERERERER6QknYoiIiIiIiIiIiIiIiPSE94ghIiIiIiIiIiIiIiLSE54RQ0REREREREREREREpCeciCEiIiIiIiIiIiIiItITTsQQERERERERERERERHpCSdiiIiIiIiIiIiIiIiI9IQTMURERERERERERERERHrCiRgiIiIiIiIiIiIiIiI94UQMERERERERERERERGRnnAihoiIiIiIiIiIiIiISE/+H0HkunkT54BwAAAAAElFTkSuQmCC", - "text/plain": [ - "<Figure size 2000x800 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "sns.set(rc={\"figure.figsize\": (20, 8)})\n", - "ax = sns.barplot(data=df_quantiles, x=\"quantiles\", y=\"revkire\")\n", - "_ = ax.set_yscale(\"log\")\n", - "_ = ax.set_xticklabels(labels=ax.get_xticklabels(), rotation=90)\n", - "_ = ax.set_title(\"Centiles de RFR dans FAKE POTE 2019\\nEchelle logarithmique\")" - ] - }, - { - "cell_type": "markdown", - "id": "canadian-flavor", - "metadata": {}, - "source": [ - "On est très proche de ce qu'on l'on a vu sur POTE. 👏 " - ] - }, - { - "cell_type": "markdown", - "id": "separate-sperm", - "metadata": {}, - "source": [ - "## On le fait pour plusieurs de colonnes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "revolutionary-companion", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.44367670147237526" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from random import random\n", - "\n", - "random()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "nervous-bradley", - "metadata": {}, - "outputs": [], - "source": [ - "sas_columns = [\n", - " \"rnsgbd\",\n", - " \"rnsgld\",\n", - " \"revkire\",\n", - " \"Z1aj\",\n", - " \"Z1ap\",\n", - " \"Z1as\",\n", - " \"Z1bj\",\n", - " \"Z1bp\",\n", - " \"Z1bs\",\n", - " \"Z1cj\",\n", - " \"Z1cw\",\n", - " \"Z1dw\",\n", - " \"Z2ch\",\n", - " \"Z2dc\",\n", - " \"Z2dh\",\n", - " \"Z2tr\",\n", - " \"Z3ua\",\n", - " \"Z3vg\",\n", - " \"Z3vz\",\n", - " \"Z4ba\",\n", - " \"Z4bb\",\n", - " \"Z4bc\",\n", - " \"Z4bd\",\n", - " \"Z4be\",\n", - " \"Z6de\",\n", - " \"Z8sc\",\n", - " \"Z8sw\",\n", - " \"Z8sx\",\n", - " \"CICS\",\n", - " \"MNIMQG\",\n", - "]\n", - "col_to_fake = []\n", - "for col in sas_columns:\n", - " c = 0.6 + random() / 5\n", - " col_dict = {\n", - " \"name\": col,\n", - " \"c\": c,\n", - " \"nb_zeros\": int(2_000_000 * random()),\n", - " \"scale\": 4000 * (1 / c),\n", - " }\n", - " col_to_fake.append(col_dict)\n", - "# col_to_fake" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "stretch-wells", - "metadata": {}, - "outputs": [], - "source": [ - "def gen_all_data(reduce_output_ratio=100, filepath=None):\n", - " \"\"\"\n", - " ::reduce_output_ratio:: 1 for full data, 2 for alf.\n", - " ::filepath:: Chemin et nom du fichier à sauver\n", - " \"\"\"\n", - " df_pote = None\n", - " nb_ff = 39_000_000\n", - " for col in col_to_fake:\n", - " values = get_random_data(\n", - " nb_zeros=col[\"nb_zeros\"] // reduce_output_ratio,\n", - " nb_above_zero=(nb_ff - col[\"nb_zeros\"]) // reduce_output_ratio,\n", - " c=col[\"c\"],\n", - " scale=col[\"scale\"],\n", - " )\n", - " df_temp = vaex.from_dict({col[\"name\"]: values.astype(int)})\n", - " if df_pote is not None:\n", - " df_pote = df_pote.join(df_temp)\n", - " else:\n", - " df_pote = df_temp\n", - " if filepath:\n", - " df_pote.export_parquet(filepath)\n", - " return df_pote" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "australian-holly", - "metadata": {}, - "outputs": [], - "source": [ - "df_pote = gen_all_data(reduce_output_ratio=10_000)" - ] - }, - { - "cell_type": "markdown", - "id": "certified-legislation", - "metadata": {}, - "source": [ - "## On le sauve dans le même format que sur le CASD\n", - "\n", - "Parquet occupe moins d'espace que Arrow. Mais arrow ne nécessite quasiment pas de CPU car le fichier est chargé en mémoire tel quel.\n", - "\n", - "Test avec 39 millions de lignes et 29 colonnes int64 sur notre machine dans DC5:\n", - " - Parquet : 2.7G enregistrés en 22 secondes. (CPU Time = Wall time)\n", - " - Arrow : 4.9G enregistrés en moins de 4 secondes de temps CPU. (mais 44s de Wall time)\n", - " \n", - " => Arrow est donc plus consommateur en espace disque, beaucoup moins en CPU. Mais en temps d'attente perçu c'est équivalent." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "nutritional-minneapolis", - "metadata": {}, - "outputs": [], - "source": [ - "df_pote.export_parquet(f\"{OUT_PATH}fake_pote_light.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7a08c916-7857-4abb-88b9-6ef066bc14a1", - "metadata": {}, - "outputs": [ - { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click <a href='https://aka.ms/vscodeJupyterKernelCrash'>here</a> for more info. View Jupyter <a href='command:jupyter.viewOutput'>log</a> for further details." - ] - } - ], - "source": [ - "df_pote_full = gen_all_data(reduce_output_ratio=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "13d1e9ad-dae8-413e-a76f-05998f8a16f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "29" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(df_pote_full.get_column_names())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "sought-iraqi", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "39000000" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(df_pote_full)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "197cfe3f-d432-4cc7-a701-a3cd1414a1c7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 22.2 s, sys: 667 ms, total: 22.9 s\n", - "Wall time: 22.9 s\n" - ] - } - ], - "source": [ - "%%time\n", - "df_pote_full.export_parquet(f\"{OUT_PATH}fake_pote_full.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "817bb0ba-0784-463d-bb47-1af1b4880ea6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 482 ms, sys: 3.29 s, total: 3.77 s\n", - "Wall time: 44.3 s\n" - ] - } - ], - "source": [ - "%%time\n", - "df_pote_full.export(f\"{OUT_PATH}fake_pote_full.arrow\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "272b74e7-e19f-4a58-b944-26b6f47f16be", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4.9G\t/mnt/data-out/leximpact/fake//fake_pote_full.arrow\n", - "2.7G\t/mnt/data-out/leximpact/fake//fake_pote_full.parquet\n", - "608K\t/mnt/data-out/leximpact/fake//fake_pote_light.parquet\n" - ] - } - ], - "source": [ - "!du -h {OUT_PATH}/*" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "correct-revision", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>rnsgbd</th>\n", - " <th>rnsgld</th>\n", - " <th>revkireZ1aj</th>\n", - " <th>Z1ap</th>\n", - " <th>Z1as</th>\n", - " <th>Z1bj</th>\n", - " <th>Z1bp</th>\n", - " <th>Z1bs</th>\n", - " <th>Z1cj</th>\n", - " <th>Z1cw</th>\n", - " <th>...</th>\n", - " <th>Z4bb</th>\n", - " <th>Z4bc</th>\n", - " <th>Z4bd</th>\n", - " <th>Z4be</th>\n", - " <th>Z6de</th>\n", - " <th>Z8sc</th>\n", - " <th>Z8sw</th>\n", - " <th>Z8sx</th>\n", - " <th>CICS</th>\n", - " <th>MNIMQG</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>data_type</th>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>...</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " <td>int64</td>\n", - " </tr>\n", - " <tr>\n", - " <th>count</th>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>...</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " <td>39000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NA</th>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>...</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>mean</th>\n", - " <td>23612.393908666665</td>\n", - " <td>16686.731979897435</td>\n", - " <td>17999.188046692307</td>\n", - " <td>22921.20886292308</td>\n", - " <td>17040.07205202564</td>\n", - " <td>17793.07362046154</td>\n", - " <td>17940.101138589744</td>\n", - " <td>22387.16365876923</td>\n", - " <td>21754.137213666665</td>\n", - " <td>17330.203434615385</td>\n", - " <td>...</td>\n", - " <td>16978.268014820515</td>\n", - " <td>16787.83353846154</td>\n", - " <td>19892.917132</td>\n", - " <td>18082.292583871797</td>\n", - " <td>16897.733525717947</td>\n", - " <td>20601.45104748718</td>\n", - " <td>16426.29728551282</td>\n", - " <td>16835.938336615385</td>\n", - " <td>20841.969054974357</td>\n", - " <td>20157.805337358976</td>\n", - " </tr>\n", - " <tr>\n", - " <th>std</th>\n", - " <td>1985728.12425</td>\n", - " <td>168367.593804</td>\n", - " <td>468129.681965</td>\n", - " <td>1757926.167845</td>\n", - " <td>348813.11135</td>\n", - " <td>407738.350287</td>\n", - " <td>447581.264892</td>\n", - " <td>1463643.637909</td>\n", - " <td>1409093.278272</td>\n", - " <td>341201.458036</td>\n", - " <td>...</td>\n", - " <td>257858.16848</td>\n", - " <td>304306.782644</td>\n", - " <td>792156.835406</td>\n", - " <td>452162.364351</td>\n", - " <td>206769.636616</td>\n", - " <td>933589.30553</td>\n", - " <td>174934.347089</td>\n", - " <td>200883.42422</td>\n", - " <td>1257896.347618</td>\n", - " <td>1004222.29896</td>\n", - " </tr>\n", - " <tr>\n", - " <th>min</th>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>...</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " <td>0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>max</th>\n", - " <td>6365242793</td>\n", - " <td>391375749</td>\n", - " <td>1309974940</td>\n", - " <td>5585390554</td>\n", - " <td>939653071</td>\n", - " <td>1120062522</td>\n", - " <td>1245031261</td>\n", - " <td>4582824917</td>\n", - " <td>4402079217</td>\n", - " <td>913693388</td>\n", - " <td>...</td>\n", - " <td>658515059</td>\n", - " <td>802706621</td>\n", - " <td>2348740734</td>\n", - " <td>1258784526</td>\n", - " <td>504485451</td>\n", - " <td>2811703378</td>\n", - " <td>411754892</td>\n", - " <td>487116689</td>\n", - " <td>3897076655</td>\n", - " <td>3048988994</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>7 rows × 29 columns</p>\n", - "</div>" - ], - "text/plain": [ - " rnsgbd rnsgld revkireZ1aj \\\n", - "data_type int64 int64 int64 \n", - "count 39000000 39000000 39000000 \n", - "NA 0 0 0 \n", - "mean 23612.393908666665 16686.731979897435 17999.188046692307 \n", - "std 1985728.12425 168367.593804 468129.681965 \n", - "min 0 0 0 \n", - "max 6365242793 391375749 1309974940 \n", - "\n", - " Z1ap Z1as Z1bj \\\n", - "data_type int64 int64 int64 \n", - "count 39000000 39000000 39000000 \n", - "NA 0 0 0 \n", - "mean 22921.20886292308 17040.07205202564 17793.07362046154 \n", - "std 1757926.167845 348813.11135 407738.350287 \n", - "min 0 0 0 \n", - "max 5585390554 939653071 1120062522 \n", - "\n", - " Z1bp Z1bs Z1cj \\\n", - "data_type int64 int64 int64 \n", - "count 39000000 39000000 39000000 \n", - "NA 0 0 0 \n", - "mean 17940.101138589744 22387.16365876923 21754.137213666665 \n", - "std 447581.264892 1463643.637909 1409093.278272 \n", - "min 0 0 0 \n", - "max 1245031261 4582824917 4402079217 \n", - "\n", - " Z1cw ... Z4bb Z4bc \\\n", - "data_type int64 ... int64 int64 \n", - "count 39000000 ... 39000000 39000000 \n", - "NA 0 ... 0 0 \n", - "mean 17330.203434615385 ... 16978.268014820515 16787.83353846154 \n", - "std 341201.458036 ... 257858.16848 304306.782644 \n", - "min 0 ... 0 0 \n", - "max 913693388 ... 658515059 802706621 \n", - "\n", - " Z4bd Z4be Z6de \\\n", - "data_type int64 int64 int64 \n", - "count 39000000 39000000 39000000 \n", - "NA 0 0 0 \n", - "mean 19892.917132 18082.292583871797 16897.733525717947 \n", - "std 792156.835406 452162.364351 206769.636616 \n", - "min 0 0 0 \n", - "max 2348740734 1258784526 504485451 \n", - "\n", - " Z8sc Z8sw Z8sx \\\n", - "data_type int64 int64 int64 \n", - "count 39000000 39000000 39000000 \n", - "NA 0 0 0 \n", - "mean 20601.45104748718 16426.29728551282 16835.938336615385 \n", - "std 933589.30553 174934.347089 200883.42422 \n", - "min 0 0 0 \n", - "max 2811703378 411754892 487116689 \n", - "\n", - " CICS MNIMQG \n", - "data_type int64 int64 \n", - "count 39000000 39000000 \n", - "NA 0 0 \n", - "mean 20841.969054974357 20157.805337358976 \n", - "std 1257896.347618 1004222.29896 \n", - "min 0 0 \n", - "max 3897076655 3048988994 \n", - "\n", - "[7 rows x 29 columns]" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "df_pote_full.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "banned-speech", - "metadata": {}, - "outputs": [], - "source": [ - "# df_pote_sample = df_pote_full.sample(n=300_000)\n", - "# df_pote_sample.export_parquet(f\"{OUT_PATH}/fake_pote_partial.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "hazardous-edition", - "metadata": {}, - "outputs": [], - "source": [ - "# df_pote_sample.describe()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "leximpact-prepare-data-kernel", - "language": "python", - "name": "leximpact-prepare-data-kernel" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/00_tests_avant_casd.ipynb b/notebooks/code_CASD/extractions_base_des_impots/00_tests_avant_casd.ipynb deleted file mode 100644 index 6db89bfb..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/00_tests_avant_casd.ipynb +++ /dev/null @@ -1,234 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "cd323ce4-f97f-487f-98f5-a85a3f45a54c", - "metadata": {}, - "source": [ - "# Tests avant CASD" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5499d16b-b59f-4ee3-a11a-7598ccf06a1b", - "metadata": {}, - "outputs": [], - "source": [ - "# Activate multi-output in notebook\n", - "from IPython.core.interactiveshell import InteractiveShell\n", - "\n", - "InteractiveShell.ast_node_interactivity = \"all\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "195ded86-f330-44eb-b27c-61c5259d143a", - "metadata": {}, - "outputs": [], - "source": [ - "import vaex\n", - "import pandas as pd\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import Quantile" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4097cb49-754c-4bc2-a25f-301c4bba15d5", - "metadata": {}, - "outputs": [], - "source": [ - "# vdf = vaex.open(\"/mnt/data-out/leximpact/fake//fake_pote_full.parquet\")\n", - "vdf = vaex.open(\"/mnt/data-out/leximpact/fake//fake_pote_light.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5d82ea4e-5342-448a-884f-6488a2ef9b16", - "metadata": {}, - "outputs": [], - "source": [ - "# vdf.get_column_names()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e8550ac7-4a55-44e2-996a-7b12f3a4be51", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 4.94 ms, sys: 798 µs, total: 5.74 ms\n", - "Wall time: 10.8 ms\n" - ] - } - ], - "source": [ - "%%time\n", - "data = vdf.Z1ap.tolist()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "84dbb029-51e7-40a5-b034-52f903ccc471", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 4.49 ms, sys: 422 µs, total: 4.91 ms\n", - "Wall time: 4.76 ms\n" - ] - } - ], - "source": [ - "%%time\n", - "q = Quantile(data)\n", - "decile = q.get_quantile(10)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "676d9ba6-763a-4b60-af22-1701b45a77b4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[389, 779, 1169, 1559, 1949, 2339, 2729, 3119, 3509, 3899]" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "text/plain": [ - "390" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "text/plain": [ - "1109" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "q.borders\n", - "data[q.borders[0]]\n", - "data[q.borders[1]]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "faaa1158-1615-4f57-a880-e7faf1b3ff2a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 39.2 ms, sys: 23.5 ms, total: 62.7 ms\n", - "Wall time: 48.1 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "<Axes: xlabel='lower_bound'>" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHcCAYAAAA6I8WuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXp0lEQVR4nO3deVhV1f4/8Pc54GEUEJApcSgHIAcUEkEcUhSHBrpWTuUQaRqU5jwkWtl1TlFMSzPtpklWDjmgXkS9KoqAoCKgJoqGB0wZFJRx/f7wx/5yxAEU3MB+v55nP3n2Wmfvz6IDvNnD2iohhAARERGRAqnlLoCIiIhILgxCREREpFgMQkRERKRYDEJERESkWAxCREREpFgMQkRERKRYDEJERESkWAxCREREpFj6chdQk5WUlCAtLQ3169eHSqWSuxwiIiKqACEEbt++DQcHB6jVjz/mwyD0GGlpaXB0dJS7DCIiInoKV69eRaNGjR7bh0HoMerXrw/g/hfSzMxM5mqIiIioInJycuDo6Cj9Hn8cBqHHKD0dZmZmxiBERERUy1TkshZeLE1ERESKxSBEREREisUgRERERIrFa4SekRACRUVFKC4ulrsUqiX09PSgr6/PKRmIiGoABqFnUFBQgOvXryMvL0/uUqiWMTY2hr29PTQajdylEBEpGoPQUyopKUFKSgr09PTg4OAAjUbDv/DpiYQQKCgowI0bN5CSkoIWLVo8cbIvIiKqPgxCT6mgoAAlJSVwdHSEsbGx3OVQLWJkZIR69erhypUrKCgogKGhodwlEREpFv8UfUb8a56eBj83REQ1A38aExERkWIxCBEREZFiMQgpUPfu3TF+/Phq2/6cOXPg6upabdsnIiKqKrxYuho0nbbrue7v8vz+z3V/1W39+vUYP348srKy5C6FiIjqOB4RIiIiIsViEFKooqIiBAYGwtzcHNbW1pg1axaEEADuP61327ZtOv0tLCywfv166fW1a9cwePBgWFpawsTEBO7u7jhx4sRD9/XXX3/hxRdfRGBgIIQQyM/Px6RJk/DCCy/AxMQEHh4eOHjwIADg4MGDGDlyJLKzs6FSqaBSqTBnzpwnjqdp06aYO3cuhg0bBlNTUzRp0gQ7duzAjRs38Oabb8LU1BRt27ZFdHS0zvuOHDmCLl26wMjICI6Ojvj000+Rm5srtf/nP/+Bu7s76tevDzs7OwwZMgQZGRlS+8GDB6FSqRAeHg53d3cYGxvDy8sLycnJT6yZiIjkV+kgdPjwYbz++utwcHAo9wuzsLAQU6dORZs2bWBiYgIHBwcMGzYMaWlpOtu4desWhg4dCjMzM1hYWMDf3x937tzR6XP69Gl06dIFhoaGcHR0xMKFC8vVsmXLFjg5OcHQ0BBt2rTB7t27ddqFEAgKCoK9vT2MjIzg4+ODCxcuVHbIddKGDRugr6+PqKgoBAcH45tvvsHatWsr9N47d+6gW7du+Pvvv7Fjxw7Ex8djypQpKCkpKdf39OnT8Pb2xpAhQxASEgKVSoXAwEBERkZi8+bNOH36NN555x306dMHFy5cgJeXF5YtWwYzMzNcv34d169fx6RJkypU19KlS9G5c2ecOnUK/fv3x/vvv49hw4bhvffeQ2xsLF566SUMGzZMCnx//fUX+vTpgwEDBuD06dMIDQ3FkSNHEBgYKG2zsLAQX331FeLj47Ft2zZcvnwZI0aMKLfvmTNnYsmSJYiOjoa+vj4++OCDCtVMRFQXNJ22q9qX6lLpIJSbm4t27dph5cqV5dry8vIQGxuLWbNmITY2Fn/88QeSk5Pxxhtv6PQbOnQoEhISsH//fuzcuROHDx/G6NGjpfacnBz07t0bTZo0QUxMDBYtWoQ5c+bg+++/l/ocO3YMgwcPhr+/P06dOgU/Pz/4+fnh7NmzUp+FCxdi+fLlWL16NU6cOAETExP4+vri3r17lR12nePo6IilS5eiVatWGDp0KD755BMsXbq0Qu/dtGkTbty4gW3btsHb2xvNmzfHu+++C09PT51+x44dQ/fu3TFp0iTMnTsXAJCamooff/wRW7ZsQZcuXfDSSy9h0qRJ8Pb2xo8//giNRgNzc3OoVCrY2dnBzs4OpqamFaqrX79++Oijj9CiRQsEBQUhJycHr7zyCt555x20bNkSU6dORWJiItLT0wEA8+bNw9ChQzF+/Hi0aNECXl5eWL58OX766SfpM/LBBx+gb9++ePHFF9GpUycsX74ce/bsKRfcv/76a3Tr1g0uLi6YNm0ajh07xs8ZEVEtUOmLpfv27Yu+ffs+tM3c3Bz79+/XWRcSEoKOHTsiNTUVjRs3RmJiIsLCwnDy5Em4u7sDAFasWIF+/fph8eLFcHBwwMaNG1FQUIB169ZBo9Hg5ZdfRlxcHL755hspMAUHB6NPnz6YPHkyAOCrr77C/v37ERISgtWrV0MIgWXLluHzzz/Hm2++CQD46aefYGtri23btmHQoEGVHXqd0qlTJ51Hgnh6emLJkiUVenhsXFwc2rdvD0tLy0f2SU1NRa9evfD111/r3KF25swZFBcXo2XLljr98/PzYWVlVfmBlNG2bVvp37a2tgCANm3alFuXkZEBOzs7xMfH4/Tp09i4caPURwghPT7F2dkZMTExmDNnDuLj45GZmSkd9UpNTYWLi8tD921vby/tp3Hjxs80JiIiql7Vfo1Q6bUeFhYWAIDIyEhYWFhIIQgAfHx8oFarpWtMIiMj0bVrV50HUvr6+iI5ORmZmZlSHx8fH519+fr6IjIyEgCQkpICrVar08fc3BweHh5SH3o4lUolnT4qVVhYKP3byMjoidto2LAhOnbsiF9++QU5OTnS+jt37kBPTw8xMTGIi4uTlsTERAQHBz9T3fXq1dMZw6PWlYaZO3fu4KOPPtKpIz4+HhcuXMBLL72E3Nxc+Pr6wszMDBs3bsTJkyexdetWAPcfsfKkfT/sVCEREdUs1Xr7/L179zB16lQMHjwYZmZmAACtVgsbGxvdIvT1YWlpCa1WK/Vp1qyZTp/Sv+a1Wi0aNGgArVYrrSvbp+w2yr7vYX0elJ+fj/z8fOl12V/gdc2DFzYfP34cLVq0gJ6eHho2bIjr169LbRcuXEBeXp70um3btli7di1u3br1yKNCRkZG2LlzJ/r16wdfX1/s27cP9evXR/v27VFcXIyMjAx06dLloe/VaDQVOjL1rDp06IBz586hefPmD20/c+YMbt68ifnz58PR0REAyl1sTUREtVu1HREqLCzEu+++CyEEVq1aVV27qVLz5s2Dubm5tJT+8quLUlNTMWHCBCQnJ+OXX37BihUrMG7cOABAjx49EBISglOnTiE6OhpjxozROeIxePBg2NnZwc/PD0ePHsWlS5fw+++/lzvSZmJigl27dkFfXx99+/bFnTt30LJlSwwdOhTDhg3DH3/8gZSUFERFRWHevHnYtev+xXBNmzbFnTt3EB4ejn/++UcnhFWlqVOn4tixYwgMDERcXBwuXLiA7du3SxdLN27cGBqNBitWrMClS5ewY8cOfPXVV9VSCxERyaNajgiVhqArV67gwIED0tEgALCzs9O5/Ri4fyv3rVu3YGdnJ/UpvaC1VOnrJ/Up2166rvSajdLXj5r1ePr06ZgwYYL0Oicn56nCUG2Y4HDYsGG4e/cuOnbsCD09PYwbN066/mrJkiUYOXIkunTpAgcHBwQHByMmJkZ6r0ajwb59+zBx4kT069cPRUVFcHFxeegF9KamptizZw98fX3Rv39/7N69Gz/++CPmzp2LiRMn4u+//4a1tTU6deqE1157DQDg5eWFMWPGYODAgbh58yZmz55doVvoK6tt27Y4dOgQZs6ciS5dukAIgZdeegkDBw4EcP/03vr16zFjxgwsX74cHTp0wOLFi8td/E9ERLWXSjx4MUhl3qxSYevWrfDz85PWlYagCxcuICIiAg0bNtR5T2JiIlxcXBAdHQ03NzcAwL59+9CnTx9cu3YNDg4OWLVqFWbOnIn09HTpSMSMGTPwxx9/ICkpCQAwcOBA5OXl4c8//5S27eXlhbZt20oXSzs4OGDSpEmYOHEigPvBxsbGBuvXr6/QxdI5OTkwNzdHdna2TpgD7p/2S0lJQbNmzWBoaFj5Lx4pGj8/RFSXPI8nKlTmIMPjfn8/qNKnxu7cuSNdWArcvyg5Li4OqampKCwsxNtvv43o6Ghs3LgRxcXF0Gq10Gq10sWlzs7O6NOnD0aNGoWoqCgcPXoUgYGBGDRoEBwcHAAAQ4YMgUajgb+/PxISEhAaGorg4GCdozXjxo1DWFgYlixZgqSkJMyZMwfR0dHSaQ2VSoXx48dj7ty52LFjB86cOYNhw4bBwcFBJ7gRERGRclX61Fh0dDReffVV6XVpOBk+fDjmzJmDHTt2AEC5008RERHo3r07AGDjxo0IDAxEz549oVarMWDAACxfvlzqa25ujn379iEgIABubm6wtrZGUFCQzlxDXl5e2LRpEz7//HPMmDEDLVq0wLZt29C6dWupz5QpU5Cbm4vRo0cjKysL3t7eCAsL41/gtcz//ve/R07ZAKDcnD5EREQV9Uynxuo6nhqrGe7evYu///77ke2PuuurJuPnh4jqktp8aoxPn6caz8jIqFaGHSIiqvn40NVnxANq9DT4uSEiqhkYhJ5S6d1s1TXHDdVtpZ+bsvMzERHR88dTY09JT08PFhYW0pxIxsbGOs/uInoYIQTy8vKQkZEBCwsL6OnpyV0SEZGiMQg9g9JJGx+cIJLoSSwsLKTPDxERyYdB6BmoVCrY29vDxsZG56GkRI9Tr149HgkiIqohGISqgJ6eHn+xERER1UK8WJqIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUi0GIiIiIFItBiIiIiBSLQYiIiIgUq9JB6PDhw3j99dfh4OAAlUqFbdu26bQLIRAUFAR7e3sYGRnBx8cHFy5c0Olz69YtDB06FGZmZrCwsIC/vz/u3Lmj0+f06dPo0qULDA0N4ejoiIULF5arZcuWLXBycoKhoSHatGmD3bt3V7oWIiIiUq5KB6Hc3Fy0a9cOK1eufGj7woULsXz5cqxevRonTpyAiYkJfH19ce/ePanP0KFDkZCQgP3792Pnzp04fPgwRo8eLbXn5OSgd+/eaNKkCWJiYrBo0SLMmTMH33//vdTn2LFjGDx4MPz9/XHq1Cn4+fnBz88PZ8+erVQtREREpFwqIYR46jerVNi6dSv8/PwA3D8C4+DggIkTJ2LSpEkAgOzsbNja2mL9+vUYNGgQEhMT4eLigpMnT8Ld3R0AEBYWhn79+uHatWtwcHDAqlWrMHPmTGi1Wmg0GgDAtGnTsG3bNiQlJQEABg4ciNzcXOzcuVOqp1OnTnB1dcXq1asrVMuT5OTkwNzcHNnZ2TAzM3vaLxMREVGd1nTarmrfx+X5/SvctzK/v6v0GqGUlBRotVr4+PhI68zNzeHh4YHIyEgAQGRkJCwsLKQQBAA+Pj5Qq9U4ceKE1Kdr165SCAIAX19fJCcnIzMzU+pTdj+lfUr3U5FaHpSfn4+cnBydhYiIiOquKg1CWq0WAGBra6uz3tbWVmrTarWwsbHRadfX14elpaVOn4dto+w+HtWnbPuTannQvHnzYG5uLi2Ojo4VGDURERHVVrxrrIzp06cjOztbWq5evSp3SURERFSNqjQI2dnZAQDS09N11qenp0ttdnZ2yMjI0GkvKirCrVu3dPo8bBtl9/GoPmXbn1TLgwwMDGBmZqazEBERUd1VpUGoWbNmsLOzQ3h4uLQuJycHJ06cgKenJwDA09MTWVlZiImJkfocOHAAJSUl8PDwkPocPnwYhYWFUp/9+/ejVatWaNCggdSn7H5K+5TupyK1EBERkbJVOgjduXMHcXFxiIuLA3D/ouS4uDikpqZCpVJh/PjxmDt3Lnbs2IEzZ85g2LBhcHBwkO4sc3Z2Rp8+fTBq1ChERUXh6NGjCAwMxKBBg+Dg4AAAGDJkCDQaDfz9/ZGQkIDQ0FAEBwdjwoQJUh3jxo1DWFgYlixZgqSkJMyZMwfR0dEIDAwEgArVQkRERMqmX9k3REdH49VXX5Vel4aT4cOHY/369ZgyZQpyc3MxevRoZGVlwdvbG2FhYTA0NJTes3HjRgQGBqJnz55Qq9UYMGAAli9fLrWbm5tj3759CAgIgJubG6ytrREUFKQz15CXlxc2bdqEzz//HDNmzECLFi2wbds2tG7dWupTkVqIiIhIuZ5pHqG6jvMIERERPRnnESIiIiKqhRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLEYhIiIiEixGISIiIhIsRiEiIiISLGqPAgVFxdj1qxZaNasGYyMjPDSSy/hq6++ghBC6iOEQFBQEOzt7WFkZAQfHx9cuHBBZzu3bt3C0KFDYWZmBgsLC/j7++POnTs6fU6fPo0uXbrA0NAQjo6OWLhwYbl6tmzZAicnJxgaGqJNmzbYvXt3VQ+ZiIiIaqkqD0ILFizAqlWrEBISgsTERCxYsAALFy7EihUrpD4LFy7E8uXLsXr1apw4cQImJibw9fXFvXv3pD5Dhw5FQkIC9u/fj507d+Lw4cMYPXq01J6Tk4PevXujSZMmiImJwaJFizBnzhx8//33Up9jx45h8ODB8Pf3x6lTp+Dn5wc/Pz+cPXu2qodNREREtZBKlD1UUwVee+012Nra4ocffpDWDRgwAEZGRvj5558hhICDgwMmTpyISZMmAQCys7Nha2uL9evXY9CgQUhMTISLiwtOnjwJd3d3AEBYWBj69euHa9euwcHBAatWrcLMmTOh1Wqh0WgAANOmTcO2bduQlJQEABg4cCByc3Oxc+dOqZZOnTrB1dUVq1evfuJYcnJyYG5ujuzsbJiZmVXZ14iIiKguaTptV7Xv4/L8/hXuW5nf31V+RMjLywvh4eE4f/48ACA+Ph5HjhxB3759AQApKSnQarXw8fGR3mNubg4PDw9ERkYCACIjI2FhYSGFIADw8fGBWq3GiRMnpD5du3aVQhAA+Pr6Ijk5GZmZmVKfsvsp7VO6nwfl5+cjJydHZyEiIqK6S7+qNzht2jTk5OTAyckJenp6KC4uxtdff42hQ4cCALRaLQDA1tZW5322trZSm1arhY2NjW6h+vqwtLTU6dOsWbNy2yhta9CgAbRa7WP386B58+bhiy++eJphExERUS1U5UeEfv31V2zcuBGbNm1CbGwsNmzYgMWLF2PDhg1VvasqN336dGRnZ0vL1atX5S6JiIiIqlGVHxGaPHkypk2bhkGDBgEA2rRpgytXrmDevHkYPnw47OzsAADp6emwt7eX3peeng5XV1cAgJ2dHTIyMnS2W1RUhFu3bknvt7OzQ3p6uk6f0tdP6lPa/iADAwMYGBg8zbCJiIioFqryI0J5eXlQq3U3q6enh5KSEgBAs2bNYGdnh/DwcKk9JycHJ06cgKenJwDA09MTWVlZiImJkfocOHAAJSUl8PDwkPocPnwYhYWFUp/9+/ejVatWaNCggdSn7H5K+5Tuh4iIiJStyoPQ66+/jq+//hq7du3C5cuXsXXrVnzzzTd46623AAAqlQrjx4/H3LlzsWPHDpw5cwbDhg2Dg4MD/Pz8AADOzs7o06cPRo0ahaioKBw9ehSBgYEYNGgQHBwcAABDhgyBRqOBv78/EhISEBoaiuDgYEyYMEGqZdy4cQgLC8OSJUuQlJSEOXPmIDo6GoGBgVU9bCIiIqqFqvzU2IoVKzBr1ix8/PHHyMjIgIODAz766CMEBQVJfaZMmYLc3FyMHj0aWVlZ8Pb2RlhYGAwNDaU+GzduRGBgIHr27Am1Wo0BAwZg+fLlUru5uTn27duHgIAAuLm5wdraGkFBQTpzDXl5eWHTpk34/PPPMWPGDLRo0QLbtm1D69atq3rYREREVAtV+TxCdQnnESIiInoyziNEREREVAsxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiMQgRERGRYjEIERERkWIxCBEREZFiVUsQ+vvvv/Hee+/BysoKRkZGaNOmDaKjo6V2IQSCgoJgb28PIyMj+Pj44MKFCzrbuHXrFoYOHQozMzNYWFjA398fd+7c0elz+vRpdOnSBYaGhnB0dMTChQvL1bJlyxY4OTnB0NAQbdq0we7du6tjyERERFQLVXkQyszMROfOnVGvXj3s2bMH586dw5IlS9CgQQOpz8KFC7F8+XKsXr0aJ06cgImJCXx9fXHv3j2pz9ChQ5GQkID9+/dj586dOHz4MEaPHi215+TkoHfv3mjSpAliYmKwaNEizJkzB99//73U59ixYxg8eDD8/f1x6tQp+Pn5wc/PD2fPnq3qYRMREVEtpBJCiKrc4LRp03D06FH873//e2i7EAIODg6YOHEiJk2aBADIzs6Gra0t1q9fj0GDBiExMREuLi44efIk3N3dAQBhYWHo168frl27BgcHB6xatQozZ86EVquFRqOR9r1t2zYkJSUBAAYOHIjc3Fzs3LlT2n+nTp3g6uqK1atXP3EsOTk5MDc3R3Z2NszMzJ7p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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%time\n", - "df = pd.DataFrame(decile[\"buckets\"])\n", - "df.plot.bar(x=\"lower_bound\", y=\"bucket_mean\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7b0effe9-03c1-4b5d-a5f4-b52f2fee8810", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 152 ms, sys: 115 ms, total: 268 ms\n", - "Wall time: 127 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "<Axes: xlabel='lower_bound'>" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1wAAAKOCAYAAACyZBhUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADPDElEQVR4nOzdeXgV5f3+8fuc7AtZCISwJBBlCQjIDokCLmhAtKwqiIIrxYILWFkEQa0ialVQtrYqaBW3tiiCogiCVTZFQQRRFCggBkElkSAJIZ/fH/zOfHOSc7LhFLXv13WdS8kz88wzz5ntnpkz4zEzEwAAAADgZ+c91Q0AAAAAgN8qAhcAAAAAuITABQAAAAAuIXABAAAAgEsIXAAAAADgEgIXAAAAALiEwAUAAAAALgk91Q34JSsuLta+fftUo0YNeTyeU90cAAAAAKeImenHH39UvXr15PVW/roVgasc+/btU2pq6qluBgAAAIBfiD179qhBgwaVHp7AVY4aNWpIOtGpcXFxp7g1AAAAAE6VvLw8paamOhmhsghc5fDdRhgXF0fgAgAAAFDlnxrx0AwAAAAAcAmBCwAAAABcQuACAAAAAJfwGy4AAAD8Zh0/flzHjh071c3Ar0R4eHiVHvleGQQuAAAA/OaYmXJycnTo0KFT3RT8ini9XqWnpys8PPxnq5PABQAAgN8cX9hKTk5WdHR0lZ8sh/89xcXF2rdvn7755hulpaX9bMsMgQsAAAC/KcePH3fCVlJS0qluDn5FateurX379qmoqEhhYWE/S508NAMAAAC/Kb7fbEVHR5/iluDXxncr4fHjx3+2OglcAAAA+E3iNkJUlRvLDIELAAAAAFxC4AIAAAAAl/DQDAAAAPzPaDR+yX9tWrum9a7yOOecc47atGmj6dOn//wNknTXXXfplVde0caNG12pH2VxhQsAAABApcyfP18JCQmnuhm/KgQuAAAAAHAJgQsAAAD4BSkqKtKoUaMUHx+vWrVq6c4775SZSTrxFL1XXnnFb/iEhATNnz/f+ffevXs1ePBg1axZUzExMerQoYPWrVsXcFpfffWVTjvtNI0aNUpmpoKCAv3xj39U/fr1FRMTo86dO2vlypWSpJUrV+qaa65Rbm6uPB6PPB6P7rrrrgrnp1GjRrr33ns1dOhQxcbGqmHDhlq0aJEOHDigPn36KDY2Vq1bt9aHH37oN957772nrl27KioqSqmpqbr55puVn5/vlP/9739Xhw4dVKNGDaWkpOiKK67Qt99+65SvXLlSHo9Hy5cvV4cOHRQdHa2srCx9/vnnFbb550TgAgAAAH5Bnn76aYWGhmr9+vWaMWOGHnnkET3xxBOVGvfw4cPq3r27vv76ay1atEibNm3S2LFjVVxcXGbYTz75RGeffbauuOIKzZw5Ux6PR6NGjdKaNWv0wgsv6JNPPtGll16qnj17avv27crKytL06dMVFxenb775Rt98843++Mc/Vqpdjz76qM466yx9/PHH6t27t6666ioNHTpUV155pT766COdfvrpGjp0qBMsv/rqK/Xs2VMDBgzQJ598ohdffFHvvfeeRo0a5dR57Ngx/elPf9KmTZv0yiuvaNeuXbr66qvLTHvixIl6+OGH9eGHHyo0NFTXXnttpdr8c+GhGQAAAMAvSGpqqh599FF5PB41a9ZMmzdv1qOPPqobbrihwnEXLFigAwcO6IMPPlDNmjUlSY0bNy4z3OrVq3XxxRdr4sSJuu222yRJu3fv1rx587R7927Vq1dPkvTHP/5RS5cu1bx58zR16lTFx8fL4/EoJSWlSvN00UUX6fe//70kafLkyZozZ446duyoSy+9VJI0btw4ZWZmav/+/UpJSdH999+vIUOG6NZbb5UkNWnSRI899pi6d++uOXPmKDIy0i84nXbaaXrsscfUsWNHHT58WLGxsU7Zfffdp+7du0uSxo8fr969e+vo0aOKjIys0jxUF1e4AAAAgF+QLl26+L2ANzMzU9u3b9fx48crHHfjxo1q27atE7YC2b17ty644AJNnjzZCVuStHnzZh0/flxNmzZVbGys81m1apW++uqrk5qn1q1bO/9fp04dSVKrVq3K/M13S+CmTZs0f/58v3ZkZ2eruLhYO3fulCRt2LBBl1xyidLS0lSjRg0nVO3evTvotOvWres3nf+GKgeur7/+WldeeaWSkpIUFRWlVq1a+d1vaWaaPHmy6tatq6ioKPXo0UPbt2/3q+P777/XkCFDFBcXp4SEBF133XU6fPiw3zCffPKJunbtqsjISKWmpurBBx8s05aXX35ZGRkZioyMVKtWrfT666/7lVemLQAAAMCvhcfjcW678zl27Jjz/1FRURXWUbt2bXXq1EnPP/+88vLynL8fPnxYISEh2rBhgzZu3Oh8PvvsM82YMeOk2h0WFuY3D8H+5rv18fDhw/r973/v145NmzZp+/btOv3005Wfn6/s7GzFxcXpueee0wcffKCFCxdKkgoLCyucdqBbLN1SpcD1ww8/6KyzzlJYWJjeeOMNbd26VQ8//LASExOdYR588EE99thjmjt3rtatW6eYmBhlZ2fr6NGjzjBDhgzRli1btGzZMi1evFjvvvuuhg8f7pTn5eXpwgsvVMOGDbVhwwY99NBDuuuuu/TXv/7VGWb16tUaPHiwrrvuOn388cfq27ev+vbtq08//bRKbQEAAAB+SUo/4GLt2rVq0qSJQkJCVLt2bX3zzTdO2fbt23XkyBHn361bt9bGjRv1/fffB60/KipKixcvVmRkpLKzs/Xjjz9Kktq2bavjx4/r22+/VePGjf0+vlsIw8PDK3Wl7WS1a9dOW7duLdOOxo0bKzw8XNu2bdN3332nadOmqWvXrsrIyPivXrWqiioFrgceeECpqamaN2+eOnXqpPT0dF144YU6/fTTJZ24ojR9+nRNmjRJffr0UevWrfXMM89o3759ztNUPvvsMy1dulRPPPGEOnfurLPPPluPP/64XnjhBe3bt0+S9Nxzz6mwsFBPPfWUzjjjDA0aNEg333yzHnnkEactM2bMUM+ePXX77berefPm+tOf/qR27dpp5syZlW4LAAAA8Euze/dujRkzRp9//rmef/55Pf7447rlllskSeedd55mzpypjz/+WB9++KFGjBjhdwVn8ODBSklJUd++ffX+++9rx44d+uc//6k1a9b4TSMmJkZLlixRaGioevXqpcOHD6tp06YaMmSIhg4dqn/961/auXOn1q9fr/vvv19Llpx4YXSjRo10+PBhLV++XAcPHvQLez+ncePGafXq1Ro1apQ2btyo7du369VXX3UempGWlqbw8HA9/vjj2rFjhxYtWqQ//elPrrTlZFXpoRmLFi1Sdna2Lr30Uq1atUr169fXH/7wB+cHfDt37lROTo569OjhjBMfH6/OnTtrzZo1GjRokNasWaOEhAR16NDBGaZHjx7yer1at26d+vXrpzVr1qhbt24KDw93hsnOztYDDzygH374QYmJiVqzZo3GjBnj177s7GwnTFWmLaUVFBSooKDA+XfJS6wAAAD49ds1rfepbkKFhg4dqp9++kmdOnVSSEiIbrnlFudusIcffljXXHONunbtqnr16mnGjBnasGGDM254eLjeeust3XbbbbroootUVFSkFi1aaNasWWWmExsbqzfeeEPZ2dnq3bu3Xn/9dc2bN0/33nuvbrvtNn399deqVauWunTpoosvvliSlJWVpREjRujyyy/Xd999pylTplTq0fBV1bp1a61atUoTJ05U165dZWY6/fTTdfnll0s6cVvk/Pnzdccdd+ixxx5Tu3bt9Oc//1m/+93vfva2nKwqBa4dO3Zozpw5GjNmjO644w598MEHuvnmmxUeHq5hw4YpJydH0v/96M2nTp06TllOTo6Sk5P9GxEaqpo1a/oNk56eXqYOX1liYqJycnIqnE5FbSnt/vvv19133125zgAAAAB+Zr53XknSnDlzypTXq1dPb775pt/fDh065Pfvhg0b6h//+EfA+u+66y6/gBQbG6v333/fb5i777673GPiOXPmBGxbMLt27Srzt9K/Q2vUqFGZv3Xs2FFvvfVW0HoHDx6swYMHB633nHPOKVNnmzZtyvzNbVUKXMXFxerQoYOmTp0q6cR9np9++qnmzp2rYcOGudLA/6YJEyb4XTXLy8tTamrqKWwRAAAAgFOh0fglzv+fzJXRKv2Gq27dumrRooXf35o3b+48etH3Y7r9+/f7DeN7nr5vmNI/aCsqKtL333/vN0ygOkpOI9gwJcsraktpERERiouL8/sAAAAACOzf//6336PbS39QxcB11lln6fPPP/f72xdffKGGDRtKktLT05WSkqLly5c75Xl5eVq3bp0yMzMlnXiPwKFDh/zuNV2xYoWKi4vVuXNnZ5h3333X7xGXy5YtU7NmzZwnImZmZvpNxzeMbzqVaQsAAACA6uvQoYPfo9tLf1DFWwpHjx6trKwsTZ06VZdddpnWr1+vv/71r87j2j0ej2699Vbde++9atKkidLT03XnnXeqXr166tu3r6QTV8R69uypG264QXPnztWxY8c0atQoDRo0yHmj9RVXXKG7775b1113ncaNG6dPP/1UM2bM0KOPPuq05ZZbblH37t318MMPq3fv3nrhhRf04YcfVqktAAAAAKovKipKjRs3PtXN+EWrUuDq2LGjFi5cqAkTJuiee+5Renq6pk+friFDhjjDjB07Vvn5+Ro+fLgOHTqks88+W0uXLlVkZKQzzHPPPadRo0bp/PPPl9fr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Rbrllls0YsQIjR07Nmi7ysNTCoO45557dMUVV2jlypUBfzjn+/Hd7373uyqX+x5M0aFDBz322GNlxjUzHTt2zO/gvuQDHa6++mr94x//UJ8+fSSpTLhq0qSJPvroIz366KM6//zzA9YvKWD9jzzyiPbu3atFixYpMTHRORAoLCxUaGiomjdvrg0bNmjhwoU6//zzneCWl5fn1B0XF6f+/fvr2LFj2rlzp8444wxJJ3ZE27Ztk9frVYsWLcpsPE8//XTt2LFDH3/8sdq2betX9vHHHyssLEzHjx8POl8hISFKTk7Wxx9/HLB+6cTOouQO3tc2SZo6darMLGDZ8OHD9fe//z1on9evX1+FhYVBp13RvAU6+Cg5/R49euif//xnwH6XpBtuuEFdunTRpk2byhwcdO/eXW+88UbQaUdERMjMgpaHh4erqKgo4LTPPPNM3Xzzzc4BwM85X8uXL5ck52C2dNsk6ZprrlGTJk20b9++gAeyx44dC7gsSid+8O8La++//746duzolF166aVau3at6tatq1atWvkta5s3b1Z6eroOHTqklJQUdevWza985cqVOnLkiD7++GMlJSU5Pxz+9ttvdejQIUnSihUr1KZNG0kqM+2BAwdq48aNAet+9913FRoaqjPPPFPt27dXYmKiX/1mpl27djnL34oVK5SZmenXJ0ePHlXfvn0Dljdu3Fi7du3SwYMHVatWLb/xfOEiPz+/3HW0du3aKioqcnbMJY0fP16nnXaacnNzqxwGO3TooNWrVwdtW3mhae7cuTr//POVn5+vdu3alfk+JemTTz4J2C9z585VZmamDh8+HHDcpk2bqlmzZgG/j0OHDikqKko//PCDHn30UUVEROijjz5St27d/Npfq1atoPMtnTj4CBbQzznnHL3++utB1xFfAP/qq6+qvG0ICwtTaGhowLanpaXpueeeU3FxccD5Ovvss/X+++8H7ZeaNWsqJSUl6DYzLS1NBw4cKPf7bt26ddB++fLLL1VQUKD4+PgyZRdddJGef/75cvdjhw8fDrg8pKWlacGCBTKzas13t27dtH///qDbloyMDHXr1k2DBg1SUVFRmX2wdOLEaLD5bty4sbZv365gateurSNHjgRcRy+77DKNHDlS6enpysvLC9gv7du3D7qsVmZ5Km/7cO+996p58+b67rvvqrSc+/Y1rVq1qtb2o02bNho5cmSZ9VI6sU3y7ceCnXg4//zzVVxcrF27dunDDz/0a9/gwYN15513qnXr1gGPFXNzc+XxeAKW5+Tk6Msvv3SOqaqyLzh06JA6dOigLVu2BJ22JE2YMCFoKPJ4PM4JNq/X63cR4ZxzztHMmTMD7nd96+dPP/2kxMREmVmZfhk6dGjQ/e/HH3+s6OhoTZs2TU8++WSV9yXjxo3TkiVLgvaLdOI4OtA6NHLkSBUWFuqPf/yjBgwYoOPHj0s6cTKhffv2mj9/vi677LIy7akMAlcQl156qerXr6/HHntMDz/8cJmn9bz77rsys2qX33DDDVqxYkXAsuuuu06pqalOW0of3CclJal3796aMmVKwLavWbNGDzzwgB566CHddtttzhkl30ajR48eOvvsswPWHxERoaZNm2rAgAEaOXKkX9vat2+viIgI3XrrrUF3Bs2aNVOnTp0UEhKiPn36+K0IK1eu1NixY1W7dm0tXbq0TLvnz5+vMWPGBF1JsrOz1alTp6Dzdd9995V75qFTp07yer0Bd/DdunXTRx99pIiIiIA7/wYNGqhjx45B+3zPnj1Bp1uZeavo4KNFixZ67733Ava7mengwYN6/fXXJZU9iL7wwgv17rvvBp32eeed5+xIA5X36NFD9evXDzjtkJAQpaSk6KWXXtKyZct+1vkKDQ3VlVdeqb179wYNFz/88INCQ0MDHvh07NhRO3fuVHx8fJllcefOnZo6daq2bdumZ555psw6VqNGDc2dO1d16tTR2rVrnfWgU6dOmjp1qi688ELl5+fr2Wef1dq1a7Vjxw5JJ9aTqVOn6oorrtC+ffsCPumr9JXO0tOuW7euZs6cqeLi4jJ133vvvbriiisUFxenbdu2Baw/IyNDwSxatEhhYWHO2b3SRo8erXvuuSfowWBF4SIzM1NffvllwLBoZnr//fed9baqYfCSSy7RBx98ELRtUvDQlJqaqttvv13Tpk3TJZdcEvD7DHZlLzU1VbNnz9Ynn3yiY8eOBR23Ot+Hz44dO4LOt3TiqkSwgN6nTx+988471QrgFW0bsrOztWDBgoBn4Hft2qW1a9cqIiIiYNA799xz1bNnT0VFRVWrX5588kldf/315X7f69evD9ovV199tcws4AFdz5499cYbbwTd7tx4441OyAw034sXLw66HlVmvouLi/Xmm28G3bZ4vV7NmjVLGzZsKLMPTkhIUK9evZwTp6XnbcCAAbr33nuDHmR/9913ioqKCriOrlq1Smam7du3BzzhKknLly93DtarujxVtH146623nO1DVZZz30H02rVrq7X9+OSTT+TxeLR27dqAwSYkJMR50mDpfc0777yjf/zjH1qxYoVmz55d5o6k2NhYjRs3ztmel/w+e/XqpVdffVWSNGfOnDLl/fv315VXXql///vf1d4X7Nq1K2DdvXr10ubNm3XllVdKUsBQZGYqKChQzZo1dfjwYX3yySfOXSpz585Vt27dVFBQEPBE1GmnnaZp06Y531PJftm5c6eeeuopHTt2TL///e/L7AMLCws1YcIEzZo1q1r7ks8++0ytW7fWggULAvZLixYt1KdPn6DrUN26dZWRkaGNGzc6V3tr1ap10k9G5bHwv3E7d+70W9jS09N/lnrz8vIC7gx8Z8SCyc/PV0hIiPP45UAqc+Dixnzt2LFD4eHhzu2clS2riuoelPmmHxcXV+V+9x0cNGzYsNxpV9S28r5zt+erOvWXdzAoVW5Z/F8U6GDQ19+VCRc//vijE0RLl/sOEAIp7yDWVx4SEiJJ5bYtmIrq/6V66qmnFBoaqu7du0s6cQBX8p1/zzzzjKQTB+xVXUcqu204VcpbFps1a+b3fZfsl//85z/65z//KelEAAnWZ3379q3WfuxUKn3SKtC8HThwQN9++23AfhsxYoSSkpLKXUclVatfKrM8Bds+NG3aVH369HFel/FzLue+tpW3/cjMzNSCBQuqvN3y1VfevuaXatWqVX7/rlu3rnOLoXTiLpCioiJddNFFkk48ir5Lly5O+d13362NGzeqdevWVd4eV4Zb+5LKrEOS/B5N/3MgcP0GzZ49WwcPHtTkyZN/9ro//PBDHTlyJOCl919y3W7XX1Gfuz1v+PX45ptvdOzYsXLvrf8l14+qqej7+DV/X+W1/WTn+9e6zXT7+/619gv++37N2xY3nUy/nNTxdbUetQGbMGGCXXPNNa6UVzTurFmz7O677w5aft5555X7WNpXXnnFnn766WrVn5GRYV6vN+i4H3zwga1atapa066o7n379tl//vOfatVdmfrLa3tF81VRn5/svFU0/YrKy1PRtE+mbW7PV3n1n8zycv7555/U91ne+Ccz7sm2raJpV1RekYr6/JfqZPrlZPv0ZPu8IifznVQ07q+5X8pT0XbnVM73L7lfKuLm9uFUbnvKm/bQoUPt3HPPDTruyZSf7H6qomm76WTm62SdzDpU0bFeeQhc1XTVVVeVu6CeTHlF457MF25mzrs2qlP/119/bbt27Qo6bkULcnnTdrPuk63/ZHdyJztvv+QDwl/rtMtbXmbOnGl33XVX0HEXLlxo8+fPD1pe3vjr16+3lStXVmvcypSXV39F7a6o/GS/r5MJom6Wn0y/VDRuRd93ReUnG9DdXD/La/vJzvfJbjPL65eTPVAt7zs/2fmuaHmqqF8qmreKDrJP5Trq5nd2MuUnM+0JEybY1VdfHXTckyk/mX1BZaZd0bJS3sWBivr7ZObL7OSW04r6xa3Axy2F+Fnt27dPx44dK/eR99X1wQcf6MiRI85vGX5u5bXdzfmSKp63iqZfXvkrr7yi3NxcDRs2rFrTPpm2uTlfFdXv9vLyv+hkl6VZs2bp4MGDAR8+U1Hdbpf/UlXU7vL6VCr/OznZ7/NUOpl+qajP3N7eu6miebvjjjv0zTffaN68eVUev6J+cXP7cDLLeWXaVl75yU7716qiZWXYsGHas2ePVqxYUabM7e3tyexLTqbuk0HgKsfBgwf11FNPlfmBZlZWlq6++mp5PJ5ql19yySVatGhR0HFr165dbtsKCwv1yiuvBBy/T58+5b67qDLy8/O1YcMGffPNN/J6vTrttNPUrl27ct+h8Uuou7Rjx45p165dSk5OLve9aZWxadMmbdiwQeecc45OO+00bdmyRbNmzVJxcbH69esX8Aea11xzje677z7Vq1fvpKaNXwYzU3FxsfPj659DQUGBJJX7LrNgdu/e7bcelfzhLyo2f/589evXL+i2wfdErJSUlArrKioq0pYtW/y2xy1atDjpJ1v9Eu3fv18FBQUBfwNx7Nixas1zUVGR3nnnHe3evVsNGzbUueee+7OuZ9WVm5vr951Wdz8SqM/KqzsnJ0fr1q3zK+/cuXOllkX8tgV7rL4kbd++3VmHGjduHHCYnTt3KjU1NWgdbjpV065Mv/h89913+uSTT3TmmWeqZs2aOnjwoJ588kkVFBTo0ksvDfhetEr52a+Z/UasX7/eEhMTrX79+jZs2DAbO3asjR071oYNG2YNGjSwuLg4i4uLq1Z5cnKyeTweS05ODjhuYmKi31u5v/zyS7vjjjvsyiuvtIkTJ9qKFSvstNNOs8jISOvevbtddtlldtlll1n37t0tMjLSGjdubGvXrrXly5fboUOHzMwsJyfHHnjgAbv//vvtk08+sY0bN9qTTz5pX331lZmZffrpp3bjjTfa8OHDbeDAgRYdHW1er9e8Xq95PB7zeDzWsGFDW7RokZmZFRUV+fXX2rVrbdWqVVZYWGhmZl999ZU9/fTTNm3aNHvwwQftH//4h/3www92++23V1h3ab46fQLVnZubaw888IAdOXLEad9tt91m4eHh5vV6LTQ01K655poydZV07Ngxv/uwCwsL7YsvvrBDhw7ZP//5TwsJCbGkpCSLjY21ZcuWWUJCgvXo0cOys7PN6/Xa/fffb5s2bfL7hIWF2cKFC51/l6eoqMi++uorO378uJmZHT161F588UV7/vnn7c033yx3XJ9Dhw7Ztm3bbNu2bc53H8xdd91lBw4csAMHDlSq7sOHD9uqVavshRdesJdeesk+/PBDKy4udtpe0rp162zNmjV29OjRMvWU7Fefipan0nJycoLeM++br/K0bNnSJk2aZC+//HLA8mPHjtnEiROtW7duNnnyZDMze/DBBy06OtrCw8MtISHBpkyZYrt37y53OoFs3LjRPB6P9erVyxISEpx1ISEhwXr16mXLli2zjRs32p/+9CebNWtWmXnJzc21Ll26WFpamjNuyc/vfvc7e//99wNOOzY21q699tqg5dVVmT4vqSrLqRvj+4SFhdnWrVvtu+++swEDBlhqaqqNGDHCioqK7LrrrnO2T126dLF9+/aZmdlrr71m3bp1s3r16ln79u1t3rx5NnHiREtISHCG930SEhJs0qRJzjodyMaNGwPe/pKTk2PffPNNmb8fPXo04HplZvaf//zH1q5da+vXr7eDBw/6lVWlz3zrXV5eng0ZMsTS0tJs6NChVlBQYH/4wx+c+Tv77LMtNzfXzMwef/xxZ5lMSkoq93fGZmaDBg0yj8djZmZ79uyxjIwMCwkJsTp16lhISIi1atXK9u7dW24dP5djx47ZW2+9ZU888YQtW7bMioqK7G9/+5s1b968zPrVvHlzGzJkiJ1//vl26aWX2ttvv+1X186dOy0mJiZgn3m9XuvWrZs99thjQeueNWuWDRkyxEJCQiw0NNSSk5MtOTnZQkNDLSQkxK688krLz8//r/RLoH7ybXeLioosJyfHvv32W1emVd5yXpGqLOuB1rPKTtu3nmzZssVuvPFGa9OmjaWkpFhKSoq1adPGbrzxRuvevbs988wzzrFJIG+99ZZNnjzZli9fbmZmq1atsp49e1rr1q3tnnvuMTOz48eP2z333GP16tUzr9dr9evXt+zsbFu2bJmZmX3//fd2/vnnO+um1+u1nj172g8//FBmer7t3qngm3ZF+7jynmPgO+4IZurUqc56WZV+MTtx7BIfH28ej8cSExPtww8/tPT0dGvSpImdfvrpFhUVZRs2bKjaTP9/BK4gOnfubMOHDw/4xRYXFzsbweqUd+7c2TIyMqxz584Bx61bt641adLEzMzee+89i4iIsNatW9vll19ubdu2Na/Xa127dnV2dCXl5ubaWWedZSEhIebxeCwlJcU2btxoDRo0sCZNmlizZs0sNDTU2SmWDg/p6ekmyW677TZbtmyZdevWzR544AH77LPP7M4777Tw8HA744wzLCQkxLp162bff/+99e7d21mYGzdubBdffLHfwp2SkmIhISEWFhZmKSkp9tprrwWsOzQ01BYvXuzMS+kd+MSJE23gwIEB646NjTWPx2P79+83M7OHHnrIEhMT7amnnrItW7bYs88+a8nJyfbAAw8E/L4feOABW7t2rXm93oBhreQBxPPPP28JCQnOhtDMzOPxmKQyB1y+dvr+G8xLL71kkszr9VrLli1t9+7d1rJlS4uJibHY2FiTZA0aNLD77rvPvv766zLjl3dw8Pjjj1tubq7f59ChQxYWFmbr1q1zDgKee+65gDuZ48ePBw3K9evXt8aNG1tISIj17NnTcnNzrUePHk55zZo1naAZqF8vv/xyy8rKKnd56t+/f9ADvqysLNuzZ0/A+fL9LRDfwbAky87Otn/84x927Ngxp3zSpElWp04dGzNmjLVo0cJGjBhhqamp9uyzz9rTTz9tkiw6OtpCQkICjl+ee+65xyTZoEGDbN68efb666/b66+/bvPmzbPBgwc7B1pnnHGGpaWlWVJSkq1YscIZf/LkySbJHn/8ced7v+eee+yNN97wWwYzMjLsz3/+s98BkcfjsTPOOCNo+bp16/zCb+lwMXfu3HKXpdzcXHvsscds6NCh9tRTT5mZ2QsvvGAZGRmWnp5uF198cdDlNCIiosIwWN5y/sQTT9iSJUvsuuuus9tvv90+++wzZ7zExERLSEiw0NBQS0xMdD4ej8fi4+OdZfLxxx+37t27W58+fax169b23nvvmdfrtTZt2tjQoUNt0aJF5vV6bejQoTZr1iy7/vrrzePxWFxcnM2dO9d27txpR44csSNHjtjOnTvtL3/5iyUnJ9vYsWODztOqVatMUsCw5/V6LTMz055//vlyA/qsWbMCBvCzzjrLJk2aFLTPfv/731tBQYHTltLb3E6dOllGRoY99thjds4551ifPn2sZcuWTr80bdrU7rjjDnvqqacsMjLSJk+ebEuWLLF7773XYmJi7G9/+1vQ+U5KSjLfOd/LLrvMevTo4Rx4fffdd3bxxRfbwIEDg46/detWq1evXsCDtv379/sdtH388cc2dOhQy8rKsgEDBli/fv3stddeM7PAYS8lJcWioqJs/Pjx9s4779jWrVtt69at9s4771iPHj1MkmVlZdmVV15p4eHhNnXqVGfa1157rUkK2GerVq2y5ORkCwsLC1j3hAkTLDQ01GrVqmVLly71WxeLiorszTfftKZNm1q/fv0qfbD69ddf2+TJk+2KK66w2267zZo0aWL33HPPSZ0s6tq1q0VERDjLUnx8vF155ZUVPrTCN/5VV11l6enpFhkZadHR0c4JsIULF5a7nFem7mDL+vTp04OeVPENc9555wWc9qRJk4KuJzVq1LCQkBDr0qWLTZkyxWbPnm2zZ8+2KVOmWFZWlkmykJAQi4+PtxEjRtiHH37o1+6///3vFhoaau3atbPY2FibN2+eJSQk2PXXX2/x8fEWGhpqL7/8sk2dOtWSkpLskUcesTfeeMOmT59uXq/XbrrpJjMzu/76661t27b20Ucf2U8//WQbN260xMREa9iwofXr18/v4/V6rUePHtavXz87//zzg4bFLVu22NatW+2pp55ytqefffaZjRgxwkJDQ61nz55Bt9elp1ly2r7j2Bo1agTcx+Xk5JjH47HbbrvNunbtatOmTTMzsz/96U8WExNjMTExNnjw4KD795SUFKtXr17QfunSpYv17ds34HKYnp5uQ4cOtby8PHvooYesQYMGdv311zt1X3PNNda3b99yl8VgCFxBREZG+u2wS4uIiLDw8PBqlUdGRtqSJUssMjIyYHlsbKwzbvfu3W306NF+5aGhodamTZug027btq2FhITYjz/+aA899JDVr1/fRo4c6ZTXqVPH0tLSzKxseKhbt6794Q9/cOrfu3evxcbGOgfiZ555ptWoUcMWLVrkHCx37drV9u7da//5z3+sTp06VrduXdu8ebNt377dBg4caGPHjrX8/HyLj4+3iIgIe+655wLW7fF4rEOHDmZmAXfgoaGh1rhx44B1P/nkkybJZs+e7fTBX/7yF79+efbZZ+2MM84I2Gder9dWrFhhXq83YFjzeDw2btw4MzsRisPCwuyTTz5xxm/evLmFhITYZ599Zrt27bJdu3bZzp07LTQ01JYtW+b8LRjfhnnz5s12yy23WPPmze3SSy+1wsJCO3bsmEmy+vXrO2c6e/fubQsXLrSioiLnykuwHbjvILz0Tsj3N0kmycLDwy0xMdFGjRplH3/8sdO2cePGWfPmzQMG5YyMDPN4PHb33XfbZZddZmeddZadc845tnfvXtu3b59Jsl69eplZ4BAcGRnpXN0MtDzVrVvXEhMTgx7wBZq3yoRcj8djb731lnk8HrvkkkssNDTUateubbfddptt3brVTjvtNOeAbPv27eb1eu2FF17wG79Zs2a2cOHCMuP7dmTBPlFRUc6Z/UDS09MtMTHRWdYeeOABi42NtTfeeMPMzFJTU/3G//zzzy0pKcmOHTtmHo/Hrr/+euvSpYuNGjXKatasaeHh4da/f397/fXXnZMSGzduDFju9XqdkxaBwoXvpEBFy1L//v2tbt26du+991pSUpLde++9dsEFF5gk69mzZ9DltE6dOkHDYEXLue8AsHfv3nb22WdbZGSkPfvss2Z2YpvqOxEwf/58mz9/vs2bN89CQkLsvvvus4SEBJs4caKZ/d/O/q233nK+69dee83q169vZ599to0fP97v+4qNjbWMjIyg32dWVpZFREQEXR7q1q3rBOjSYW/16tWWnp5uHo8naED3er2WmJgYMIC3a9fOJNmwYcOC9vmUKVPMLPA213fQY3biwN3XF75+efbZZ61Zs2bWqVMne/DBB/3m+8wzz7T4+PhyD7x8y3GDBg1s3bp1fuNv3rzZatWqFbRfZ8+ebZICnpjwer22efNm83q99v7771tYWJh1797dbr/9dmc5nDdvnpkFDntRUVEBT4iambVo0cJGjRplqampZmb2/vvvW+3ate3OO+80M7P69es781W6z8zMateubXXr1g06XzExMZacnBy0/JFHHgk6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rujo6KDD5Ofna9u2bWrWrJliY2N19OhRPffcc/rpp58UHx+vwYMHB/1efvzxRz377LNau3at33tbMjMzdcUVVyguLs4ZtrCwUOPHj9c777yjf/3rX3r33Xc1aNCgct8DtWnTJr300ksqKChQdna2LrjgAqds165d2rBhg9q3b69GjRpp//79mjVrlo4cOaLevXvr3HPPDVpvRf26bNkyxcTEKCsrK2D5G2+8oaioKJ1zzjll5is9PT3odBHYf/7zH79/x8bG+m0rnnnmGUnS0KFDJZVdlvbt26eYmBi1adMmYP2PPPKI1q1bp8jIyDLL6e7duzVp0qRy15HylvO0tDRt2rRJEyZMCDjuO++8o2eeeSboSzxPpffff19r165VZmamsrKytHXrVk2bNk1HjhzRJZdcou7du2vOnDkB53vEiBH67LPP9Oyzzzrr5w033ODUvWvXLr388sv69NNPK9w2lLZ48WKFhYUFfMeg23JyclRQUBD0JbsLFy7Uu+++q0cffbRM2apVq/T2229r8eLFmj59uurWraumTZs65TNmzFBhYaFuuOEGLVu2zG8fe9ZZZ6lJkyauzdfJKm++JWnEiBFatWqVxo8fL0lq1qyZunTp4pS3a9dOWVlZmjlzZrWmP2fOHL9l7c4771RkZKQkacuWLSosLAy6PS8qKtLEiRP9xp8xY4Zq1aol6cQLa1966SV9/fXXZZbVa665RqmpqdXePlxxxRXavHlz0PWsS5cuOnDgQNB1rLxjr1O5nlTV4cOH9dVXX6l58+YKDw/X6tWr9dhjj5V5p6tvm9q9e3f17t27TD133323Dh8+rB9++EFPPPFElaadkZFRqfdOLliwQGvWrFFWVpYGDx6slStXavLkycrNzdV5552nhx9+WF6vt2odoIqXw/Xr1+vo0aPq1q2bM87P8f4wAtcv1Geffaa1a9cqKytLzZo107Zt2zRjxgwVFBToyiuv1NatW7V+/XpddNFFGjRokP7+97/r/vvvV3Fxsfr376977rmn2guGmWnXrl3OwlVYWKiFCxeqoKBAF110kbNQ/hx27typL7/8UnXr1lXLli1/tnqlE/OxcuVKp/7s7Oxqv4R07969ioyMdOb93//+t+bOneu8SG/kyJFq2rSpOy/Lw29KUVGR9u3bp3r16vm9KLdu3bpq3rx50GW0vBfKln7Bd0UvTT1+/LjfS2XXrVungoICZWZm/iZf1Ftd5b3g18f3ffqGOXTokF5++WVn23DppZcqPj7+V93nO3bs0Hvvvef3ku0LLrhAcXFx5ZaVFuhF9MXFxQEPmoqLi7V3795y+/6/LdCL7Et/3+Hh4Ro4cGC5waAyVqxYUaZff/e73/2iwyD+O0q/sD0/P18bNmzwW1batWsnj8dzilt6wvHjx3Xw4EF5vV7Vrl3b7+8lt4nr169XcXGx2rZtW6lAVpGfs1/Cw8O1adOmkzuOq9Z1MbjqjTfesPDw8ICP4jzvvPPM4/FYdHS0DRgwwFJSUmzatGnOo5enTp1qtWvXtj/+8Y+2YsUK5/cwBw4csGnTptndd99tW7dutddee83uvPNO58fjy5cvt169etnZZ59tSUlJ5vGceAfSjh07rH379hYTE+M8jaq8x75+//339qc//cmefPJJ55Ys30uVW7RoYQsXLjSzE0/iGzBggN8jpc8991z78ccfg74ktLi42P7zn//Y8uXL7e6777YRI0bYH/7wB/vzn/9sX3zxhfXq1ct5yeF3331nnTt3dp6S5/V6LSMjw/bv3287duxwLosXFBTYCy+8YE8//bQdOHAgaN2dOnVyno73yiuvOD9cHjdunPXr189CQkKcH2tX5WV5V199td97tdatW2fTp0+38ePH2/jx42369Om2fv16O3r0qN8tp6Vfhl3e7W8+pV8Y/c9//tO5dWT//v3lvii7pB9++MH++te/2qRJk+xvf/ubHTp0qMovLvb5/vvv7emnnw7a7+W1bciQIWWeLlZSRX129913B3156b59+yw+Pt5OP/1069ixY5l78H1PuQo2/oEDB4LeavHRRx85TzIsfRttQkKC9e/f33766Sdn+NLvRrrggguCvuA7JCTETjvttKAvTe3fv79lZmYGfe9Z06ZNnRf8mgV+IWxVlpWS/fWf//yn3Jd7+35b9s0339grr7xic+fOtblz59orr7zi92LS0i/g3rBhQ9AXYfpesn3gwAG7/fbbg36fX375pUkq92W1wW6z8m2TzU5s62rVqmW1a9e2zp07W506dax27drWrl27Sve5T0Uvk67sy6aPHTtWZvsQbP0svW5//fXXQd99GBMTY23btg1YFhsba3369Cn3RfRDhgyxAQMGWGRkpCUnJ9udd97ptx3JyckJ+BvLiua7vJei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ePjhh11GDdVVdK/8JECS1ALxTz/9FFarFTabjbu/p0+fjgYNGiArKwvp6ekYN26cqvpuaWkpnn/+efz4448AqvtF48ePx8MPP4zS0lK365aXlwciYoXW5L6SyWRCixYt8Omnn+ruF3dSdVmcLHP27Fns3LlTVXTlehAerv9BLly4QGaz2cVzcOnSJaqsrCRvb+8bvkwjqbLsNwgLC6OjR49So0aNuPM4e/YsbdmyhUwmE12+fJlat259Q51g3377LZWXl5O3t/d1zfvnn3+mOXPmuLhTevfuTYMHD1b5JoiIXnjhBVq3bh29+OKLFBUVRUREZ86cobKyMpU/KT09XeW00cqwJUmi3bt360oXjx49Su+//z55enoaCqPdibKvXbtGX331lWrZ6enphu1l+/bt5OnpaehYu3DhAm3evNnwmPLW7aeffqKePXuqvB561EUg/r/IL7/8Qh9//DH9+OOPXCGsXltJTk6moKAg8vPz48532bJldPz4cRowYICL3Ltz587MOciTcCYnJxsKuN1RV3n574U7gfeNFHzL52fDhg1rfW7/3mi329fXl0wmk25bU0rRtcii2k6dOv3pt5uHkWw+KiqKLl68qCsAX7FiBb377ru0aNEibnzhwoX073//m+Li4lzuFZcvX6Zr1665dYz98ssvXKG0h4eH6u+MxOq8du7u/K/L9cFIXvxXby96uBPdjxs3joiI7ROtQHz06NFUVlZGaWlptd7fdV23t99+m44ePUpms9mlnXXq1MnQteVOqs5D6z67HkTC9T/IoUOHaOLEifTGG29w43v37qWSkhKaPn26S8f80qVLNGvWLAoNDWWdIK2UOTw8nCtt3rRpEyUnJ7uILJ9//nkaOHAgO5lmzpxJRNXSuvfee4+Ji++66y7VCaeNp6SkUHx8POuALFiwQCUn9vLyoscee4zatWvnss3/93//R/379+fGZGbPnq0rm87MzKRly5ZRYmIiORwO2rp1KxUWFtKVK1do7dq1lJKSQmvWrPnLXphvVbZv387t3Ldq1cpwutOnT9OqVato4MCBXGnrtWvXaOvWrdS6desay8Nzc3Np/vz53JuAUhBev359MplMTJa7b98+euONN1g7z8rKooqKCsrJyaF69erRN998Qy+99BJVVVVRnz59KC8vT0hVNZw+fZpWrlxJ7du3r5HwvTbH4777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", - "text/plain": [ - "<Figure size 1000x700 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%time\n", - "centile = q.get_quantile(100)\n", - "df = pd.DataFrame(centile[\"buckets\"])\n", - "df.plot.bar(x=\"lower_bound\", y=\"bucket_mean\", figsize=(10, 7))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "leximpact-prepare-data-kernel", - "language": "python", - "name": "leximpact-prepare-data-kernel" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/20_Convert_SAS.ipynb b/notebooks/code_CASD/extractions_base_des_impots/20_Convert_SAS.ipynb deleted file mode 100644 index 0f851b40..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/20_Convert_SAS.ipynb +++ /dev/null @@ -1,291 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# CASD : Conversion de l'extraction SAS en Apache Parquet + retraitement de certaines variables de POTE brut" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.core.interactiveshell import InteractiveShell\n", - "\n", - "InteractiveShell.ast_node_interactivity = \"all\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "year = \"2019\"\n", - "# year = \"2019\"\n", - "# year = \"2018\"\n", - "SAS_FILE = (\n", - " r\"C:\\Users\\Public\\Documents\\TRAVAIL\\agregats\\sas/agregats_pote_\"\n", - " + year\n", - " + \".sas7bdat\"\n", - ")\n", - "OUT_PATH = r\"C:\\Users\\Public\\Documents\\TRAVAIL\\agregats\\data/\"\n", - "OUT_PATH = OUT_PATH + \"assiettes_pote_brutes_\" + year + \"-chunk/\"\n", - "taille_chunk = 2 * 2**20 # 2**20 = 1_048_576\n", - "# taille_chunk = 5000\n", - "# taille_chunk = 600_000" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "from pathlib import Path\n", - "\n", - "import pandas as pd\n", - "import vaex\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# sas_col = \"FIP18_c revkire rimp tsirna rbg srbg mnrvr3 mnrvi2 mnrvk mnrvni Z8uy nbpart zn nbefi nbfoy nbpldm mat agec aged clirpg frf Z1ak Z1bk txmoy impot impotnet j rnirp8 rnimeh tsirna mnipeg rnirai rnirdu rnirgi f g h i r p Z1az Z1bz stutile zf zp\".split( \" \")\n", - "# sas_col = \"FIP18_c revkire rimp tsirna rbg srbg mnrvr3 mnrvi2 mnrvk mnrvni Z8uy nbpart zn nbefi nbfoy nbpldm mat agec aged clirpg frf Z1ak Z1bk txmoy impot impotnet j rnirp8 rnimeh tsirna mnipeg rnirai rnirdu rnirgi f g h i r p Z1az Z1bz stutile zf zp\".split(\n", - "# \" \"\n", - "# )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Traitement des données du fichier SAS" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# On somme les colonnes qui nous intéressent, pour l'instant n'est valable que pour 2019\n", - "def sum_columns(df):\n", - " # Pour assiette de CSG\n", - " df[\"revenus_capitaux_prelevement_bareme\"] = df.z2ch\n", - " df[\"revenus_capitaux_prelevement_liberatoire\"] = df.z2dh + df.z2xx\n", - " df[\"revenus_capitaux_prelevement_forfaitaire_unique_ir\"] = df.z2dc + df.z2tr + df.z2ts + df.z2ww + df.z2zz + df.z2fu + df.z2tt\n", - " df[\"rente_viagere_titre_onereux_net\"] = df.z1cw + df.z1dw\n", - " # Micro-foncier : on applique l'abattement de 30%\n", - " df[\"revenu_categoriel_foncier\"] = (\n", - " df.z4ba + (df.z4be * 0.7) - (df.z4bb + df.z4bc + df.z4bd)\n", - " )\n", - " # df['rev_categ_foncier4ba']=df.Z4ba\n", - " df[\"assiette_csg_plus_values\"] = df.z3vg + df.z3ua - df.z3va\n", - " df[\"assiette_csg_revenus_capital\"] = (\n", - " df[\"revenus_capitaux_prelevement_bareme\"]\n", - " + df[\"revenus_capitaux_prelevement_liberatoire\"]\n", - " + df[\"revenus_capitaux_prelevement_forfaitaire_unique_ir\"]\n", - " + df[\"rente_viagere_titre_onereux_net\"]\n", - " + df[\"revenu_categoriel_foncier\"]\n", - " + df[\"assiette_csg_plus_values\"]\n", - " )\n", - "\n", - " # Autres\n", - " df[\"retraites\"] = df.z1as + df.z1bs # + df.mnimqg\n", - " # df[\n", - " # \"pre_retraites_etranger\"\n", - " # ] = df.z8sc # Attention, seulement de l'étranger, sinon c'est df.Z1ap + df.Z1bp\n", - "\n", - " df[\"chomage_et_indemnites\"] = df.z1ap + df.z1bp\n", - "\n", - " df[\"rev_salaire\"] = df.z1aj + df.z1bj + df.z1cj + df.z8tk + df.z1af + df.z1ag + df.z1aa + df.z1ba + df.z1gb + df.z1hb + df.z1gf + df.z1hf + df.z1gg + df.z1hg +\n", - " df.z1aq + df.z1bq + df.z1gh + df.z1hh \n", - "\n", - " # Revenus des non salariés\n", - " df['rag'] = df.z5hd + df.z5id + df.z5hb + df.z5ib + df.z5hh + df.z5ih + df.z5hc + df.z5ic + df.z5hi + df.z5ii + df.z5ak + df.z5bk + df.z5al + df.z5bl - df.z5hf -\n", - " df.z5if - df.z5hl - df.z5il + df.z5hm + df.z5im + df.z5hz + df.z5iz + df.z5xa + df.z5ya + df.z5xb + df.z5yb + df.z5xt + df.z5xu + df.z5xv + df.z5xw\n", - " \n", - " df['ric'] = df.z5ta + df.z5ua + df.z5tb + df.z5ub + df.z5kn + df.z5ln + df.z5ko + df.z5lo + df.z5kp + df.z5lp + df.z5kb + df.z5lb + df.z5kh + df.z5lh + df.z5kc +\n", - " df.z5lc + df.z5ki + df.z5li + df.z5df + df.z5ef + df.z5dg + df.z5eg - df.z5kf - df.z5lf - df.z5kl - df.z5ll\n", - "\n", - " df['rnc'] = df.z5te + df.z5ue + df.z5hp + df.z5ip + df.z5hq + df.z5iq + df.z5qb + df.z5rb + df.z5qh + df.z5rh + df.z5qc + df.z5rc + df.z5qi + df.z5ri + df.z5xj +\n", - " df.z5yj + df.z5xk + df.z5yk - df.z5qe - df.z5re - df.z5qk - df.z5rk + df.z5ql + df.z5rl + df.z5qm + df.z5rm\n", - "\n", - " df[\"pension_invalidite\"] = df.z1az + df.z1bz\n", - "\n", - " df[\"pension_alimentaire\"] = df.z1ao + df.z1bo\n", - "\n", - " df[\"revenus_individuels\"] = df[\"rev_salaire\"] + df[\"retraites\"] + df[\"chomage_et_indemnites\"] + df[\"rag\"] + df[\"ric\"] + df[\"rnc\"] + df[\"pension_invalidite\"] + df.[\"pension_alimentaire\"]\n", - "\n", - " df[\"revenus_individuels_par_part\"] = df.revenus_individuels / df.nbpart\n", - " df[\"revkire_par_part\"] = df.revkire / df.nbpart\n", - " \n", - " df.drop(['z2ch', 'z2dh', 'z2xx', 'z2dc', 'z2tr', 'z2ts', 'z2ww', 'z2zz', 'z2fu', 'z2tt', 'z1cw', 'z1dw', 'z4ba', 'z4be', 'z4bb', 'z4bc', 'z4bd',\n", - " 'z3vg', 'z3ua', 'z3va', 'z1as', 'z1bs', 'z1ap', 'z1bp', 'z1aj', 'z1bj', 'z1cj', 'z8tk', 'z1af', 'z1ag', 'z1aa', 'z1ba', 'z1gb',\n", - " 'z1hb', 'z1gf', 'z1hf', 'z1gg', 'z1hg', 'z1aq', 'z1bq', 'z1gh', 'z1hh', 'z5hd', 'z5id', 'z5hb', 'z5ib', 'z5hh', 'z5ih', \n", - " 'z5hc', 'z5ic', 'z5hi', 'z5ii', 'z5ak', 'z5bk', 'z5al', 'z5bl', 'z5hf', 'z5if', 'z5hl', 'z5il', 'z5hm', 'z5im', 'z5hz',\n", - " 'z5iz', 'z5xa', 'z5ya', 'z5xb', 'z5yb', 'z5xt', 'z5xu', 'z5xv', 'z5xw', 'z5ta', 'z5ua', 'z5tb', 'z5ub', 'z5kn', 'z5ln', \n", - " 'z5ko', 'z5lo', 'z5kp', 'z5lp', 'z5kb', 'z5lb', 'z5kh', 'z5lh', 'z5kc', 'z5lc', 'z5ki', 'z5li', 'z5df', 'z5ef', 'z5dg',\n", - " 'z5eg', 'z5kf', 'z5lf', 'z5kl', 'z5ll', 'z5te', 'z5ue', 'z5hp', 'z5ip', 'z5hq', 'z5iq', 'z5qb', 'z5rb', 'z5qh', 'z5rh',\n", - " 'z5qc', 'z5rc', 'z5qi', 'z5ri', 'z5xj', 'z5yj', 'z5xk', 'z5yk', 'z5qe', 'z5re', 'z5qk', 'z5rk', 'z5ql', 'z5rl', 'z5qm', 'z5rm',\n", - " 'z1az', 'z1bz', 'z1ao', 'z1bo'])\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def clean_chunk(chunk):\n", - " chunk.columns = [c.lower() for c in chunk.columns.to_list()]\n", - " chunk.fillna(0, inplace=True)\n", - " chunk = chunk.astype({\"stutile\": \"str\"})\n", - " chunk = chunk.astype({\"fip18_c\": \"str\"})\n", - " chunk = chunk.replace({\"tsirna\": {\"+\": 1, \"-\": \"-1\"}, \"srbg\": {\"+\": 1, \"-\": \"-1\"}})\n", - " chunk = chunk.astype({\"tsirna\": \"int32\", \"srbg\": \"int32\"})\n", - " chunk[\"rnirp8\"] = chunk[\"rnirp8\"] * chunk[\"tsirna\"]\n", - " chunk[\"rbg\"] = chunk[\"rbg\"] * chunk[\"srbg\"]\n", - " chunk[\"f+h\"] = chunk[\"f\"] + chunk[\"h\"]\n", - " # chunk[\"zp+zf\"] = chunk[\"zp\"] + chunk[\"zf\"] => Its a boolean !!!\n", - " chunk.drop([\"tsirna\", \"srbg\"], axis=1, inplace=True)\n", - " chunk = sum_columns(chunk)\n", - "\n", - " return chunk" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lecture du fichier SAS\n", - "\n", - "On va lire le fichier par morceau de 1 million de lignes, pour ne pas saturer la mémoire. Il y a 39 millions de lignes.\n", - "\n", - "On va les enregistrer au fur et à mesure en format Apache Arrow." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nombre d'itérations : 19\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "19it [22:00, 69.48s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 20min 54s\n", - "Wall time: 22min\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "%%time\n", - "# Temps sur CASD : < 20 minutes.\n", - "\n", - "\n", - "# Efface le dossier de sortie\n", - "shutil.rmtree(OUT_PATH, ignore_errors=True)\n", - "Path(OUT_PATH).mkdir(parents=True, exist_ok=True)\n", - "\n", - "dfi = pd.read_sas(\n", - " SAS_FILE, chunksize=taille_chunk, encoding=\"iso8859-15\", iterator=True\n", - ")\n", - "\n", - "dd_values = None\n", - "i = 0\n", - "print(f\"Nombre d'itérations : {39512402/taille_chunk:.0f}\")\n", - "for chunk in tqdm(dfi):\n", - " chunk = clean_chunk(chunk)\n", - " dd_values = vaex.from_pandas(chunk, copy_index=False)\n", - " dd_values.export(f\"{OUT_PATH}pote_brutes_{year}_{i}.parquet\")\n", - " del dd_values\n", - " dd_values = None\n", - " #### DEBUG\n", - " i += 1\n", - " # if i>=2:\n", - " # break\n", - " #### DEBUG" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Vérification" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "chunk" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from leximpact_prepare_data.calib_and_copules import tc\n", - "\n", - "dfv = vaex.open(f\"{OUT_PATH}pote_brutes_{year}_*.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tc.assertEqual(len(dfv), 39_264_696) # 39_512_402\n", - "tc.assertGreaterEqual(dfv[\"revkire\"].count(), 36644848)\n", - "tc.assertGreaterEqual(dfv[\"revkire\"].sum(), 1_084_000_000_000)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "leximpact-prepare-data-kernel", - "language": "python", - "name": "leximpact-prepare-data-kernel" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/30a_Agregats_POTE-Quantiles.ipynb b/notebooks/code_CASD/extractions_base_des_impots/30a_Agregats_POTE-Quantiles.ipynb deleted file mode 100644 index 481d2672..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/30a_Agregats_POTE-Quantiles.ipynb +++ /dev/null @@ -1,381 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "284168c2-c515-442a-8943-638ab2487933", - "metadata": {}, - "source": [ - "# CASD : Extraction de quantiles de POTE" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3b1b7645-f0a7-4929-a667-3ffa31e1b4db", - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.core.interactiveshell import InteractiveShell\n", - "\n", - "InteractiveShell.ast_node_interactivity = \"all\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e888519d-ca9f-404a-b188-49de0bf72e31", - "metadata": {}, - "outputs": [], - "source": [ - "year = \"2019\"\n", - "# year = \"2019\"\n", - "# year = \"2018\"\n", - "OUT_PATH = r\"C:\\Users\\Public\\Documents\\TRAVAIL\\agregats\\data/\"\n", - "ARROW_PATH = OUT_PATH + \"assiettes_pote_brutes_\" + year + r\"-chunk/\"\n", - "taille_chunk = 2 * 2**20 # 2**20 = 1_048_576\n", - "# taille_chunk = 5000" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5e63307c-d42d-43d6-9ce3-8ea904a338eb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.0.17'" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import leximpact_prepare_data\n", - "\n", - "leximpact_prepare_data.__version__" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d5c9f1f6-e464-48d1-a933-421ad58a270a", - "metadata": {}, - "outputs": [], - "source": [ - "import gc\n", - "import json\n", - "\n", - "import vaex\n", - "from tqdm import tqdm\n", - "\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "805afac3-cab5-4795-8c93-84cd0e99d45f", - "metadata": {}, - "outputs": [ - { - "ename": "AssertionError", - "evalue": "39818227 != 39264696", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)", - "File \u001b[1;32m<timed exec>:5\u001b[0m, in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n", - "File \u001b[1;32mC:\\Users\\Public\\Documents\\Anaconda\\envs\\leximpa\\lib\\unittest\\case.py:837\u001b[0m, in \u001b[0;36mTestCase.assertEqual\u001b[1;34m(self, first, second, msg)\u001b[0m\n\u001b[0;32m 833\u001b[0m \u001b[38;5;124;03m\"\"\"Fail if the two objects are unequal as determined by the '=='\u001b[39;00m\n\u001b[0;32m 834\u001b[0m \u001b[38;5;124;03m operator.\u001b[39;00m\n\u001b[0;32m 835\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 836\u001b[0m assertion_func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getAssertEqualityFunc(first, second)\n\u001b[1;32m--> 837\u001b[0m \u001b[43massertion_func\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfirst\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msecond\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mC:\\Users\\Public\\Documents\\Anaconda\\envs\\leximpa\\lib\\unittest\\case.py:830\u001b[0m, in \u001b[0;36mTestCase._baseAssertEqual\u001b[1;34m(self, first, second, msg)\u001b[0m\n\u001b[0;32m 828\u001b[0m standardMsg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m != \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m _common_shorten_repr(first, second)\n\u001b[0;32m 829\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_formatMessage(msg, standardMsg)\n\u001b[1;32m--> 830\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfailureException(msg)\n", - "\u001b[1;31mAssertionError\u001b[0m: 39818227 != 39264696" - ] - } - ], - "source": [ - "%%time\n", - "# Temps de chargement 8 secondes pour 39,264,695 lignes, vive le lazy loading !\n", - "dfv = vaex.open(ARROW_PATH + \"*\")\n", - "# dfv = vaex.open(ARROW_PATH + \"pote_brutes_2019_5.arrow\")\n", - "# dfv\n", - "tc.assertEqual(len(dfv), 39264696)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f7042430-e355-4142-a733-a083b936d67d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 0 ns\n", - "Wall time: 0 ns\n" - ] - } - ], - "source": [ - "%%time\n", - "# Temps d'exécution : 2 secondes\n", - "# pyramide_des_ages = dfv.groupby(by=\"aged\", agg={\"age\": vaex.agg.count(\"aged\")})\n", - "# pyramide_des_ages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e8a14fa-6b7a-4a3a-95d2-c559dbd2b20e", - "metadata": {}, - "outputs": [], - "source": [ - "# dfv.info()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7d55425f-af65-4f69-9b84-270020a8122e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['mat',\n", - " 'aged',\n", - " 'agec',\n", - " 'zf',\n", - " 'zp',\n", - " 'zn',\n", - " 'stutile',\n", - " 'f',\n", - " 'clirpg',\n", - " 'g',\n", - " 'r',\n", - " 'j',\n", - " 'h',\n", - " 'i',\n", - " 'p',\n", - " 'nbefi',\n", - " 'nbfoy',\n", - " 'nbpldm',\n", - " 'rimp',\n", - " 'rnirp8',\n", - " 'rbg',\n", - " 'mnrvr3',\n", - " 'txmoy',\n", - " 'revkire',\n", - " 'z1ak',\n", - " 'z1az',\n", - " 'z1bk',\n", - " 'z1bz',\n", - " 'z8uy',\n", - " 'mnipeg',\n", - " 'mnrvi2',\n", - " 'mnrvk',\n", - " 'mnrvni',\n", - " 'rnimeh',\n", - " 'rnirai',\n", - " 'rnirdu',\n", - " 'rnirgi',\n", - " 'frf',\n", - " 'impotnet',\n", - " 'impot',\n", - " 'nbpart',\n", - " 'fip18_c',\n", - " 'f+h']" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dfv.get_column_names()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d9d20ef4-b120-4f52-8ba5-6f722d56037b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['f', 'g', 'h', 'i', 'r', 'p']" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"f g h i r p\".split(\" \")" - ] - }, - { - "cell_type": "markdown", - "id": "0653c281-5687-4542-8ff1-bd70dace2410", - "metadata": {}, - "source": [ - "## Variables continues" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "48b77a1d-4e9e-496b-8131-be831cfbf5ab", - "metadata": {}, - "outputs": [], - "source": [ - "# \"Z1ak Z1bk txmoy impot impotnet rnirp8 rnimeh tsirna mnipeg rnirai rnirdu rnirgi Z1az Z1bz\".split(\" \")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7985d253-e7d1-49b1-8d96-372b2002cef0", - "metadata": {}, - "outputs": [], - "source": [ - "# continuous_variables = [\n", - "# \"mnipeg\", Toujours à 0\n", - "# \"rnirp8\",\n", - "# \"rnimeh\",\n", - "# \"rnirai\",\n", - "# \"rnirdu\",\n", - "# \"rnirgi\",\n", - "# \"Z1az\",\n", - "# \"Z1bz\",\n", - "# \"rimp\",\n", - "# \"rbg\",\n", - "# \"mnrvr3\",\n", - "# \"revkire\",\n", - "# \"Z1ak\",\n", - "# \"Z1bk\",\n", - "# \"Z8uy\",\n", - "# \"MNRVI2\",\n", - "# \"MNRVK\",\n", - "# \"MNRVNI\",\n", - "# \"FRF\",\n", - "# \"Z1ak\",\n", - "# \"Z1bk\",\n", - "# \"txmoy\",\n", - "# \"impot\",\n", - "# \"impotnet\",\n", - "# ]\n", - "# continuous_variables = [c.lower() for c in continuous_variables]" - ] - }, - { - "cell_type": "markdown", - "id": "7f1e01ef-7303-4bfd-9d60-a28f861c56bd", - "metadata": {}, - "source": [ - "### Calcul des quantiles" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "da0ed4e7-0836-43c1-a99e-c33a5236f7d9", - "metadata": {}, - "outputs": [], - "source": [ - "def compute_quantile(vdf, columns=None, quantiles=10):\n", - " vdf.fillna(column_names=columns, value=0, inplace=True)\n", - " # vdf.fillnan(column_names=columns, value=0, inplace=True)\n", - " vdf.shape[0]\n", - " columns = columns if columns else vdf.get_column_names()\n", - " for col in tqdm(columns):\n", - " try:\n", - " # print(col)\n", - " q = Quantile(vdf[col].tolist())\n", - " for quantile in quantiles:\n", - " q_dict = q.get_quantile(quantile)\n", - " with open(\n", - " f\"{OUT_PATH}/quantile_POTE_{quantile}_{year}_{col}.json\", \"w\"\n", - " ) as f:\n", - " f.write(json.dumps(q_dict))\n", - " del q\n", - " gc.collect()\n", - " except Exception as e:\n", - " print(f\"ERROR processing {col} {e.__class__.__name__} : {e}\")\n", - " continue" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5960386d-494f-4305-ac33-d98381478b54", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████| 23/23 [1:50:32<00:00, 288.38s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 1h 49min 50s\n", - "Wall time: 1h 50min 32s\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "%%time\n", - "# Temps sur CASD : 5 minutes par colonne\n", - "compute_quantile(dfv, quantiles=[10, 100])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d4dcc7d7-29f2-470e-8713-8858399c54f3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "469" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "del dfv\n", - "gc.collect()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "leximpact-prepare-data-kernel", - "language": "python", - "name": "leximpact-prepare-data-kernel" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/30b_Copules_POTE.ipynb b/notebooks/code_CASD/extractions_base_des_impots/30b_Copules_POTE.ipynb deleted file mode 100644 index a930163a..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/30b_Copules_POTE.ipynb +++ /dev/null @@ -1,714 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "284168c2-c515-442a-8943-638ab2487933", - "metadata": {}, - "source": [ - "# CASD : Extraction d'agrégats" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b54838d4-6300-4242-816a-2b9df2041868", - "metadata": {}, - "outputs": [], - "source": [ - "#!conda list" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3b1b7645-f0a7-4929-a667-3ffa31e1b4db", - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.core.interactiveshell import InteractiveShell\n", - "\n", - "InteractiveShell.ast_node_interactivity = \"all\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e888519d-ca9f-404a-b188-49de0bf72e31", - "metadata": {}, - "outputs": [], - "source": [ - "year = \"2019\"\n", - "# year = \"2019\"\n", - "# year = \"2018\"\n", - "OUT_PATH = r\"C:\\Users\\Public\\Documents\\TRAVAIL\\agregats\\data/\"\n", - "OUT_PATH = OUT_PATH + \"assiettes_pote_brutes_\" + year + \"-chunk/\"\n", - "taille_chunk = 2 * 2**20 # 2**20 = 1_048_576" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5e63307c-d42d-43d6-9ce3-8ea904a338eb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.0.23'" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import leximpact_prepare_data\n", - "\n", - "leximpact_prepare_data.__version__" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d5c9f1f6-e464-48d1-a933-421ad58a270a", - "metadata": {}, - "outputs": [], - "source": [ - "import gc\n", - "\n", - "import pandas as pd\n", - "import vaex\n", - "from tqdm import tqdm\n", - "\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "805afac3-cab5-4795-8c93-84cd0e99d45f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 375 ms\n", - "Wall time: 372 ms\n" - ] - } - ], - "source": [ - "%%time\n", - "# Temps de chargement 8 secondes pour 39,264,695 lignes, vive la lazy loading !\n", - "dfv = vaex.open(OUT_PATH + \"*\")\n", - "# dfv = vaex.open(ARROW_PATH + \"pote_brutes_2019_5.arrow\")\n", - "# dfv" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f7042430-e355-4142-a733-a083b936d67d", - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "# Temps d'exécution : 2 secondes\n", - "# pyramide_des_ages = dfv.groupby(by=\"aged\", agg={\"age\": vaex.agg.count(\"aged\")})\n", - "# pyramide_des_ages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b5a6136d-ad4b-4ad0-b823-1fa476cc0100", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e8a14fa-6b7a-4a3a-95d2-c559dbd2b20e", - "metadata": {}, - "outputs": [], - "source": [ - "# dfv.info()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e08260b0-bf98-4160-8825-bcdaa20c9229", - "metadata": {}, - "outputs": [], - "source": [ - "# tc.assertEqual(dfv[\"revkire\"].count(), 39512402) # 2019\n", - "tc.assertEqual(dfv[\"revkire\"].count(), 39818227) # 2020" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7d55425f-af65-4f69-9b84-270020a8122e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['rnsgbd',\n", - " 'rnsgld',\n", - " 'revkire',\n", - " 'z1aj',\n", - " 'z1ap',\n", - " 'z1as',\n", - " 'z1bj',\n", - " 'z1bp',\n", - " 'z1bs',\n", - " 'z1cj',\n", - " 'z1cw',\n", - " 'z1dw',\n", - " 'z2ch',\n", - " 'z2dc',\n", - " 'z2dh',\n", - " 'z2tr',\n", - " 'z3ua',\n", - " 'z3vg',\n", - " 'z3vz',\n", - " 'z4ba',\n", - " 'z4bb',\n", - " 'z4bc',\n", - " 'z4bd',\n", - " 'z4be',\n", - " 'z6de',\n", - " 'z8sc',\n", - " 'z8sw',\n", - " 'z8sx',\n", - " 'cics',\n", - " 'mnimqg',\n", - " 'fip18_c',\n", - " 'revenus_capitaux_prelevement_bareme',\n", - " 'revenus_capitaux_prelevement_liberatoire',\n", - " 'revenus_capitaux_prelevement_forfaitaire_unique_ir',\n", - " 'rente_viagere_titre_onereux_net',\n", - " 'revenu_categoriel_foncier',\n", - " 'assiette_csg_plus_values',\n", - " 'assiette_csg_revenus_capital',\n", - " 'retraites',\n", - " 'chomage_et_indemnites',\n", - " 'rev_salaire']" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dfv.get_column_names()\n", - "# Remove id fip18_c\n", - "_ = dfv.drop(\"fip18_c\", inplace=True)" - ] - }, - { - "cell_type": "markdown", - "id": "0653c281-5687-4542-8ff1-bd70dace2410", - "metadata": {}, - "source": [ - "## Variables continues" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "48b77a1d-4e9e-496b-8131-be831cfbf5ab", - "metadata": {}, - "outputs": [], - "source": [ - "# \"Z1ak Z1bk txmoy impot impotnet rnirp8 rnimeh tsirna mnipeg rnirai rnirdu rnirgi Z1az Z1bz\".split(\" \")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7985d253-e7d1-49b1-8d96-372b2002cef0", - "metadata": {}, - "outputs": [], - "source": [ - "# continuous_variables = dfv.get_column_names()\n", - "# continuous_variables = [c.lower() for c in continuous_variables]\n", - "continuous_variables = [\n", - " \"revkire\",\n", - " \"revkire_par_part\",\n", - " \"rbg\",\n", - " \"rnirp8\",\n", - " \"assiette_csg_revenus_capital\",\n", - " \"revenus_capitaux_prelevement_bareme\",\n", - " \"revenus_capitaux_prelevement_liberatoire\",\n", - " \"revenus_capitaux_prelevement_forfaitaire_unique_ir\",\n", - " \"rente_viagere_titre_onereux_net\",\n", - " \"revenu_categoriel_foncier\",\n", - " \"assiette_csg_plus_values\",\n", - " \"revenus_individuels\",\n", - " \"revenus_individuels_par_part\",\n", - " \"rev_salaire\",\n", - " \"retraites\",\n", - " \"chomage_et_indemnites\",\n", - " \"rag\",\n", - " \"ric\",\n", - " \"rnc\",\n", - " \"pension_invalidite\",\n", - " \"pension_alimentaire\",\n", - "]" - ] - }, - { - "cell_type": "markdown", - "id": "f9d8a9c4-f719-4af9-bb7d-ece0262bf405", - "metadata": {}, - "source": [ - "### Calcul d'agregats" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "418b50a2-0bc9-4f4b-a7db-1bb271ad1d32", - "metadata": {}, - "outputs": [], - "source": [ - "def compute_agg(vdf, columns):\n", - " sub_total = []\n", - " vdf.fillna(column_names=columns, value=0, inplace=True)\n", - " # vdf.fillnan(column_names=columns, value=0, inplace=True)\n", - " ldf = vdf.shape[0]\n", - " columns = columns if columns else vdf.get_column_names()\n", - " for col in tqdm(columns):\n", - " # print(col)\n", - " name = f\"{col}_non_zero\"\n", - " vdf.select(f\"{col} != 0\", name=name)\n", - " nb_no_zero = int(vdf.count(\"*\", selection=name))\n", - " lenzero = ldf - nb_no_zero\n", - " dict_col = {\n", - " \"name\": col,\n", - " \"nb_line\": ldf,\n", - " \"lenzero\": lenzero,\n", - " \"pct_zero\": lenzero / ldf * 100,\n", - " \"sum\": int(vdf.sum(col)),\n", - " \"mean\": float(vdf.mean(col, selection=name)) if nb_no_zero > 0 else 0.0,\n", - " \"variance\": float(vdf.var(col, selection=name)) if nb_no_zero > 0 else 0.0,\n", - " \"std_dev\": float(vdf.std(col, selection=name)) if nb_no_zero > 0 else 0.0,\n", - " }\n", - " sub_total.append(dict_col)\n", - " return pd.DataFrame(sub_total)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "22b6014d-ae3c-4b70-82f8-c5f51d484bed", - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "# Temps sur CASD : 30s par colonne avant l'upgrade de machine, moins de 3 secondes après upgrade !\n", - "df_agg = compute_agg(dfv, continuous_variables)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a3f94b4e-3016-48be-bdcf-0f3e236c434a", - "metadata": {}, - "outputs": [], - "source": [ - "# dfv.mnipeg.mean()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "57e615a2-d2d7-4422-bed0-4d8c27e0b06d", - "metadata": {}, - "outputs": [], - "source": [ - "pd.set_option(\"display.float_format\", \"{:,}\".format)\n", - "# Export dans un fichier\n", - "df_agg.to_csv(OUT_PATH + \"/agregats_POTE_revenus_rici_\" + year + \".csv\", index=False)\n", - "df_agg" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5317aaf0-24cd-4af9-b757-a50818d74177", - "metadata": {}, - "outputs": [], - "source": [ - "del df_agg\n", - "import gc\n", - "\n", - "gc.collect()" - ] - }, - { - "cell_type": "markdown", - "id": "785ec58a-da1b-4cd3-8851-169b60d4ef24", - "metadata": {}, - "source": [ - "## Extraction de fonctions de répartition (pour calibration)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3023e812-2306-4fc8-813e-83e8a9e6da19", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 23.4 s\n", - "Wall time: 23.2 s\n" - ] - } - ], - "source": [ - "%%time\n", - "dfv = dfv.fillna(0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9ee6e983-0135-4db8-8d66-43fbbfc3b0f3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 0 ns\n", - "Wall time: 0 ns\n" - ] - } - ], - "source": [ - "%%time\n", - "# calib = get_calib(dfv, \"rimp\", 10)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aaf56d71-c77d-4e03-8ec8-7b7b337ac8f9", - "metadata": {}, - "outputs": [], - "source": [ - "# Redéfinition à migrer !\n", - "from typing import Dict\n", - "\n", - "\n", - "def get_primary_buckets(\n", - " vdx_sort: vaex.dataframe.DataFrameLocal,\n", - " nb_bucket: int,\n", - " variable_to_split_on: str = \"revkire\",\n", - " minimal_bucket_size=12,\n", - " debug=False,\n", - ") -> Dict:\n", - " \"\"\"\n", - " Objectif: Split the variable in buckets\n", - " Dans chaque bucket on stocke toutes les valeurs non nulles de \"variable\"\n", - " ::vdx_sort:: Le dataset, trié selon la variable à étudier\n", - " ::nb_bucket:: Nombre de tranches souhaitées\n", - " ::variable_to_split_on:: Variable on which to split buckets\n", - " ::debug:: Pour activer un mode debug, qui affiche des traces\n", - " \"\"\"\n", - " dataset_size = vdx_sort.shape[0] # Nb de lignes\n", - " # Conversion en array\n", - " variable_array = vdx_sort.to_arrays(\n", - " column_names=[variable_to_split_on], selection=False, array_type=\"python\"\n", - " )[0]\n", - " # On vérifie que le dataset est bien trié\n", - " previous = variable_array[-1]\n", - " for i in range(1, 1000):\n", - " idx = dataset_size // i\n", - " idx = idx if idx != dataset_size else dataset_size - 1\n", - " if previous < variable_array[idx]:\n", - " raise DatasetNotSorted(\n", - " f\"Your dataset is not sorted on {variable_to_split_on}!\"\n", - " )\n", - " previous = variable_array[idx]\n", - "\n", - " # Découpage du RFR en buckets:\n", - " borders = get_borders(\n", - " dataset_size=dataset_size,\n", - " nb_bucket=nb_bucket,\n", - " minimal_bucket_size=minimal_bucket_size,\n", - " debug=debug,\n", - " )\n", - "\n", - " # On retire la dernière frontière pour éviter des tests (index out of range), on la remetra après\n", - " borders = borders[:-1]\n", - " i = 0\n", - " # On supprime les frontières qui n'auraient que du 0\n", - " while i < len(borders):\n", - " if variable_array[borders[i]] < 1:\n", - " if debug:\n", - " print(\n", - " f\"WARNING: On efface la frontière d'index {i} : {borders[i]} inutile car valeur de la borne haute est {variable_array[borders[i]]}\"\n", - " )\n", - " borders = borders[:i] + borders[i + 1 :]\n", - " else:\n", - " i += 1\n", - " frontieres_valeurs = [0] + [variable_array[frontiere] for frontiere in borders]\n", - " # On ajoute une valeur de fin trés haute (10^15€)\n", - " frontieres_valeurs += [10**15]\n", - " # On remet la dernière frontière\n", - " borders += [dataset_size]\n", - " dic = {\"borders_values\": frontieres_valeurs, \"borders\": borders}\n", - " del variable_array\n", - " gc.collect()\n", - " return dic" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c45ddd1b-2477-4bd2-ad27-a4652fafe270", - "metadata": {}, - "outputs": [], - "source": [ - "# TODO : import from package\n", - "# def get_fake_upper_bound(val):\n", - "# if val == 1e15:\n", - "# return 1e15\n", - "# else:\n", - "# return 10 ** (len(str(int(val))))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "32fa27f6-6639-4fca-8eb0-16597361b652", - "metadata": {}, - "outputs": [], - "source": [ - "# get_fake_upper_bound(100.5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8317e05e-df85-4b16-bca8-80ca19e8223e", - "metadata": {}, - "outputs": [], - "source": [ - "# calib = get_copulas(dfv, \"revkire\", \"revkire\", 10, une_tranche_rfr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "59ae4f6a-6fe5-4bbf-8aba-9fcb1c75734a", - "metadata": {}, - "outputs": [], - "source": [ - "# calib[\"copules\"][\"buckets\"][-1]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "50bf217f-3a83-4884-87a7-98d3768878b4", - "metadata": {}, - "outputs": [], - "source": [ - "# calib = calib[\"copules\"][0][\"buckets\"]\n", - "# keep_upper_bound_secret(calib)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a974e412-cbfa-4a64-86e9-f6fe80394f41", - "metadata": {}, - "outputs": [], - "source": [ - "# calib" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d2a34c2f-94de-44e4-a4ee-1ef029c8d5c6", - "metadata": {}, - "outputs": [], - "source": [ - "# calib[\"buckets\"][-1][\"seuil_var_supp\"] = \"secret\"\n", - "# calib" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a122c283-4bef-4ffa-a76b-d846d36f50be", - "metadata": {}, - "outputs": [], - "source": [ - "# from IPython.display import JSON\n", - "\n", - "# JSON(calib)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "df0387a2-0574-4acc-a75e-f8c61fc09afc", - "metadata": {}, - "outputs": [], - "source": [ - "# %%time\n", - "# # Temps sur CASD : 138s par iteration\n", - "# nb_bucket_var = 100\n", - "\n", - "# for variable in tqdm(continuous_variables):\n", - "# #calib = get_calib(dfv, variable, nb_bucket_var)\n", - "# # print(variable)\n", - "# calib = compute_copule_vaex(dfv, variable, nb_bucket_var, une_tranche_rfr)\n", - "# calib[\"copules\"][0][\"buckets\"][-1][\"seuil_var_supp\"] = \"secret\"\n", - "# with open(f\"{OUT_PATH}CalibPote-{nb_bucket_var}-{year}-{variable}.json\", \"w\") as f:\n", - "# f.write(json.dumps(calib[\"copules\"][0][\"buckets\"]))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "026dcad9-2b94-4ba7-8117-8cc92efc8b8c", - "metadata": {}, - "outputs": [], - "source": [ - "# %%time\n", - "# # Temps sur CASD : 538s par iteration !\n", - "# nb_bucket_var = 1000\n", - "\n", - "# for variable in tqdm(continuous_variables):\n", - "# #calib = get_calib(dfv, variable, nb_bucket_var)\n", - "# # print(variable)\n", - "# calib = compute_copule_vaex(dfv, variable, nb_bucket_var, une_tranche_rfr)\n", - "# calib[\"copules\"][0][\"buckets\"][-1][\"seuil_var_supp\"] = \"secret\"\n", - "# with open(f\"{OUT_PATH}CalibPote-{nb_bucket_var}-{year}-{variable}.json\", \"w\") as f:\n", - "# f.write(json.dumps(calib[\"copules\"][0][\"buckets\"]))" - ] - }, - { - "cell_type": "markdown", - "id": "d1c5f22c-5e27-4a8f-94a3-5bfe897f1d7f", - "metadata": {}, - "source": [ - "## Extraction de Copules" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c4e85dd4-2c66-4994-ad0d-5d327737aece", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 3/3 [07:55<00:00, 158.59s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 7min 54s\n", - "Wall time: 7min 55s\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "%%time\n", - "nb_bucket_var = 10\n", - "\n", - "# on fait des copules en fonction du rfr mais aussi en fonction des revenus individuels pour voir si ça permet d'améliorer l'imputation\n", - "# Les copules en fonction de assiette_csg_revenus_capital servent si on veut voir la distribution des différents revenus du capital dans la somme de revenus du capital\n", - "for copule_var in [\"revkire\", \"revkire_par_part\", \"revenus_individuels\", \"revenus_individuels_par_part\", \"assiette_csg_revenus_capital\"]\n", - " centile = get_primary_buckets(\n", - " dfv, nb_bucket_var, variable_to_split_on=copule_var, minimal_bucket_size=500\n", - " )\n", - "\n", - " for variable in tqdm(continuous_variables): # continuous_variables\n", - " try:\n", - " copule = get_copulas(\n", - " dfv,\n", - " copule_var,\n", - " variable,\n", - " nb_bucket_var,\n", - " centile_rfr,\n", - " minimal_bucket_size=100,\n", - " )\n", - " # copule[\"copules\"][0][\"buckets\"][-1][\"upper_bound\"] = \"secret\"\n", - " anonimyze_lower_and_upper_bound(copule[\"copules\"])\n", - " with open(\n", - " f\"{OUT_PATH}CopulePote-{nb_bucket_var}-{year}-{copule_var}-{variable}.json\", \"w\"\n", - " ) as f:\n", - " f.write(json.dumps(copule))\n", - " except Exception as e:\n", - " print(f\"ERROR processing {variable}\", e)\n", - " # raise e" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "364dff4d-d746-441e-bde6-1db0594e80b5", - "metadata": {}, - "outputs": [], - "source": [ - "# dfv.column_names" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "53396d39-b2d7-459a-abde-83a77a897f50", - "metadata": {}, - "outputs": [], - "source": [ - "# copule = get_copulas(dfv, \"revkire\", variable, nb_bucket_var, centile_rfr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a753f56c-48e3-4dcd-a388-c5249615759f", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "leximpact-prepare-data-kernel", - "language": "python", - "name": "leximpact-prepare-data-kernel" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/40_Verifications.ipynb b/notebooks/code_CASD/extractions_base_des_impots/40_Verifications.ipynb deleted file mode 100644 index 6e5c592f..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/40_Verifications.ipynb +++ /dev/null @@ -1,208 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4bacd951", - "metadata": {}, - "source": [ - "# CASD : Vérification des extractions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "455a8fc3", - "metadata": {}, - "outputs": [], - "source": [ - "# | hide\n", - "from IPython.core.interactiveshell import InteractiveShell\n", - "from matplotlib.ticker import PercentFormatter\n", - "\n", - "InteractiveShell.ast_node_interactivity = \"all\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0c00e027", - "metadata": {}, - "outputs": [], - "source": [ - "IN_PATH = r\"C:\\Users\\Public\\Documents\\TRAVAIL\\csg\\data_out/\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3a42607a", - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "\n", - "# import seaborn as sns\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2c6c90b0", - "metadata": {}, - "outputs": [], - "source": [ - "# file = \"CalibPote-2019-rev_salaire.json\"\n", - "file = \"CalibPote-2019-assiette_csg_revenus_capital.json\"\n", - "# file ='CalibPote-1000-2019-revkire.json'\n", - "with open(IN_PATH + file) as f:\n", - " calib = json.load(f)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "40771600", - "metadata": {}, - "outputs": [], - "source": [ - "calib[\"buckets\"][15]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "52935304", - "metadata": {}, - "outputs": [], - "source": [ - "pd.set_option(\"display.float_format\", \"{:,}\".format)\n", - "df = pd.DataFrame(calib[\"buckets\"])\n", - "df" - ] - }, - { - "cell_type": "markdown", - "id": "7518c848", - "metadata": {}, - "source": [ - "60% des foyers n'ont pas de revenu du capital" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4ef8124b", - "metadata": {}, - "outputs": [], - "source": [ - "df.query(\"0.70 < ratio_nb_above_seuil < 0.9\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8d81e5a3", - "metadata": {}, - "outputs": [], - "source": [ - "df.iloc[99]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a7f2e110", - "metadata": {}, - "outputs": [], - "source": [ - "df[\"seuil_de_var_str\"] = df.seuil_var_supp.astype(str)\n", - "df[\"pareto\"] = (1 - df.ratio_nb_above_seuil) * 100" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "de033787", - "metadata": {}, - "outputs": [], - "source": [ - "sns.set(rc={\"figure.figsize\": (20, 8)})\n", - "ax = sns.scatterplot(data=df, x=\"seuil_de_var_str\", y=\"seuil_var_supp\")\n", - "_ = ax.set_xticklabels(labels=ax.get_xticklabels(), rotation=90)\n", - "_ = ax.set_title(\"Pareto de la variable\")\n", - "ax2 = ax.twinx()\n", - "ax3 = sns.lineplot(data=df, x=\"seuil_de_rfr_str\", y=\"pareto\")\n", - "ax3.yaxis.set_major_formatter(PercentFormatter())\n", - "# _ = ax.set_yscale(\"log\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f1fcf1be", - "metadata": {}, - "outputs": [], - "source": [ - "ax3 = sns.lineplot(data=df, x=\"seuil_var_supp\", y=\"pareto\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2488ff98", - "metadata": {}, - "outputs": [], - "source": [ - "sns.set(rc={\"figure.figsize\": (20, 8)})\n", - "ax = sns.scatterplot(data=df, x=\"seuil_var_supp\", y=\"nombre_ff_tranche\")\n", - "# _ = ax.set_yscale(\"log\")\n", - "_ = ax.set_xticklabels(labels=ax.get_xticklabels(), rotation=90)\n", - "_ = ax.set_title(\"Nombre de foyers par tranche de RFR\\nEchelle logarithmique\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3f8df2c3", - "metadata": {}, - "outputs": [], - "source": [ - "sns.set(rc={\"figure.figsize\": (20, 8)})\n", - "ax = sns.scatterplot(data=df, x=\"seuil_var_supp\", y=\"mean_tranche_var\")\n", - "_ = ax.set_xticklabels(labels=ax.get_xticklabels(), rotation=90)\n", - "_ = ax.set_title(\"Nombre de foyers par tranche de RFR\\nEchelle logarithmique\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ece9f9c2", - "metadata": {}, - "outputs": [], - "source": [ - "ax = sns.lineplot(data=df, x=\"seuil_var_supp\", y=\"sum_var_above_seuil\")\n", - "_ = ax.set_yscale(\"log\")\n", - "# _ = ax.set_xticklabels(labels=ax.get_xticklabels(), rotation=90)\n", - "_ = ax.set_title(\"Nombre de foyers par tranche de RFR\\nEchelle logarithmique\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9f98dc9b", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "python3", - "language": "python", - "name": "python3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/Colonnes_POTE_2019.xlsx b/notebooks/code_CASD/extractions_base_des_impots/Colonnes_POTE_2019.xlsx deleted file mode 100644 index d44a25648b404a56e46dcf638228cdd19c223e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140720 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�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 H0|Ns9vg1kU diff --git a/notebooks/code_CASD/extractions_base_des_impots/_test_install.ipynb b/notebooks/code_CASD/extractions_base_des_impots/_test_install.ipynb deleted file mode 100644 index fc0722e8..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/_test_install.ipynb +++ /dev/null @@ -1,497 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "possible-celebrity", - "metadata": {}, - "source": [ - "# Test l'installation du paquet" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "supreme-technical", - "metadata": {}, - "outputs": [], - "source": [ - "from pydantic.version import VERSION\n", - "\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import (\n", - " DistribDeVarVaex,\n", - " get_primary_buckets,\n", - ")\n", - "\n", - "VERSION\n", - "\n", - "import vaex\n", - "\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import (\n", - " get_copulas,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "psychological-voltage", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "50\n" - ] - } - ], - "source": [ - "variable_values = [i * 10 for i in range(50)]\n", - "dist = DistribDeVarVaex(\n", - " variable_values=variable_values,\n", - " variable=\"toto\",\n", - " nb_entity=len(variable_values),\n", - " nb_bucket_var=2,\n", - " lower_bound=50,\n", - " upper_bound=1e10,\n", - " debug=False,\n", - ")\n", - "print(dist.to_dict()[\"count\"])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "middle-damage", - "metadata": {}, - "outputs": [], - "source": [ - "test_raw = vaex.open(\"fake_pote_light.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "vital-moral", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<table>\n", - "<thead>\n", - "<tr><th># </th><th>revkire </th><th>rev_capital_partiel </th><th>rev_salaire </th><th>rente_viagere </th><th>rev_categ_foncier </th><th>retraites </th><th>chomage </th></tr>\n", - "</thead>\n", - "<tbody>\n", - "<tr><td><i style='opacity: 0.6'>0</i> </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>1</i> </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>2</i> </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>3</i> </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>4</i> </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td><td>0 </td></tr>\n", - "<tr><td>... </td><td>... </td><td>... </td><td>... </td><td>... </td><td>... </td><td>... </td><td>... </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>3,895</i></td><td>22367 </td><td>67 </td><td>3355 </td><td>67 </td><td>82 </td><td>55 </td><td>23178 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>3,896</i></td><td>475 </td><td>23 </td><td>71 </td><td>23 </td><td>2 </td><td>1 </td><td>80280 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>3,897</i></td><td>4561 </td><td>12 </td><td>684 </td><td>12 </td><td>6474 </td><td>4316 </td><td>41896 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>3,898</i></td><td>43151 </td><td>12 </td><td>6472 </td><td>12 </td><td>18 </td><td>12 </td><td>123001 </td></tr>\n", - "<tr><td><i style='opacity: 0.6'>3,899</i></td><td>2234 </td><td>1 </td><td>335 </td><td>1 </td><td>209 </td><td>139 </td><td>22409 </td></tr>\n", - "</tbody>\n", - "</table>" - ], - "text/plain": [ - "# revkire rev_capital_partiel rev_salaire rente_viagere rev_categ_foncier retraites chomage\n", - "0 0 0 0 0 0 0 0\n", - "1 0 0 0 0 0 0 0\n", - "2 0 0 0 0 0 0 0\n", - "3 0 0 0 0 0 0 0\n", - "4 0 0 0 0 0 0 0\n", - "... ... ... ... ... ... ... ...\n", - "3,895 22367 67 3355 67 82 55 23178\n", - "3,896 475 23 71 23 2 1 80280\n", - "3,897 4561 12 684 12 6474 4316 41896\n", - "3,898 43151 12 6472 12 18 12 123001\n", - "3,899 2234 1 335 1 209 139 22409" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test_raw" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "former-hawaii", - "metadata": {}, - "outputs": [], - "source": [ - "test_raw = test_raw.sort(\"revkire\", ascending=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "included-nigeria", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[0;31mSignature:\u001b[0m\n", - "\u001b[0mget_copulas\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mvaex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrameLocal\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.01\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m12\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mSource:\u001b[0m \n", - "\u001b[0;32mdef\u001b[0m \u001b[0mget_copulas\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mvaex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrameLocal\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1e-2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m12\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"\u001b[0m\n", - "\u001b[0;34m On nous donne des tranches de RFR, en nombre de personne, et en valeur de RFR\u001b[0m\n", - "\u001b[0;34m Pour chacune de ses tranches on doit extraire les valeurs de 'variable'\u001b[0m\n", - "\u001b[0;34m On ne garde que celle supérieure à 0 et on les envoie à DistribDeVarVaex\u001b[0m\n", - "\u001b[0;34m ::vdf:: Le jeux de données\u001b[0m\n", - "\u001b[0;34m ::variable:: Nom de la variable secondaire.\u001b[0m\n", - "\u001b[0;34m ::nb_bucket_var:: Nombre de tranches de variable secondaire souhaités.\u001b[0m\n", - "\u001b[0;34m ::primary_buckets:: La liste des tranches de RFR.\u001b[0m\n", - "\u001b[0;34m ::debug:: Pour activer un mode debug, qui affiche des traces.\u001b[0m\n", - "\u001b[0;34m ::minimal_bucket_size:: Nombre minimal d'individus pour respecter le secret statistique.\u001b[0m\n", - "\u001b[0;34m \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcontrole\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcopules\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mfrontieres_valeurs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"borders_values\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mborders\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"borders\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mprimary_variable\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_column_names\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_column_names\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Conversion en array\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable_array\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_arrays\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcolumn_names\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mprimary_variable\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mselection\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marray_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"python\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On vérifie que le dataset est bien trié\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprevious\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;34m//\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0midx\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0midx\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mprevious\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mDatasetNotSorted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Your dataset is not sorted on {primary_variable}!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprevious\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On parcourt les frontières de FF (= les index dans le tableau)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx_inf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebut\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On ne peut malheureusement pas filtrer par > 0 avant extraction car cela fausserait le nombre de valeur\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_all_values\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_arrays\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcolumn_names\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mvariable\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mselection\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marray_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"python\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On fait l'hypothèse que c'est bien trié par ordre croissant\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_inf\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps d'extraction par to_arrays {time()-debut}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0midx_sup\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mborders\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mstarttime\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mupper_bound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfrontieres_valeurs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# Car frontieres_valeurs contient 0\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvariable_all_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_inf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0midx_sup\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# nb_entity = vdf_tmp.shape[0]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_entity\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"-----------------Temps après slice {time()-starttime}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mnb_entity\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0midx_sup\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0midx_inf\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Quand il y a beaucoup de personne ayant le même revenu on peut avec des tranches avec lower_bound=upper_bound, mais ce n'est pas gênant\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_inf\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlower_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas {i} WARNING: Il y a peut-être un problème car le RFR du premier index (idx_inf={idx_inf}) est {primary_variable_array[idx_inf]} alors que lower_bound vaut {lower_bound}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mborders\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_sup\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas {i} WARNING: Il y a peut-être un problème car le RFR du dernier index (idx_sup={idx_sup}) est {primary_variable_array[idx_sup]} alors que upper_bound vaut {upper_bound}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Remove 0\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvariable_values\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m0.9999\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps avant sort {time()-starttime}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Tri des variables : sort() est plus rapide que sorted, mais écrase notre liste\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# variable_values = sorted(variable_values)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps après sort {time()-starttime}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas {i} : index entre idx_inf={idx_inf} et idx_sup={idx_sup} - RFR entre lower_bound={lower_bound} et upper_bound={upper_bound} - {len(variable_values)} valeurs différentes de zéro.\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"\\tmin(variable_values)={min(variable_values)} max(variable_values)={max(variable_values)}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0midx_sup\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0midx_inf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas ERROR i={i} len(variable_values)={len(variable_values)} != {idx_sup - idx_inf}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0midx_sup\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0midx_inf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mDistribDeVar_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mbdr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDistribDeVarVaex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvariable\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_entity\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnb_entity\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mlower_bound\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlower_bound\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mupper_bound\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdebug\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps de DistribDeVarVaex {time()-DistribDeVar_time}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Et on ajoute ce tableau à la liste des tableaux\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcopules\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mbdr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx_inf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0midx_sup\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps après fin de la boucle {time()-starttime} --------------\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"DEBUG EXIT !!!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdico\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"controle\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mcontrole\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"copules\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mcopules\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdico\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFile:\u001b[0m ~/leximpact/leximpact-prepare-data/leximpact_prepare_data/scenario_tools/calib_and_copules.py\n", - "\u001b[0;31mType:\u001b[0m function" - ] - } - ], - "source": [ - "get_copulas??" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ee3a8ea4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[0;31mSignature:\u001b[0m\n", - "\u001b[0mget_copulas\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mvaex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrameLocal\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.01\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m12\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mSource:\u001b[0m \n", - "\u001b[0;32mdef\u001b[0m \u001b[0mget_copulas\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mvaex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrameLocal\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1e-2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m12\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"\u001b[0m\n", - "\u001b[0;34m On nous donne des tranches de RFR, en nombre de personne, et en valeur de RFR\u001b[0m\n", - "\u001b[0;34m Pour chacune de ses tranches on doit extraire les valeurs de 'variable'\u001b[0m\n", - "\u001b[0;34m On ne garde que celle supérieure à 0 et on les envoie à DistribDeVarVaex\u001b[0m\n", - "\u001b[0;34m ::vdf:: Le jeux de données\u001b[0m\n", - "\u001b[0;34m ::variable:: Nom de la variable secondaire.\u001b[0m\n", - "\u001b[0;34m ::nb_bucket_var:: Nombre de tranches de variable secondaire souhaités.\u001b[0m\n", - "\u001b[0;34m ::primary_buckets:: La liste des tranches de RFR.\u001b[0m\n", - "\u001b[0;34m ::debug:: Pour activer un mode debug, qui affiche des traces.\u001b[0m\n", - "\u001b[0;34m ::minimal_bucket_size:: Nombre minimal d'individus pour respecter le secret statistique.\u001b[0m\n", - "\u001b[0;34m \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcontrole\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcopules\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mfrontieres_valeurs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"borders_values\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mborders\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_buckets\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"borders\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mprimary_variable\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_column_names\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_column_names\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Conversion en array\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable_array\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_arrays\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcolumn_names\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mprimary_variable\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mselection\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marray_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"python\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On vérifie que le dataset est bien trié\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprevious\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;34m//\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0midx\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0midx\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mdataset_size\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mprevious\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mDatasetNotSorted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Your dataset is not sorted on {primary_variable}!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprevious\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On parcourt les frontières de FF (= les index dans le tableau)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx_inf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebut\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On ne peut malheureusement pas filtrer par > 0 avant extraction car cela fausserait le nombre de valeur\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_all_values\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_arrays\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcolumn_names\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mvariable\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mselection\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marray_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"python\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# On fait l'hypothèse que c'est bien trié par ordre croissant\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_inf\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps d'extraction par to_arrays {time()-debut}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0midx_sup\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mborders\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mstarttime\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mupper_bound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfrontieres_valeurs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# Car frontieres_valeurs contient 0\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvariable_all_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_inf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0midx_sup\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# nb_entity = vdf_tmp.shape[0]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_entity\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"-----------------Temps après slice {time()-starttime}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mnb_entity\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0midx_sup\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0midx_inf\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Quand il y a beaucoup de personne ayant le même revenu on peut avec des tranches avec lower_bound=upper_bound, mais ce n'est pas gênant\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_inf\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlower_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas {i} WARNING: Il y a peut-être un problème car le RFR du premier index (idx_inf={idx_inf}) est {primary_variable_array[idx_inf]} alors que lower_bound vaut {lower_bound}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mborders\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mprimary_variable_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx_sup\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas {i} WARNING: Il y a peut-être un problème car le RFR du dernier index (idx_sup={idx_sup}) est {primary_variable_array[idx_sup]} alors que upper_bound vaut {upper_bound}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Remove 0\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvariable_values\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m0.9999\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps avant sort {time()-starttime}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Tri des variables : sort() est plus rapide que sorted, mais écrase notre liste\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# variable_values = sorted(variable_values)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps après sort {time()-starttime}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas {i} : index entre idx_inf={idx_inf} et idx_sup={idx_sup} - RFR entre lower_bound={lower_bound} et upper_bound={upper_bound} - {len(variable_values)} valeurs différentes de zéro.\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"\\tmin(variable_values)={min(variable_values)} max(variable_values)={max(variable_values)}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0midx_sup\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0midx_inf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34mf\"get_copulas ERROR i={i} len(variable_values)={len(variable_values)} != {idx_sup - idx_inf}\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0midx_sup\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0midx_inf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mDistribDeVar_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mbdr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDistribDeVarVaex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable_values\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvariable_values\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mvariable\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvariable\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_entity\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnb_entity\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnb_bucket_var\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mlower_bound\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlower_bound\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mupper_bound\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0madd_upper_bucket\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdebug\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mminimal_bucket_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps de DistribDeVarVaex {time()-DistribDeVar_time}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;31m# Et on ajoute ce tableau à la liste des tableaux\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcopules\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mbdr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0midx_inf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0midx_sup\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mlower_bound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mupper_bound\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Temps après fin de la boucle {time()-starttime} --------------\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdebug\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"DEBUG EXIT !!!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mdico\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"controle\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mcontrole\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"copules\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mcopules\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdico\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFile:\u001b[0m ~/leximpact/leximpact-prepare-data/leximpact_prepare_data/scenario_tools/calib_and_copules.py\n", - "\u001b[0;31mType:\u001b[0m function" - ] - } - ], - "source": [ - "??get_copulas" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abandoned-league", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "get_borders frontieres de base [390, 780, 1170, 1560, 1950, 2340, 2730, 3120, 3510]\n", - "get_borders frontieres avant [390, 780, 1170, 1560, 1950, 2340, 2730, 3120, 3510, 3861, 3900]\n", - "get_borders len(borders) avant 11\n", - "get_borders frontieres apres [390, 780, 1170, 1560, 1950, 2340, 2730, 3120, 3510, 3861, 3900]\n", - "get_borders frontieres avant fin [390, 780, 1170, 1560, 1950, 2340, 2730, 3120, 3510, 3861, 3900]\n" - ] - } - ], - "source": [ - "tranche_rfr_small_test = get_primary_buckets(test_raw, 10, debug=True)\n", - "cop = get_copulas(test_raw, 10, \"rev_salaire\", 10, tranche_rfr_small_test)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "leximpact-prepare-data-kernel", - "language": "python", - "name": "leximpact-prepare-data-kernel" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/_test_spark.ipynb b/notebooks/code_CASD/extractions_base_des_impots/_test_spark.ipynb deleted file mode 100644 index b4bdeb02..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/_test_spark.ipynb +++ /dev/null @@ -1,156 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4b1c23b1", - "metadata": {}, - "source": [ - "# CASD : Test de l'utilisation de Spark" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7e463584", - "metadata": {}, - "outputs": [], - "source": [ - "import findspark" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7c8ec284", - "metadata": {}, - "outputs": [], - "source": [ - "findspark.init()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c74420d4", - "metadata": {}, - "outputs": [], - "source": [ - "from pyspark.sql import SparkSession\n", - "\n", - "spark = SparkSession.builder.appName(\"Basics\").getOrCreate()\n", - "print(spark.version)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c187137f", - "metadata": {}, - "outputs": [], - "source": [ - "calib = r\"C:\\Users\\Public\\Documents\\TRAVAIL\\csg\\data_out\\CalibPOTE_2019.csv\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "25e34ee1", - "metadata": {}, - "outputs": [], - "source": [ - "df = spark.read.csv(parquet_path)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cb0f594b", - "metadata": {}, - "outputs": [], - "source": [ - "hdf_pote = (\n", - " r\"C:\\Users\\Public\\Documents\\TRAVAIL\\csg\\data_in\\extraction_assiettes_csg\\*.hdf\"\n", - ")\n", - "hdf_pote" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "91655d9d", - "metadata": {}, - "outputs": [], - "source": [ - "parquet_path = r\"C:\\Users\\Public\\Documents\\TRAVAIL\\csg\\data_in\\assiettes_csg.parquet\"\n", - "parquet_path" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "08ae5ffd", - "metadata": {}, - "outputs": [], - "source": [ - "# !dir {parquet_path}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "32f3e09b", - "metadata": {}, - "outputs": [], - "source": [ - "df = spark.read.parquet(parquet_path)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99b1a4ae", - "metadata": {}, - "outputs": [], - "source": [ - "df.createOrReplaceTempView(\"csg\")\n", - "df_count = spark.sql(\"SELECT count(*) FROM csg\")\n", - "df_count.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "328c545c", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "11ff65d3", - "metadata": {}, - "outputs": [], - "source": [ - "# df = spark.read.format(\"com.github.saurfang.sas.spark\").load(r\"\\\\casd.fr\\casdfs\\Projets\\LEXIMPA\\Data\\POTE_POTE_2019\\pote_diff_2019.sas7bdat\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c2a09032", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "leximpa", - "language": "python", - "name": "leximpa" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/_test_vispy.ipynb b/notebooks/code_CASD/extractions_base_des_impots/_test_vispy.ipynb deleted file mode 100644 index 90ca5328..00000000 --- a/notebooks/code_CASD/extractions_base_des_impots/_test_vispy.ipynb +++ /dev/null @@ -1,148 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "e21abfd4", - "metadata": {}, - "source": [ - "# CASD : Test de la librairie Vispy\n", - "[Vispy](https://vispy.org/) permet d'afficher des graphiques contenant des milliers de points." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f741a0b6", - "metadata": {}, - "outputs": [], - "source": [ - "import dask.dataframe as dd\n", - "import vispy.app\n", - "from vispy import plot as vp" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d1d2aee6", - "metadata": {}, - "outputs": [], - "source": [ - "vispy.app.use_app(\"ipynb_webgl\")\n", - "fig = vp.Fig(show=False)\n", - "fig1 = fig[0, 0]\n", - "fig1.plot(range(10), marker_size=0)\n", - "fig.show(run=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "22d66dc7", - "metadata": {}, - "outputs": [], - "source": [ - "input_directory = (\n", - " r\"C:\\Users\\Public\\Documents\\TRAVAIL\\csg\\data_in\\extraction_assiettes_csg\\*.hdf\"\n", - ")\n", - "rfrs = dd.read_hdf(input_directory, \"/pote2019\")\n", - "rfrs.columns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1c06484c", - "metadata": {}, - "outputs": [], - "source": [ - "# sample = rfrs\n", - "sample = rfrs[rfrs[\"revkire\"] > 500_000]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b6574e72", - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "sample = sample.set_index(\"revkire\").compute()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9b99d525", - "metadata": {}, - "outputs": [], - "source": [ - "len(sample)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "84b63a38", - "metadata": {}, - "outputs": [], - "source": [ - "# sample.index" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "08376150", - "metadata": {}, - "outputs": [], - "source": [ - "vispy.app.use_app(\"ipynb_webgl\")\n", - "from vispy import plot as vp\n", - "\n", - "fig = vp.Fig(show=False)\n", - "fig1 = fig[0, 0]\n", - "fig1.plot((range(len(sample)), sample.index), marker_size=10)\n", - "fig.show(run=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6a1b3260", - "metadata": {}, - "outputs": [], - "source": [ - "print(f\"{sample.index.max():,}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dfe2d117", - "metadata": {}, - "outputs": [], - "source": [ - "print(f\"{sample.index.min():,}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3da2e5ff", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "python3", - "language": "python", - "name": "python3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/code_CASD/extractions_base_des_impots/fake_pote_light.parquet b/notebooks/code_CASD/extractions_base_des_impots/fake_pote_light.parquet deleted file mode 100644 index db7a9ae46ea8c920110a479b75b8089a8e03e93a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58985 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 diff --git a/notebooks/code_CASD/extractions_dads_postes/20_Convert_SAS_DADS.ipynb b/notebooks/code_CASD/extractions_dads_postes/20_Convert_SAS_DADS.ipynb index bf46accb..f4ea103a 100644 --- a/notebooks/code_CASD/extractions_dads_postes/20_Convert_SAS_DADS.ipynb +++ b/notebooks/code_CASD/extractions_dads_postes/20_Convert_SAS_DADS.ipynb @@ -28,11 +28,11 @@ "# year = \"2018\"\n", "SAS_FILE = (\n", " r\"C:\\Users\\Public\\Documents\\TRAVAIL\\agregats\\sas/\"\n", - " #+ \"extrait_dads_2020.sas7bdat\"\n", + " # + \"extrait_dads_2020.sas7bdat\"\n", " + \"extrait_dads_2020_220809.sas7bdat\"\n", ")\n", "\n", - "OUT_PATH = r\"C:\\Users\\Public\\Documents\\TRAVAIL\\agregats\\data\\chunks\\\"\n", + "OUT_PATH = \"\" # r\"C:\\Users\\Public\\Documents\\TRAVAIL\\agregats\\data\\chunks\\\"\n", "OUT_PATH = OUT_PATH + \"extrait_dads_\" + year + r\"-chunk/\"\n", "taille_chunk = 2 * 2**20" ] @@ -43,12 +43,7 @@ "metadata": {}, "outputs": [], "source": [ - "import shutil\n", - "from pathlib import Path\n", - "\n", - "import pandas as pd\n", - "import vaex\n", - "from tqdm import tqdm" + "import pandas as pd" ] }, { @@ -115,31 +110,31 @@ } ], "source": [ - "%%time\n", - "# Temps sur CASD : < 20 minutes.\n", + "# %%time\n", + "# # Temps sur CASD : < 20 minutes.\n", "\n", - "# Efface le dossier de sortie\n", - "shutil.rmtree(OUT_PATH, ignore_errors=True)\n", - "Path(OUT_PATH).mkdir(parents=True, exist_ok=True)\n", + "# # Efface le dossier de sortie\n", + "# shutil.rmtree(OUT_PATH, ignore_errors=True)\n", + "# Path(OUT_PATH).mkdir(parents=True, exist_ok=True)\n", "\n", - "dfi = pd.read_sas(\n", - " SAS_FILE, chunksize=taille_chunk, encoding=\"iso8859-15\", iterator=True\n", - ")\n", + "# dfi = pd.read_sas(\n", + "# SAS_FILE, chunksize=taille_chunk, encoding=\"iso8859-15\", iterator=True\n", + "# )\n", "\n", - "dd_values = None\n", - "i = 0\n", - "print(f\"Nombre d'itérations : {61_689_822/taille_chunk:.0f}\")\n", - "for chunk in tqdm(dfi):\n", - " del dd_values\n", - " dd_values = None\n", - " chunk = clean_chunk(chunk)\n", - " dd_values = vaex.from_pandas(chunk, copy_index=False)\n", - " dd_values.export(f\"{OUT_PATH}{year}_{i}.parquet\")\n", - " #### DEBUG\n", - " i += 1\n", - " # if i>=2:\n", - " # break\n", - " #### DEBUG" + "# dd_values = None\n", + "# i = 0\n", + "# print(f\"Nombre d'itérations : {61_689_822/taille_chunk:.0f}\")\n", + "# for chunk in tqdm(dfi):\n", + "# del dd_values\n", + "# dd_values = None\n", + "# chunk = clean_chunk(chunk)\n", + "# dd_values = vaex.from_pandas(chunk, copy_index=False)\n", + "# dd_values.export(f\"{OUT_PATH}{year}_{i}.parquet\")\n", + "# #### DEBUG\n", + "# i += 1\n", + "# # if i>=2:\n", + "# # break\n", + "# #### DEBUG" ] }, { @@ -180,7 +175,7 @@ } ], "source": [ - "chunk.info()" + "# chunk.info()" ] }, { @@ -190,7 +185,7 @@ "outputs": [], "source": [ "pd.set_option(\"display.max_columns\", None)\n", - "chunk" + "# chunk" ] }, { @@ -378,7 +373,7 @@ } ], "source": [ - "chunk.describe()" + "# chunk.describe()" ] }, { @@ -387,7 +382,7 @@ "metadata": {}, "outputs": [], "source": [ - "chunk.query(\"s_brut < 0\")" + "# chunk.query(\"s_brut < 0\")" ] } ], diff --git a/notebooks/code_CASD/extractions_dads_postes/30_DADS-Quantiles.ipynb b/notebooks/code_CASD/extractions_dads_postes/30_DADS-Quantiles.ipynb index fb9cb285..20c178b5 100644 --- a/notebooks/code_CASD/extractions_dads_postes/30_DADS-Quantiles.ipynb +++ b/notebooks/code_CASD/extractions_dads_postes/30_DADS-Quantiles.ipynb @@ -84,7 +84,16 @@ "import vaex\n", "from tqdm import tqdm\n", "\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import *" + "from leximpact_prepare_data.scenario_tools.calib_and_copules import (\n", + " DistribDeVarVaex,\n", + " variable_to_split_on,\n", + " DatasetNotSorted,\n", + " get_borders,\n", + " get_copulas,\n", + " get_primary_buckets,\n", + " Quantile,\n", + " keep_upper_bound_secret,\n", + ")" ] }, { @@ -96,7 +105,7 @@ "source": [ "%%time\n", "dfv = vaex.open(ARROW_PATH + \"*\")\n", - "tc.assertEqual(len(dfv), 44_653_064)" + "tqdm.assertEqual(len(dfv), 44_653_064)" ] }, { diff --git a/notebooks/code_CASD/extractions_dads_postes/30a_Agregats_POTE-PER.ipynb b/notebooks/code_CASD/extractions_dads_postes/30a_Agregats_POTE-PER.ipynb index a19e7d7a..a0c9b644 100644 --- a/notebooks/code_CASD/extractions_dads_postes/30a_Agregats_POTE-PER.ipynb +++ b/notebooks/code_CASD/extractions_dads_postes/30a_Agregats_POTE-PER.ipynb @@ -73,7 +73,12 @@ "import vaex\n", "from tqdm import tqdm\n", "\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import *" + "from leximpact_prepare_data.scenario_tools.calib_and_copules import (\n", + " get_copulas,\n", + " anonimyze_lower_and_upper_bound,\n", + " get_primary_buckets,\n", + " Quantile,\n", + ")" ] }, { @@ -404,7 +409,6 @@ "source": [ "# Libère la mémoire\n", "del df_agg\n", - "import gc\n", "\n", "gc.collect()" ] diff --git a/notebooks/code_CASD/extractions_dads_postes/40_categorical_bi-variate.ipynb b/notebooks/code_CASD/extractions_dads_postes/40_categorical_bi-variate.ipynb index 71e39dcd..75896d73 100644 --- a/notebooks/code_CASD/extractions_dads_postes/40_categorical_bi-variate.ipynb +++ b/notebooks/code_CASD/extractions_dads_postes/40_categorical_bi-variate.ipynb @@ -72,7 +72,7 @@ "import vaex\n", "from tqdm import tqdm\n", "\n", - "from leximpact_prepare_data.scenario_tools.calib_and_copules import *" + "from leximpact_prepare_data.scenario_tools.calib_and_copules import Quantile" ] }, { @@ -93,7 +93,7 @@ "source": [ "%%time\n", "dfv = vaex.open(ARROW_PATH + \"*\")\n", - "tc.assertEqual(len(dfv), 61_689_822)" + "tqdm.assertEqual(len(dfv), 61_689_822)" ] }, { diff --git a/notebooks/memos/memo_aah.ipynb b/notebooks/memos/memo_aah.ipynb index 65699e8c..dbf41a7e 100644 --- a/notebooks/memos/memo_aah.ipynb +++ b/notebooks/memos/memo_aah.ipynb @@ -121,7 +121,6 @@ ], "source": [ "# | echo: false\n", - "from IPython.display import HTML\n", "from pandas import DataFrame\n", "\n", "import plotly.io as pio\n", @@ -155,7 +154,7 @@ " columns=colonnes,\n", ").fillna(\"-\")\n", "\n", - "display(HTML(df.to_html(escape=False)))" + "# display(HTML(df.to_html(escape=False)))" ] }, { diff --git a/notebooks/memos/memo_cotisations_sociales_dash.py b/notebooks/memos/memo_cotisations_sociales_dash.py index f490f91f..8d9e4749 100644 --- a/notebooks/memos/memo_cotisations_sociales_dash.py +++ b/notebooks/memos/memo_cotisations_sociales_dash.py @@ -7,7 +7,7 @@ http://localhost:5000/leximpact_prepare_data/memos/memo_cotisations_sociales_dash/ -Cette dataviz en Dash est incluse dans le mémo, mais elle doit être +Cette dataviz en Dash est incluse dans le mémo, mais elle doit être exécutée à part pour être partagée : les mémos sont des fichiers HTML alors que Dash doit lancer un serveur, il faut donc le déployer côté serveur en complément du HTML. diff --git a/poetry.lock b/poetry.lock index 39ffc8fc..92d950f7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -695,7 +695,7 @@ files = [ {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] -markers = {main = "implementation_name == \"pypy\" or platform_python_implementation == \"PyPy\""} +markers = {main = "platform_python_implementation == \"PyPy\" or implementation_name == \"pypy\""} [package.dependencies] pycparser = "*" @@ -4212,7 +4212,7 @@ files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] -markers = {main = "implementation_name == \"pypy\" or platform_python_implementation == \"PyPy\""} +markers = {main = "platform_python_implementation == \"PyPy\" or implementation_name == \"pypy\""} [[package]] name = "pydocstyle" -- GitLab