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\)).
See also
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]