Provids easy access to German publically availible regional statistics
Project description
The package provides easy access to German publicly available regional statistics. It does so by providing a wrapper for the GraphQL API of the Datenguide project.
Free software: MIT license
Documentation: https://datenguidepy.readthedocs.io/
Features
- Overview of available statistics and regions:
The package provides DataFrames with the available statistics and regions, which can be queried by the user without having to refer to expert knowledge on regional statistics or the documentation of the underlying GraphQL API
- Build and Execute Queries:
The package provides the user an object oriented interface to build queries that fetch certain statistics and return the results as a pandas DataFrame for further analysis.
Quick Start
Install
To use the package install the package (command line):
pip install datenguidepy
Setup query
Within your python file or notebook:
1. Import the package
from datenguidepy import Query
from datenguidepy import get_all_regions
from datenguidepy import get_statistics
2. Creating a query
Start with querying either for single regions:
q = Query.region('01')
or for all subregions within a region (e.g. all Kommunen in a Bundesland)
query_allregions = Query.all_regions(parent='01')
How to get IDs for regions?
# Overview of region IDs
get_all_regions()
Use pandas query() functionality to filter according to level, e.g. for Bundesländer “nuts1”
# Filtered for Bundesländer (federal states)
get_all_regions().query("level == 'nuts1'")
See below “Get information on fields and meta data” for more options on regions.
3. Add statistics (fields)
Add statistics to your query for which you want to get data
stats = q.add_field('BEV001')
How do I find the short name of the statistics?
# Some examples
TOPIC: Economy
- Bruttoinlandsprodukt (BIP802)
- Verarbeitendes Gewerbe Betriebe (BETR01)
- Verarbeitendes Gewerbe Umsatz (UMS002)
- Bevölkerungsstand (BEVSTD)
- Beschäftigte (ERW012)
- Arbeitslose (ERWP06)
TOPIC: Demographic Development
- Bevölkerungsstand (BEVSTD)
- Lebendgeborene (BEV001)
- Gestorbene (BEV002)
- Eheschließungen (BEV003)
- Ehescheidungen (BEV004)
- Zuzüge, Wanderungen über die Kreisgrenzen (BEV085)
- Fortzüge, Wanderungen über die Kreisgrenzen (BEV086)
See below “Get information on fields and meta data” for more options on statistics.
4. Get results
Get the results as a Pandas DataFrame
df = q.results()
Additional Features
5. Add filters and subfields
Filters can be added to statistics (fields) to select data only from specific years.
stats.add_args({'year': [2014, 2015]})
5.1. Add subfield A set of default subfields (year, value, source) are defined for all statistics. If additional fields (columns in the results table) shall be returned, they can be specified as a field argument.
stats.add_field('GES') # Geschlecht
# by default the summed value for a field is returned.
# E.g. if the field "Geschlecht" is added, the results table will show "None" in each row,
# which means total value for women and man.
# To get disaggregated values, they speficically need to be passed as args.
# If e.g. only values for women shall be returned, use:
stats.add_args({'GES': 'GESW'})
# if all possible enum values shall be returned disaggregated, pass 'ALL':
stats.add_args({'GES': 'ALL'})
6. Get results Again, results can be returned as a Pandas DataFrame
df2 = q.results()
Get information on fields and meta data
Get information on region ids
# from datenguidepy import get_all_regions
get_all_regions()
Use pandas query() functionality to get specific regions. E.g., if you want to get all IDs on “Bundeländer” use. For more information on “nuts” levels see Wikipedia.
get_all_regions().query("level == 'nuts1'")
Get information on statistic shortnames
# from datenguidepy import get_statistics
get_statistics()
# return statistical descriptions in English
get_statistics(target_language = 'en')
Get information on single fields
You can further information about description, possible arguments, fields and enum values on a field you added to a query.
q = Query.region("01")
stat = q.add_field("BEV001")
stat.get_info()
Further information
For detailed examples see the notebooks within the use_case folder.
For a detailed documentation of all statistics and fields see the Datenguide API.
Credits
All this builds on the great work of Datenguide and their GraphQL API datenguide/datenguide-api
The data is retrieved via the Datenguide API from the “Statistische Ämter des Bundes und der Länder”. Data being used via this package has to be credited according to the “Datenlizenz Deutschland – Namensnennung – Version 2.0”.
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2019-10-07)
First release on PyPI.
0.1.1 (2019-10-09)
Cleanup of the first release regarding naming, authors and docs.
0.2.0 (2020-11-30)
Added functionality to use meta data for displaying descriptive statistics names and enum values
0.2.1 (2020-05-17)
Added functionality to display the units of a statistic along with the numerical value.
Internally split the meta data extraction into technical meta data and meta data about the statistics. Implemented new defaults for the statistics meta data in order to account for changes in the datenguide API.
0.2.2 (2020-05-24)
Fixed a critical bug in the package data perventing the pypi version to essentially stop working completely.
Fixed a bug related to incorrectly displayed version number of the package.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.