Comparaison des résultats obtenus par OpenFisca avec les données fournies par le DGID

 Chargement des bibliothèques essentielles


In [1]:
import pandas as pd
import os
import pkg_resources

from openfisca_senegal import SenegalTaxBenefitSystem

asset_directory = os.path.join(
    pkg_resources.get_distribution('openfisca-senegal').location,
    'openfisca_senegal',
    'assets',
    )

tax_benefit_system = SenegalTaxBenefitSystem()

Réplication du scénario de la DGID

 Préparation du scénario


In [2]:
scenario = tax_benefit_system.new_scenario()
min_salaire = 600e3
max_salaire = 50e6
step = 5000
count = int((max_salaire - min_salaire) / step + 1)
year = 2015
scenario.init_single_entity(
    parent1={},
    period=year,
    axes=[
        {
            'count': count,
            'min': min_salaire,
            'max': max_salaire,
            'name': 'salaire',
        },
        {
            'count': 9,
            'min': 1,
            'max': 5,
            'name': 'nombre_de_parts',
        },
    ],
)
simulation = scenario.new_simulation()

 Calcul et sauvegarde dans une dataframe


In [3]:
salaire = simulation.calculate('salaire', period = year)
nombre_de_parts = simulation.calculate('nombre_de_parts', period = year)
impot_revenus = simulation.calculate('impot_revenus', period = year)
print salaire[:10]


[ 600000.  605000.  610000.  615000.  620000.  625000.  630000.  635000.
  640000.  645000.]

In [4]:
result = pd.DataFrame({
    'salaire': salaire,
    'nombre_de_parts': nombre_de_parts,
    'impots_revenus': impot_revenus,
    })

In [5]:
result_reshaped = result.set_index(['nombre_de_parts', 'salaire']).unstack('nombre_de_parts')
result_reshaped


