Source code for pyam.worldbank

import pandas as pd

from pyam import IamDataFrame

[docs] def read_worldbank(model="World Bank", scenario="WDI", **kwargs) -> IamDataFrame: """Read data from the World Bank Data Catalogue and return as IamDataFrame This function is a simple wrapper for the function :func:`wbdata.get_dataframe`. Import the module to retrieve/search the list of indicators (and their id's), countries, etc. .. code-block:: python import wbdata as wb Parameters ---------- model : str, optional The `model` name to be used for the returned timeseries data. scenario : str, optional The `scenario` name to be used for the returned timeseries data. **kwargs passed to :func:`wbdata.get_dataframe` Notes ----- The function :func:`wbdata.get_dataframe` takes an `indicators` argument, which is a dictionary where the keys are desired indicators and the values are the desired column names. If the `indicators` passed to :func:`read_worldbank` is a single indicator code string, we should instead use :func:`wbdata.get_series`. The function :func:`wbdata.get_dataframe` does not return a unit, but it can be collected for some indicators using the function :func:`wbdata.get_indicators`. In the current implementation, unit is defined as `n/a` for all data; this can be enhanced later (if there is interest from users). Returns ------- :class:`IamDataFrame` """ # import packages for functions with low-frequency usage only when needed # also, there seems to be an issue with wbdata on Mac OS # see import wbdata # noqa: F401 data: pd.DataFrame = wbdata.get_dataframe(**kwargs) value = data.columns data.reset_index(inplace=True) data.rename(columns={"date": "year"}, inplace=True) df = IamDataFrame( data, model=model, scenario=scenario, value=value, unit="n/a", region="country", ) # TODO use wb.get_indicators to retrieve correct units (where available) # if `indicators` is a mapping, use it for renaming if "indicators" in kwargs and isinstance(kwargs["indicators"], dict): df.rename(variable=kwargs["indicators"], inplace=True) return df