iode.Variables.to_frame

Variables.to_frame(vars_axis_name: str = 'names', time_axis_name: str = 'time', periods_as_type: str | type = <class 'str'>) DataFrame[source]

Create a pandas DataFrame from the current Variables database. The index of the returned DataFrame is build from the Variables names and the columns from the periods.

Parameters:
vars_axis_name: str, optional

Name of the axis representing the Variables names. Defaults to ‘names’.

time_axis_name: str, optional

Name of the axis representing the periods. Defaults to ‘time’.

periods_as_type: str or type, optional

Type in which periods are converted. Possible values are: str, int or float. Defaults to str.

Warning

IODE and pandas don’t use the same constant to represent NaN values. When exporting IODE variables as a pandas DataFrame, the IODE NaN values (\(NA\)) are converted to pandas NaN values (\(nan\)).

Examples

>>> from iode import SAMPLE_DATA_DIR
>>> from iode import variables
>>> import pandas as pd
>>> variables.load(f"{SAMPLE_DATA_DIR}/fun.var")
Loading .../fun.var
394 objects loaded
>>> # Export the IODE Variables database as a pandas DataFrame
>>> variables
Workspace: Variables
nb variables: 394
filename: ...fun.var
description: Modèle fun - Simulation 1
sample: 1960Y1:2015Y1
mode: LEVEL

 name       1960Y1  1961Y1  1962Y1  1963Y1  ...  2013Y1  2014Y1  2015Y1
ACAF            na      na      na      na  ...  -68.89  -83.34  -96.41
ACAG            na      na      na      na  ...   31.37   32.42   33.47
AOUC            na    0.25    0.25    0.26  ...    1.39    1.42    1.46
AOUC_           na      na      na      na  ...    1.34    1.37    1.41
AQC           0.22    0.22    0.22    0.23  ...    1.56    1.61    1.67
...            ...     ...     ...     ...  ...     ...     ...     ...
ZJ              na      na      na      na  ...    1.59    1.63    1.67
ZKF           0.80    0.81    0.82    0.81  ...    0.87    0.87    0.87
ZKFO          1.00    1.00    1.00    1.00  ...    1.02    1.02    1.02
ZX            0.00    0.00    0.00    0.00  ...    0.00    0.00    0.00
ZZF_          0.69    0.69    0.69    0.69  ...    0.69    0.69    0.69

>>> df = variables.to_frame()
>>> df.shape
(394, 56)
>>> df.index.to_list()
['ACAF', 'ACAG', 'AOUC', ..., 'ZKFO', 'ZX', 'ZZF_']
>>> df.columns.to_list()
['1960Y1', '1961Y1', ..., '2014Y1', '2015Y1']
>>> df
time     1960Y1    1961Y1    1962Y1  ...     2013Y1     2014Y1     2015Y1
names                                ...
ACAF        NaN       NaN       NaN  ... -68.894654 -83.340625 -96.410420
ACAG        NaN       NaN       NaN  ...  31.370139  32.420299  33.469601
AOUC        NaN  0.247832  0.254568  ...   1.387777   1.423714   1.460863
AOUC_       NaN       NaN       NaN  ...   1.338086   1.373010   1.407557
AQC    0.217530  0.215449  0.222281  ...   1.558039   1.613181   1.674291
...         ...       ...       ...  ...        ...        ...        ...
ZJ          NaN       NaN       NaN  ...   1.591981   1.630309   1.667971
ZKF    0.802574  0.812873  0.819252  ...   0.874883   0.874351   0.873593
ZKFO   1.000000  1.000000  1.000000  ...   1.015990   1.015990   1.015990
ZX     0.000000  0.000000  0.000000  ...   0.000000   0.000000   0.000000
ZZF_   0.688400  0.688400  0.688400  ...   0.688400   0.688400   0.688400