Out[5]:
impots_revenus
nombre_de_parts 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
salaire
600000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
605000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
610000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
615000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
620000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
625000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
630000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
635000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
640000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
645000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
650000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
655000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
660000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
665000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
670000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
675000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
680000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
685000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
690000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
695000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
700000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
705000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
710000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
715000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
720000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
725000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
730000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
735000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
740000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
745000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
... ... ... ... ... ... ... ... ... ...
49855000.0 18541000.0 18241000.0 17891000.0 17441000.0 16891000.0 16511000.0 16051000.0 15786000.0 15361000.0
49860000.0 18543000.0 18243000.0 17893000.0 17443000.0 16893000.0 16513000.0 16053000.0 15788000.0 15363000.0
49865000.0 18545000.0 18245000.0 17895000.0 17445000.0 16895000.0 16515000.0 16055000.0 15790000.0 15365000.0
49870000.0 18547000.0 18247000.0 17897000.0 17447000.0 16897000.0 16517000.0 16057000.0 15792000.0 15367000.0
49875000.0 18549000.0 18249000.0 17899000.0 17449000.0 16899000.0 16519000.0 16059000.0 15794000.0 15369000.0
49880000.0 18551000.0 18251000.0 17901000.0 17451000.0 16901000.0 16521000.0 16061000.0 15796000.0 15371000.0
49885000.0 18553000.0 18253000.0 17903000.0 17453000.0 16903000.0 16523000.0 16063000.0 15798000.0 15373000.0
49890000.0 18555000.0 18255000.0 17905000.0 17455000.0 16905000.0 16525000.0 16065000.0 15800000.0 15375000.0
49895000.0 18557000.0 18257000.0 17907000.0 17457000.0 16907000.0 16527000.0 16067000.0 15802000.0 15377000.0
49900000.0 18559000.0 18259000.0 17909000.0 17459000.0 16909000.0 16529000.0 16069000.0 15804000.0 15379000.0
49905000.0 18561000.0 18261000.0 17911000.0 17461000.0 16911000.0 16531000.0 16071000.0 15806000.0 15381000.0
49910000.0 18563000.0 18263000.0 17913000.0 17463000.0 16913000.0 16533000.0 16073000.0 15808000.0 15383000.0
49915000.0 18565000.0 18265000.0 17915000.0 17465000.0 16915000.0 16535000.0 16075000.0 15810000.0 15385000.0
49920000.0 18567000.0 18267000.0 17917000.0 17467000.0 16917000.0 16537000.0 16077000.0 15812000.0 15387000.0
49925000.0 18569000.0 18269000.0 17919000.0 17469000.0 16919000.0 16539000.0 16079000.0 15814000.0 15389000.0
49930000.0 18571000.0 18271000.0 17921000.0 17471000.0 16921000.0 16541000.0 16081000.0 15816000.0 15391000.0
49935000.0 18573000.0 18273000.0 17923000.0 17473000.0 16923000.0 16543000.0 16083000.0 15818000.0 15393000.0
49940000.0 18575000.0 18275000.0 17925000.0 17475000.0 16925000.0 16545000.0 16085000.0 15820000.0 15395000.0
49945000.0 18577000.0 18277000.0 17927000.0 17477000.0 16927000.0 16547000.0 16087000.0 15822000.0 15397000.0
49950000.0 18579000.0 18279000.0 17929000.0 17479000.0 16929000.0 16549000.0 16089000.0 15824000.0 15399000.0
49955000.0 18581000.0 18281000.0 17931000.0 17481000.0 16931000.0 16551000.0 16091000.0 15826000.0 15401000.0
49960000.0 18583000.0 18283000.0 17933000.0 17483000.0 16933000.0 16553000.0 16093000.0 15828000.0 15403000.0
49965000.0 18585000.0 18285000.0 17935000.0 17485000.0 16935000.0 16555000.0 16095000.0 15830000.0 15405000.0
49970000.0 18587000.0 18287000.0 17937000.0 17487000.0 16937000.0 16557000.0 16097000.0 15832000.0 15407000.0
49975000.0 18589000.0 18289000.0 17939000.0 17489000.0 16939000.0 16559000.0 16099000.0 15834000.0 15409000.0
49980000.0 18591000.0 18291000.0 17941000.0 17491000.0 16941000.0 16561000.0 16101000.0 15836000.0 15411000.0
49985000.0 18593000.0 18293000.0 17943000.0 17493000.0 16943000.0 16563000.0 16103000.0 15838000.0 15413000.0
49990000.0 18595000.0 18295000.0 17945000.0 17495000.0 16945000.0 16565000.0 16105000.0 15840000.0 15415000.0
49995000.0 18597000.0 18297000.0 17947000.0 17497000.0 16947000.0 16567000.0 16107000.0 15842000.0 15417000.0
50000000.0 18599000.0 18299000.0 17949000.0 17499000.0 16949000.0 16569000.0 16109000.0 15844000.0 15419000.0

9881 rows × 9 columns

 Comparaison avec les données de référence

 Chargement et formattage des données de référence


In [7]:
data_path = os.path.join(
    asset_directory,
    'bareme_2012_valide_le_10_01_2013.xls'
    )
test = pd.read_excel(data_path, skiprows = 2, index_col = 1)
test = test.drop(['Unnamed: 0', 'TRIMF/Pers'], axis = 1)
test = test[[u'1 part', u'1,5 parts', u'2 parts', u'2,5 parts', u'3 parts', 
             u'3,5 parts', u'4 parts', u'4,5 parts', u'5 parts']]

In [8]:
result_reshaped.columns


Out[8]:
MultiIndex(levels=[[u'impots_revenus'], [1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]],
           labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8]],
           names=[None, u'nombre_de_parts'])

In [9]:
test.columns = result_reshaped.columns
test.index = result_reshaped.index

In [10]:
print test.head()
print result_reshaped.head()


                impots_revenus                                    
nombre_de_parts            1.0 1.5  2.0 2.5  3.0 3.5  4.0 4.5  5.0
salaire                                                           
600000.0                     0   0  0.0   0  0.0   0  0.0   0  0.0
605000.0                     0   0  0.0   0  0.0   0  0.0   0  0.0
610000.0                     0   0  0.0   0  0.0   0  0.0   0  0.0
615000.0                     0   0  0.0   0  0.0   0  0.0   0  0.0
620000.0                     0   0  0.0   0  0.0   0  0.0   0  0.0
                impots_revenus                                        
