Data Model¶
IAMC-style Data¶
An illustrative example of IAMC-style data is shown below; see https://data.ene.iiasa.ac.at/database for more information.
Model | Scenario | Region | Variable | Unit | 2005 | 2010 | 2015 |
---|---|---|---|---|---|---|---|
MESSAGE V.4 | AMPERE3-Base | World | Primary Energy | EJ/y | 454.5 | 479.6 | … |
… | … | … | … | … | … | … | … |
pyam.IamDataFrame
¶
A pyam.IamDataFrame
is a wrapper for two pandas.DataFrame
instances:
- data: The data table is a dataframe containing the timeseries data in “long format”. It has the columns
pyam.LONG_IDX = ['model', 'scenario', 'region', 'unit', 'year', 'value']
.- meta: The meta table is a dataframe containing categorisation and descriptive indicators. It has the index
pyam.META_IDX = ['model', 'scenario']
.
The standard output format is the IAMC-style “wide format”, see the example
above. This format can be accessed using pyam.IamDataFrame.timeseries()
,
which returns a pandas.DataFrame
with the index pyam.IAMC_IDX = ['model',
'scenario', 'region', 'variable', 'unit']
and the years as columns.
Filtering¶
The pyam package provides two methods for filtering timeseries data:
An existing IamDataFrame can be filtered using
pyam.IamDataFrame.filter(col=...)
, where col can be any column of the
data table (i.e., ['model', 'scenario', 'region', 'unit', 'year']
) or any
column of the meta table. The returned object is a new pyam.IamDataFrame
instance.
A pandas.DataFrame
with columns or index ['model', 'scenario']
can be
filtered by any meta columns from a pyam.IamDataFrame
using
pyam.filter_by_meta(data, df, col=..., join_meta=False)
. The returned
object is a pandas.DataFrame
downselected to those models-and-scenarios where
the meta column satisfies the criteria given by col=… .
Optionally, the meta columns are joined to the returned dataframe.