Usage

The below refers to table format v1 and needs updating.

To use table-data-reader in a project:

import table_data_reader
For example, the following will initialise a variable c with a vector of size 2 with random values

from the distribution defined in the excel file:

np.random.seed(123)

data = ParameterLoader.from_excel('test.xlsx', size=2, sheet_index=0)
c = data['c']
>>> [ 7.08471918  5.45131111]

Other types of distributions include choice and normal. However you can specify any distribution from numpy that takes up to three parameters to init.

You can also specify a .csv file with samples and an empiricial distribution function is generated and variable values will be sampled from that.

Scenarios

It is possible to define scenarios and have paramter values for a variable change with each scenario.:

data = ParameterLoader.from_excel('test.xlsx', size=1, sheet_index=0)
res = data['a'][0]

assert res == 1.

data.select_scenario('s1')
res = data['a'][0]

assert res == 2.

use data.unselect_scenario() to return to the default value.

Pandas Dataframes

It is possible to define a time frame for distributions and have sample values change over time.:

# the time axis of our dataset
times = pd.date_range('2009-01-01', '2009-04-01', freq='MS')
# the sample axis our dataset
samples = 2

dfl = DataSeriesLoader.from_excel('test.xlsx', times, size=samples, sheet_index=0)
res = dfl['a']

assert res.loc[[datetime(2009, 1, 1)]][0] == 1
assert np.abs(res.loc[[datetime(2009, 4, 1)]][0] - pow(1.1, 3. / 12)) < 0.00001

Metadata

The contents of the rows is also contained in the metadata:

# the time axis of our dataset
times = pd.date_range('2009-01-01', '2009-04-01', freq='MS')
# the sample axis our dataset
samples = 3

dfl = DataSeriesLoader.from_excel('test.xlsx', times, size=samples, sheet_index=0)
res = dfl['a']

print(res._metadata)

CAGR — It is possible to define compound annual growth to the variables. The growth will be applied relative to the ref date.