nombre_de_parts            1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0
salaire                                                               
600000.0                   0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
605000.0                   0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
610000.0                   0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
615000.0                   0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
620000.0                   0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0

Comparaison proprement dite

Ecart maximal par nombre de parts


In [11]:
errors = (test - result_reshaped)

In [12]:
print errors.abs().max()


                nombre_de_parts
impots_revenus  1.0                300.0
                1.5                300.0
                2.0                300.0
                2.5                300.0
                3.0                  0.0
                3.5                  0.0
                4.0                  0.0
                4.5                  0.0
                5.0                  0.0
dtype: float64

Nombres d'erreurs par nombre de parts


In [13]:
print (errors.abs() > 0).sum()


                nombre_de_parts
impots_revenus  1.0                80
                1.5                50
                2.0                37
                2.5                25
                3.0                 0
                3.5                 0
                4.0                 0
                4.5                 0
                5.0                 0
dtype: int64

In [14]:
erroneous_nombre_de_parts = 0
indices = (errors.abs() > 0).any()[(errors.abs() > 0).any()].index.tolist()

In [15]:
for index in indices:
    print errors.loc[errors[index] > 0, index]


salaire
1320000.0    200.0
1330000.0    200.0
1340000.0    200.0
1350000.0    200.0
1360000.0    200.0
1370000.0    200.0
1380000.0    200.0
1390000.0    200.0
1400000.0    200.0
1410000.0    200.0
1420000.0    200.0
1430000.0    200.0
1440000.0    200.0
1450000.0    200.0
1460000.0    200.0
1470000.0    200.0
1480000.0    200.0
1490000.0    200.0
1500000.0    200.0
1510000.0    200.0
1520000.0    200.0
1530000.0    200.0
1540000.0    200.0
1550000.0    200.0
1560000.0    200.0
1570000.0    200.0
1580000.0    200.0
1590000.0    200.0
1600000.0    200.0
1610000.0    200.0
             ...  
2700000.0    300.0
2710000.0    300.0
2720000.0    300.0
2730000.0    300.0
2740000.0    300.0
2750000.0    300.0
2760000.0    300.0
2770000.0    300.0
2780000.0    300.0
2790000.0    300.0
2800000.0    300.0
2810000.0    300.0
2820000.0    300.0
2830000.0    300.0
2840000.0    300.0
2850000.0    300.0
2860000.0    300.0
2870000.0    300.0
2880000.0    300.0
2890000.0    300.0
2900000.0    300.0
2910000.0    300.0
2920000.0    300.0
2930000.0    300.0
2940000.0    300.0
2950000.0    300.0
2960000.0    300.0
2970000.0    300.0
2980000.0    300.0
2990000.0    300.0
Name: (impots_revenus, 1.0), Length: 80, dtype: float64
salaire
1620000.0    200.0
1630000.0    200.0
1640000.0    200.0
1650000.0    200.0
1660000.0    200.0
1670000.0    200.0
1680000.0    200.0
1690000.0    200.0
1700000.0    200.0
1710000.0    200.0
1720000.0    200.0
1730000.0    200.0
1740000.0    200.0
2630000.0    300.0
2640000.0    300.0
2650000.0    300.0
2660000.0    300.0
2670000.0    300.0
2680000.0    300.0
2690000.0    300.0
2700000.0    300.0
2710000.0    300.0
2720000.0    300.0
2730000.0    300.0
2740000.0    300.0
2750000.0    300.0
2760000.0    300.0
2770000.0    300.0
2780000.0    300.0
2790000.0    300.0
2800000.0    300.0
2810000.0    300.0
2820000.0    300.0
2830000.0    300.0
2840000.0    300.0
2850000.0    300.0
2860000.0    300.0
2870000.0    300.0
2880000.0    300.0
2890000.0    300.0
2900000.0    300.0
2910000.0    300.0
2920000.0    300.0
2930000.0    300.0
2940000.0    300.0
2950000.0    300.0
2960000.0    300.0
2970000.0    300.0
2980000.0    300.0
2990000.0    300.0
Name: (impots_revenus, 1.5), dtype: float64
salaire
2630000.0    300.0
2640000.0    300.0
2650000.0    300.0
2660000.0    300.0
2670000.0    300.0
2680000.0    300.0
2690000.0    300.0
2700000.0    300.0
2710000.0    300.0
2720000.0    300.0
2730000.0    300.0
2740000.0    300.0
2750000.0    300.0
2760000.0    300.0
2770000.0    300.0
2780000.0    300.0
2790000.0    300.0
2800000.0    300.0
2810000.0    300.0
2820000.0    300.0
2830000.0    300.0
2840000.0    300.0
2850000.0    300.0
2860000.0    300.0
2870000.0    300.0
2880000.0    300.0
2890000.0    300.0
2900000.0    300.0
2910000.0    300.0
2920000.0    300.0
2930000.0    300.0
2940000.0    300.0
2950000.0    300.0
2960000.0    300.0
2970000.0    300.0
2980000.0    300.0
2990000.0    300.0
Name: (impots_revenus, 2.0), dtype: float64
salaire
2750000.0    300.0
2760000.0    300.0
2770000.0    300.0
2780000.0    300.0
2790000.0    300.0
2800000.0    300.0
2810000.0    300.0
2820000.0    300.0
2830000.0    300.0
2840000.0    300.0
2850000.0    300.0
2860000.0    300.0
2870000.0    300.0
2880000.0    300.0
2890000.0    300.0
2900000.0    300.0
2910000.0    300.0
2920000.0    300.0
2930000.0    300.0
2940000.0    300.0
2950000.0    300.0
2960000.0    300.0
2970000.0    300.0
2980000.0    300.0
2990000.0    300.0
Name: (impots_revenus, 2.5), dtype: float64

