def test_survey_simulation(): year = 2011 input_data_frame = get_input_data_frame(year) tax_benefit_system_class = openfisca_france.FranceTaxBenefitSystem() survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame=input_data_frame, tax_benefit_system_class=tax_benefit_system_class, year=year, ) simulation = survey_scenario.new_simulation() try: from pandas import DataFrame revenu_disponible = DataFrame( {"revenu_disponible": simulation.calculate('revenu_disponible')}) except NaNCreationError as error: index = error.index entity = error.entity column_name = error.column_name input_data_frame_debug = filter_input_data_frame( simulation.input_data_frame, entity, index[:10], ) survey_scenario_debug = SurveyScenario() simulation_debug = survey_scenario_debug.new_simulation( debug=True, input_data_frame=input_data_frame_debug, tax_benefit_system_class=tax_benefit_system_class, year=year, ) simulation_debug.calculate(column_name) print(revenu_disponible.info())
def set_variables_default_value(dataframe, year): import openfisca_france tax_benefit_system = openfisca_france.FranceTaxBenefitSystem() for column_name, column in tax_benefit_system.variables.iteritems(): if column_name in dataframe.columns: dataframe[column_name].fillna(column.default_value, inplace=True) dataframe[column_name] = dataframe[column_name].astype( column.dtype)
def test_weights_building(): year = 2011 input_data_frame = get_input_data_frame(year) tax_benefit_system_class = openfisca_france.FranceTaxBenefitSystem() survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame = input_data_frame, tax_benefit_system_class = tax_benefit_system_class, year = year, ) simulation = survey_scenario.new_simulation()
def adaptation_eipp_to_OF(years = None, filename = "test", check = False): """ Adapation des bases ERFS FPR de l'IPP pour OF """ if years is None: log.error("A list of years to process is needed") for year in years: # load data eipp_survey_collection = SurveyCollection.load(collection = 'eipp') survey = eipp_survey_collection.surveys['eipp_{}'.format(year)] base = survey.get_values(table = "base") ipp2of_input_variables, ipp2of_output_variables = build_ipp2of_variables() # print 'avant',list(base.columns.values) # base.rename(columns = ipp2of_input_variables, inplace = True) # print 'après',list(base.columns.values) tax_benefit_system = openfisca_france.FranceTaxBenefitSystem() data_frame = build_input_OF(base, ipp2of_input_variables, tax_benefit_system) return data_frame
def build_cerfa_fields_by_column_name(year, sections_cerfa): tax_benefit_system = openfisca_france.FranceTaxBenefitSystem() cerfa_fields_by_column_name = dict() for name, column in tax_benefit_system.variables.iteritems(): for section_cerfa in sections_cerfa: if name.startswith('f{}'.format(section_cerfa)): end = column.end or None if end is None or end.year >= year: if column.entity.key == 'individu': cerfa_field = [ 'f' + x.lower().encode('ascii', 'ignore') for x in column.cerfa_field.values() ] elif column.entity.key == 'foyer_fiscal': cerfa_field = [ 'f' + column.cerfa_field.lower().encode( 'ascii', 'ignore') ] cerfa_fields_by_column_name[name.encode( 'ascii', 'ignore')] = cerfa_field return cerfa_fields_by_column_name
import openfisca_france import datetime tbs = openfisca_france.FranceTaxBenefitSystem() scenario = tbs.new_scenario().init_from_attributes( period="2016-01", input_variables={ 'date_naissance': datetime.date(1980, 1, 1), 'loyer': 500, 'statut_occupation_logement': 3, }, ) def test_variable_in_blacklist(): simulation = scenario.new_simulation(opt_out_cache=True) simulation.calculate('aide_logement_montant_brut') assert (simulation.get_or_new_holder('aide_logement_R0')._array_by_period is None) def test_variable_not_in_blacklist(): simulation = scenario.new_simulation(opt_out_cache=True) simulation.calculate('aide_logement_montant_brut') assert (simulation.get_or_new_holder( 'aide_logement_montant_brut')._array_by_period is not None)
def __init__(self, verbose=True): self._tax_benefit_system = openfisca_france.FranceTaxBenefitSystem() self._verbose = verbose
import cpam_utils import csv import openfisca_france from datetime import datetime from openfisca_core.simulations import Simulation import sys from pprint import pprint filename = '../doc/CMUCACS.csv' if len(sys.argv) > 1: filename = sys.argv[len(sys.argv) - 1] legislation_francaise = openfisca_france.FranceTaxBenefitSystem() with open(filename, 'r') as file: rows = csv.DictReader(file) for data in rows: period = datetime.strptime('2018-08-01', '%Y-%m-%d') situation = cpam_utils.createSituation(data, period) pprint(situation) simulation_actuelle = Simulation( tax_benefit_system=legislation_francaise, simulation_json=situation) variable = 'cmu_c' periodText = period.strftime('%Y-%m') resultat = simulation_actuelle.calculate(variable, periodText)
## ATTENTION : ce script interroge le simulateur en ligne de la DGFiP, qui n'est pas complet : certaines cases de la déclaration pro (2042 c) n'y sont pas, ainsi certaines variables peuvent exister même si le .json dit le contraire. Le fichier 2_init_foyer_3_encapsulation3.sas peut aider pour ces cas-là (il vient d'INES, voir avec Mahdi) import codecs import collections import cStringIO import json import os import sys import urllib import urllib2 from lxml import etree import openfisca_france tax_benefit_system = openfisca_france.FranceTaxBenefitSystem() def main(): global dates dates = {} def test(var): global dates, t t = 0 p = 0 j = 3 year = 2005 dates[var] = [] def requete(p, i, year, var):
def __init__(self, testcases): self._tax_benefit_system = openfisca_france.FranceTaxBenefitSystem() self._testcases = testcases self._converter = CerfaOpenFiscaConverter()