Retrieval

Functions to retrieve data from the ISTAT api

source

make_url_key

 make_url_key (filters:dict)

source

get_data

 get_data (dataset:istatapi.discovery.DataSet, **kwargs)

returns a dataframe of the filtered ‘dataset’

#initiate the dataset
dataset = DataSet(dataflow_identifier="139_176")

#define some filters
freq = "M"
tipo_dato=["ISAV", "ESAV"]
paese_partner="WORLD"

#set filters
dataset.set_filters(freq=freq, tipo_dato=tipo_dato, paese_partner=paese_partner)
#return dataset
trade_df = get_data(dataset)
trade_df.head()
test_eq(trade_df['FREQ'].unique(), ['M'])
test_eq(trade_df['TIPO_DATO'].unique().sort(), ["ISAV", "ESAV"].sort())
test_eq(trade_df['PAESE_PARTNER'].unique().sort(), ["WORLD"].sort())
test_eq(type(trade_df['TIME_PERIOD'].iloc[0]), pd._libs.tslibs.timestamps.Timestamp)
# test annual dataset
dataset = DataSet(dataflow_identifier="144_125")

#define some filters
freq = "A"

#set filters
dataset.set_filters(freq=freq)
#return dataset
annual_df = get_data(dataset)

test_eq(annual_df['FREQ'].unique(), ['A'])
test_eq(type(annual_df['TIME_PERIOD'].iloc[0]), pd._libs.tslibs.timestamps.Timestamp)
# test another dataset
ds = DataSet(dataflow_identifier="22_315")
freq = 'A'
sesso = '9'
itter107 = ['IT', 'ITG', 'ITF']

ds.set_filters(freq = freq, itter107 = itter107, sesso = sesso)
df = get_data(ds)

test_eq(df['FREQ'].unique(), ['A'])
test_eq(df['ITTER107'].unique().sort(), ['IT', 'ITF', 'ITG'].sort())
test_eq(df['SESSO'].unique(), [9])
test_eq(type(df['TIME_PERIOD'].iloc[0]), pd._libs.tslibs.timestamps.Timestamp)
# test dataset from https://github.com/Attol8/istatapi/issues/24

ds = DataSet(dataflow_identifier="151_914")
df = get_data(ds)

# test that df is not empty
test_eq(df.empty, False)