In [16]:
result_reshaped.to_excel(os.path.join(asset_directory, 'result.xls'))

In [17]:
errors.to_excel(os.path.join(asset_directory, 'errors.xls'))

 Génération d'une table de calcul avec un pas de 1000 CFA de salaire imposable


In [19]:
scenario = tax_benefit_system.new_scenario()
min_salaire = 600e3
max_salaire = 100e6
step = 1000
count = int((max_salaire - min_salaire) / step + 1)
scenario.init_single_entity(
    parent1={},
    period='2015',
    axes=[
        {
            'count': count,
            'min': min_salaire,
            'max': max_salaire,
            'name': 'salaire',
        },
        {
            'count': 9,
            'min': 1,
            'max': 5,
            'name': 'nombre_de_parts',
        },
    ],
)
simulation = scenario.new_simulation()
salaire = simulation.calculate('salaire', period = year)
nombre_de_parts = simulation.calculate('nombre_de_parts', period = year)
impot_revenus = simulation.calculate('impot_revenus', period = year)
result = pd.DataFrame({
    'salaire': salaire,
    'nombre_de_parts': nombre_de_parts,
    'impots_revenus': impot_revenus,
    })
result.salaire =  result.salaire.astype(int)
result_reshaped_step_1000 = result.set_index(['nombre_de_parts', 'salaire']).unstack('nombre_de_parts')
result_reshaped_step_1000