[394 rows x 56 columns]
>>> # Export a subset of the IODE Variables database as a pandas DataFrame
>>> vars_subset = variables["A*;*_", "2000Y1:2010Y1"]
>>> vars_subset
Workspace: Variables
nb variables: 33
filename: ...fun.var
description: Modèle fun - Simulation 1
sample: 2000Y1:2010Y1
mode: LEVEL

 name        2000Y1  2001Y1  2002Y1  2003Y1 ...  2007Y1   2008Y1   2009Y1   2010Y1
ACAF          10.05    2.87   -0.93   -6.09 ...  -33.38   -38.41   -37.46   -37.83
ACAG         -41.53   18.94   19.98   21.02 ...   25.16    26.19    27.23    28.25
AOUC           1.12    1.14    1.16    1.17 ...    1.22     1.26     1.29     1.31
AOUC_          1.10    1.14    1.15    1.16 ...    1.20     1.21     1.23     1.25
AQC            1.34    1.38    1.41    1.42 ...    1.41     1.43     1.45     1.46
...             ...     ...     ...     ... ...     ...      ...      ...      ...
WCF_        3716.45 3863.90 3999.57 4147.95 ... 4665.91  4916.65  5042.74  5170.60
WIND_       1000.14 1035.22 1070.93 1102.91 ... 1178.12  1231.49  1268.86  1301.03
WNF_        2334.76 2427.49 2512.87 2606.28 ... 2932.23  3089.99  3169.32  3249.75
YDH_        7276.61 7635.91 7958.39 8331.07 ... 9685.61 10228.84 10630.74 10995.83
ZZF_           0.69    0.69    0.69    0.69 ...    0.69     0.69     0.69     0.69

>>> df = vars_subset.to_frame()
>>> df.shape
(33, 11)
>>> df.index.to_list()
['ACAF', 'ACAG', 'AOUC', ..., 'WNF_', 'YDH_', 'ZZF_']
>>> df.columns.to_list()
['2000Y1', '2001Y1', '2002Y1', ..., '2008Y1', '2009Y1', '2010Y1']
>>> df
time           2000Y1       2001Y1  ...        2009Y1        2010Y1
names                               ...
ACAF        10.046611     2.867923  ...    -37.463510    -37.827429
ACAG       -41.534787    18.939801  ...     27.229955     28.253929
AOUC         1.116238     1.140476  ...      1.287132      1.307110
AOUC_        1.101957     1.136244  ...      1.231854      1.250164
AQC          1.338603     1.379188  ...      1.446332      1.462868
...               ...          ...  ...           ...           ...
WCF_      3716.447509  3863.897550  ...   5042.743118   5170.600010
WIND_     1000.144577  1035.218800  ...   1268.861647   1301.025126
WNF_      2334.763628  2427.492334  ...   3169.316544   3249.751702
YDH_      7276.607740  7635.905667  ...  10630.736896  10995.831393
ZZF_         0.688400     0.688400  ...      0.688400      0.688400

[33 rows x 11 columns]
>>> # Export a subset of the IODE Variables database with periods as int
>>> df = variables["A*;*_", "2000Y1:2010Y1"].to_frame(periods_as_type=int) 
>>> df.columns.to_list()
[2000, 2001, 2002, 2003, ..., 2007, 2008, 2009, 2010]
>>> df
time             2000         2001  ...          2009          2010
names                               ...
ACAF        10.046611     2.867923  ...    -37.463510    -37.827429
ACAG       -41.534787    18.939801  ...     27.229955     28.253929
AOUC         1.116238     1.140476  ...      1.287132      1.307110
AOUC_        1.101957     1.136244  ...      1.231854      1.250164
AQC          1.338603     1.379188  ...      1.446332      1.462868
...               ...          ...  ...           ...           ...
WCF_      3716.447509  3863.897550  ...   5042.743118   5170.600010
WIND_     1000.144577  1035.218800  ...   1268.861647   1301.025126
WNF_      2334.763628  2427.492334  ...   3169.316544   3249.751702
YDH_      7276.607740  7635.905667  ...  10630.736896  10995.831393
ZZF_         0.688400     0.688400  ...      0.688400      0.688400

[33 rows x 11 columns]