Skip to main content

Faostat Python Package

Project description

faostat Python Package

Tools to read data from Faostat API.

Features

  • Read Faostat data and metadata as list of tuples or as pandas dataframe.
  • MIT license.

Documentation

Getting started:

Requires Python 3.6+

pip install faostat

Read the list of available datasets:

As a list of tuples:

faostat.list_datasets(https_proxy=None)

Read the available datsets and return a list of tuples. The first element of the list contains the header line. https_proxy is supposed to be used only if you need to use a proxy for https and should be a list like: [username, password, url:port]. More information on the available datasets can be found in the official Faostat website.

Example:

>>> ld = faostat.list_datasets()
>>> ld[0]
('code', 'label', 'date_update', 'note_update', 'release_current', 'state_current', 'year_current', 'release_next', 'state_next', 'year_next')
>>> ld[1:4]
[('QCL', 'Crops and livestock products', '2022-02-17', 'minor revision', '2021-12-21 / 2022-02-17', 'final', '2020', '2022-12', 'final', '2020'),
 ('QI', 'Production Indices', '2021-03-18', '', '2021-03-18', 'final', '2019', '2022-04', 'final', '2020'),
 ('QV', 'Value of Agricultural Production', '2021-03-18', 'minor revision', '2021-03-18', 'final', '2020', '2022-04', 'final', '2019')]

As a pandas dataframe:

faostat.list_datasets_df(https_proxy=None)

Read the available datasets and return a pandas dataframe. The first element of the list contains the header line.

https_proxy is supposed to be used only if you need to use a proxy for https and should be a list like: [username, password, url:port].

More information on the available datasets can be found in the official Faostat website.

Example:

>>> df = faostat.list_datasets_df()
>>> df
   code                              label  ... state_next year_next
0   QCL       Crops and livestock products  ...      final      2020
1    QI                 Production Indices  ...      final      2020
2    QV   Value of Agricultural Production  ...      final      2019
3    FS  Suite of Food Security Indicators  ...      final      2021
4   SCL        Supply Utilization Accounts  ...      final      2020
..  ...                                ...  ...        ...       ...
70   FA           Food Aid Shipments (WFP)  ...                     
71   RM                          Machinery  ...                     
72   RY                  Machinery Archive  ...                     
73   RA                Fertilizers archive  ...                     
74   PA       Producer Prices (old series)  ...                     

Check areas/countries, years, items and elements for a given dataset:

Frequently you will need just a subset of a dataset, for instance only one year or country. You will therefore use the following functions.

https_proxy is supposed to be used only if you need to use a proxy for https and should be a list like: [username, password, url:port].

To retrieve the available areas/countries for a given dataset:

faostat.get_areas(code, https_proxy=None)

Given the code of a dataset, read the areas and their FAO code and returns a dictionary {label: code}.

Example:

>>> a = faostat.get_areas('QCL')
>>> a
{'Afghanistan': '2',
 'Albania': '3',
 'Algeria': '4',
 'Angola': '7', 
 etc.}

To retrieve the available years for a given dataset:

faostat.get_years(code, https_proxy=None)

Given the code of a dataset, read the years and returns a dictionary {label: code}.

Example:

>> import faostat
>>> y = faostat.get_years('QCL')
>>> y
{'2020': '2020',
 '2019': '2019',
 '2018': '2018',
 '2017': '2017',
 '2016': '2016', 
 etc.}

To retrieve the available items for a given dataset:

faostat.get_items(code, https_proxy=None)

Given the code of a dataset, read the items and returns a dictionary {label: code}.

Example:

>>> i = faostat.get_items('QCL')
>>> i
{'Agave fibres nes': '800',
 'Almonds, with shell': '221',
 'Anise, badian, fennel, coriander': '711',
 'Apples': '515', 
 etc.}

To retrieve the available elements for a given dataset:

faostat.get_elements(code, https_proxy=None)

Given the code of a dataset, read the elements and returns a dictionary {label: code}.

Example:

>>> e = faostat.get_elements('QCL')
>>> e
{'Area harvested': '2312',
 'Yield': '2413',
 'Production Quantity': '2510',
 'Stocks': '2111',
 etc.}

Read data from a dataset:

As a list of tuples:

faostat.get_data(code, pars={}, show_flags=False, null_values=False, https_proxy=None)

Given the code of a Faostat dataset, returns the data as a list of tuples. pars is optional, but recommended to avoid Timeout Error due to too large query.

To download only a subset of the dataset, you need to pass pars={key: value, ...}:

  • key can be one or more of the following string: 'areas', 'years', 'elements', 'items';
  • value can be a number, a string or a list, from the codes obtained with get_areas, get_years, get_elements, get_items.

Set show_flags=True if you want to download also the data flags.

https_proxy is supposed to be used only if you need to use a proxy for https and should be a list like: [username, password, url:port].

Example:

>>> data = faostat.get_data('QCL',pars={'elements':[2312, 2313],'items':'221'})
>>> data[40:44]
[('QCL', 'Crops and livestock products', '2', 'Afghanistan', '5312', 'Area harvested', '221', 'Almonds, with shell', '2014', '2014', 'ha', 13703.0),
 ('QCL', 'Crops and livestock products', '2', 'Afghanistan', '5312', 'Area harvested', '221', 'Almonds, with shell', '2015', '2015', 'ha', 14676.0),
 ('QCL', 'Crops and livestock products', '2', 'Afghanistan', '5312', 'Area harvested', '221', 'Almonds, with shell', '2016', '2016', 'ha', 19481.0),
 ('QCL', 'Crops and livestock products', '2', 'Afghanistan', '5312', 'Area harvested', '221', 'Almonds, with shell', '2017', '2017', 'ha', 19793.0)]

As a pandas dataframe:

faostat.get_data_df(code, pars={}, show_flags=False, null_values=False, https_proxy=None)

Given the code of a Faostat dataset, returns the data as a pandas dataframe.

pars is optional, but recommended to avoid Timeout Error due to too large query.

To download only a subset of the dataset, you need to pass pars={key: value, ...}:

  • key can be one or more of the following string: 'areas', 'years', 'elements', 'items';
  • value can be a number, a string or a list, from the codes obtained with get_areas, get_years, get_elements, get_items.

Set show_flags=True if you want to download also the data flags.

https_proxy is supposed to be used only if you need to use a proxy for https and should be a list like: [username, password, url:port].

Example:

>>> data_df = faostat.get_data_df('QCL',pars={'elements':[2312, 2313],'items':'221'})
>>> data_df
     Domain Code                        Domain  ... Unit     Value
0            QCL  Crops and livestock products  ...   ha       0.0
1            QCL  Crops and livestock products  ...   ha    5900.0
2            QCL  Crops and livestock products  ...   ha    6000.0
3            QCL  Crops and livestock products  ...   ha    6000.0
4            QCL  Crops and livestock products  ...   ha    6000.0
         ...                           ...  ...  ...       ...
4038         QCL  Crops and livestock products  ...   ha  392722.0
4039         QCL  Crops and livestock products  ...   ha  418436.0
4040         QCL  Crops and livestock products  ...   ha  423949.0
4041         QCL  Crops and livestock products  ...   ha  453034.0
4042         QCL  Crops and livestock products  ...   ha  425302.0

Bug reports and feature requests:

Please open an issue or send a message to noemi.cazzaniga [at] polimi.it.

Disclaimer:

Download and usage of Faostat data is subject to FAO's general terms and conditions.

Data sources:

References:

  • Python package pandas: Python Data Analysis Library.
  • Python package eurostat: Tools to read data from Eurostat.

History:

version 0.1.1 (2022):

  • First official release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

faostat-0.1.1.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

faostat-0.1.1-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file faostat-0.1.1.tar.gz.

File metadata

  • Download URL: faostat-0.1.1.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for faostat-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6558e5ed11aa4905409f264986f6e5620465d0653e92bd961740f407a63c213a
MD5 febcb88c9cf33d0aa4bf08abae1c93f2
BLAKE2b-256 6d1f0699e6921bc9abeb2b2134c5c04b229703ee650322c6dc5c11b98d278c8c

See more details on using hashes here.

File details

Details for the file faostat-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: faostat-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for faostat-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f853fbe7365ee2eaed13e96cf5a154335fe2c3deb102f81bba9cf17d6d0ee56d
MD5 b8761817eca4c0053dae2d050338acab
BLAKE2b-256 4ef301c21424bf92ec2c4a2a913cb1511165e644d62c0c9fa073bb3cf3a1a6ac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page