Out[19]:
impots_revenus
nombre_de_parts 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
salaire
600000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
601000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
602000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
603000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
604000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
605000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
606000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
607000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
608000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
609000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
610000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
611000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
612000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
613000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
614000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
615000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
616000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
617000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
618000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
619000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
620000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
621000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
622000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
623000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
624000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
625000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
626000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
627000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
628000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
629000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
... ... ... ... ... ... ... ... ... ...
99971000 38587400.0 38287400.0 37937400.0 37487400.0 36937400.0 36557400.0 36097400.0 35832400.0 35407400.0
99972000 38587800.0 38287800.0 37937800.0 37487800.0 36937800.0 36557800.0 36097800.0 35832800.0 35407800.0
99973000 38588200.0 38288200.0 37938200.0 37488200.0 36938200.0 36558200.0 36098200.0 35833200.0 35408200.0
99974000 38588600.0 38288600.0 37938600.0 37488600.0 36938600.0 36558600.0 36098600.0 35833600.0 35408600.0
99975000 38589000.0 38289000.0 37939000.0 37489000.0 36939000.0 36559000.0 36099000.0 35834000.0 35409000.0
99976000 38589400.0 38289400.0 37939400.0 37489400.0 36939400.0 36559400.0 36099400.0 35834400.0 35409400.0
99977000 38589800.0 38289800.0 37939800.0 37489800.0 36939800.0 36559800.0 36099800.0 35834800.0 35409800.0
99978000 38590200.0 38290200.0 37940200.0 37490200.0 36940200.0 36560200.0 36100200.0 35835200.0 35410200.0
99979000 38590600.0 38290600.0 37940600.0 37490600.0 36940600.0 36560600.0 36100600.0 35835600.0 35410600.0
99980000 38591000.0 38291000.0 37941000.0 37491000.0 36941000.0 36561000.0 36101000.0 35836000.0 35411000.0
99981000 38591400.0 38291400.0 37941400.0 37491400.0 36941400.0 36561400.0 36101400.0 35836400.0 35411400.0
99982000 38591800.0 38291800.0 37941800.0 37491800.0 36941800.0 36561800.0 36101800.0 35836800.0 35411800.0
99983000 38592200.0 38292200.0 37942200.0 37492200.0 36942200.0 36562200.0 36102200.0 35837200.0 35412200.0
99984000 38592600.0 38292600.0 37942600.0 37492600.0 36942600.0 36562600.0 36102600.0 35837600.0 35412600.0
99985000 38593000.0 38293000.0 37943000.0 37493000.0 36943000.0 36563000.0 36103000.0 35838000.0 35413000.0
99986000 38593400.0 38293400.0 37943400.0 37493400.0 36943400.0 36563400.0 36103400.0 35838400.0 35413400.0
99987000 38593800.0 38293800.0 37943800.0 37493800.0 36943800.0 36563800.0 36103800.0 35838800.0 35413800.0
99988000 38594200.0 38294200.0 37944200.0 37494200.0 36944200.0 36564200.0 36104200.0 35839200.0 35414200.0
99989000 38594600.0 38294600.0 37944600.0 37494600.0 36944600.0 36564600.0 36104600.0 35839600.0 35414600.0
99990000 38595000.0 38295000.0 37945000.0 37495000.0 36945000.0 36565000.0 36105000.0 35840000.0 35415000.0
99991000 38595400.0 38295400.0 37945400.0 37495400.0 36945400.0 36565400.0 36105400.0 35840400.0 35415400.0
99992000 38595800.0 38295800.0 37945800.0 37495800.0 36945800.0 36565800.0 36105800.0 35840800.0 35415800.0
99993000 38596200.0 38296200.0 37946200.0 37496200.0 36946200.0 36566200.0 36106200.0 35841200.0 35416200.0
99994000 38596600.0 38296600.0 37946600.0 37496600.0 36946600.0 36566600.0 36106600.0 35841600.0 35416600.0
99995000 38597000.0 38297000.0 37947000.0 37497000.0 36947000.0 36567000.0 36107000.0 35842000.0 35417000.0
99996000 38597400.0 38297400.0 37947400.0 37497400.0 36947400.0 36567400.0 36107400.0 35842400.0 35417400.0
99997000 38597800.0 38297800.0 37947800.0 37497800.0 36947800.0 36567800.0 36107800.0 35842800.0 35417800.0
99998000 38598200.0 38298200.0 37948200.0 37498200.0 36948200.0 36568200.0 36108200.0 35843200.0 35418200.0
99999000 38598600.0 38298600.0 37948600.0 37498600.0 36948600.0 36568600.0 36108600.0 35843600.0 35418600.0
100000000 38599000.0 38299000.0 37949000.0 37499000.0 36949000.0 36569000.0 36109000.0 35844000.0 35419000.0

99401 rows × 9 columns


In [20]:
result_reshaped_step_1000.to_excel(os.path.join(asset_directory, 'result_step_1000CFA.xlsx'))

In [ ]: