下载、缓存、整理、过滤、操作和推断英国人口和家庭估计/预测
ukpopulation的Python项目详细描述
http://www.org/badge/latelatestdoi/13191988266 rel rel rel rel="nofollow"><
英国人口:英国人口预测
<阻塞率>最新消息:1.2版本
- 增加对自定义国家以下人口预测的支持
自定义SNPP数据
一个外部生成的snpp数据集(例如simim)可以注册到ukpopulation
包中,并将其用作标准的ons/statswales/nrscotland/nisra投影:
外部数据集必须遵循上述格式/列名约定,但如果其他使用需要,也可以包含其他数据。gender
列应仅接受值1(男性)或2(女性);CU AGE
列应包含范围0-90(90表示90或以上)。
1.1释放
- 增加英国家庭预测
- 对定制snpp变体的初始支持
- 跨mye/npp/snpp api的更好一致性(打破向后兼容性)
- 修复了一些错误/问题
家庭预测
版本1.1增加的功能是在LAD(或同等级别)上汇总英国的家庭预测数据。每个国家的统计机构都按家庭类型提供分类,但它们之间几乎没有一致性,也没有试图提供英国范围内的统一分类。年份范围反映了每个国家的SNPP的年份范围(见下文)。本实习课程不提供数据的外推或国家预测变量的应用。
定制SNPP变体
给定外部生成的数据,按照地理位置(lad)和年份描述官方预测变量的变化,这个新功能生成一个完整的snpp数据集,最近按年龄按比例分解。和性别。可以选择将自定义变量强制为最接近的整数值,以保留原始(四舍五入)的总和。
API一致性
现在,myedata
,snppdata
,nppdata
和snhpdata
类的公共方法一致地排列参数:首先categories
(如果合适),然后geogs
,然后years
联合王国的统计机构,即:ons,statswelles,nr scotland,以及nisra,所有这些机构都提供年度人口估计和预测数据。尽管数据本质上是相同的,但机构和数据集之间的数量、格式和可用性是不同的。所有人口预测数据均按年龄和性别(单年)提供。家庭预测数据的变化更大,每个国家/机构在人力资源规划年龄和/或家庭类型方面产生的家庭分类不一致。目前,此套餐不按年龄进行分类,保留原来的家庭类型分类,即:
<表><广告>"一人户:男性"
"1成人:男性"
"有三个或更多受抚养子女的家庭"
"有两个受抚养子女的家庭"
"3人(2名成人,1名儿童)"
"3人(1名成人,2名儿童)"
"4人(2名成人,1名儿童)"
"4人(1名成人,3名儿童)"
"5人(2名成人,1名儿童)"
"5人(1名成人,4名儿童)"。
"2个成人1+儿童"
"其他有孩子的家庭"
‘3人(无子女)’
‘4人(无子女)’
‘5人(无子女)’
"3个以上成年人"
"其他没有孩子的家庭"
国家人口预测(NPP)由国家统计局负责提供英国境内每个国家的数据,包括15个变量,涵盖未来可能出现的多种情况。目前的数据基于2016年的人口估计,并预测到2116年的一个世纪。
国家以下人口预测(SNPP)由每个国家的机构(英国国家统计局)负责,根据所涉国家的情况,从基准年算起25年:
<表><广告>从1991年到2016年,包括1991年到2016年,由地方当局提供整个英国的年中人口估计数(mye)。
投影覆盖
英国国内的国家会产生自己的snpp数据,也会产生一些(不完整的)变体预测。国家统计局目前认为这些(至少是英国的)是"实验"
<表><广告>可达性
nomisweb提供了一个api,允许对数据进行相对简单的编程访问,并且是目前首选的数据源。目前并非所有数据都可从该来源获得,但这可能会改变
nomisweb目前拥有英国国家统计局的主要npp数据、英国的snpp数据和所有mye数据。
所有其他数据:国家统计局核电站变量,威尔士、苏格兰和北爱尔兰的国家统计局数据,可从相关机构的网站上以不同格式获取。
基本原理
此软件包的目的是为snpp和npp数据提供统一的接口,包括变量:
- 封装来自不同来源的NPP和SNPP数据的下载、处理和缓存。
- 在不同的数据集上,按年龄(单年,最多90岁)和性别不断区分。
- 为所有数据提供统一格式。
- 提供了一种利用snpp原理和npp原理/变量预测综合snpp变量预测的方法
- 提供使用npp数据外推snpp数据的方法
- 使数据的过滤和聚合变得容易,例如提取工作年龄人口的预测。
方法和细节
数据源
- nomisweb:英国按国家/年龄/性别划分的NPP,英国按LAD/年龄/性别划分的SNPP,英国按LAD/年龄/性别划分的Mye。
- ONS:按国家/年龄/性别划分的英国NPP变体。
- s威尔士国家统计局:威尔士国家统计局,按LAD/年龄/性别划分。
- 苏格兰国家记录:苏格兰国家记录,按LAD当量/年龄/性别分类。
- 北爱尔兰统计和研究机构:北爱尔兰按LAD当量/年龄/性别划分的SNPP。
数据处理
- 请注意,每个国家的snpp和npp数据可能没有相同的参考年。(见上表)。
- NPP数据按国家(英格兰/威尔士/苏格兰/北爱尔兰)进行细分,包括上表所示的所有变量预测。
- 列标题和类别值遵循nomisweb/人口普查惯例:
地理代码
:国家、LAD或LAD等效代码性别
:1=男性,2=女性c_age
:0-90,其中90表示90或90以上。为避免歧义,这是一个例外-nomiseb人口普查值通常为年龄+1)预计年份名称
:2014-2116OBS值
:人数
- 所有数据都被缓存,以便快速检索。
外推
snpp数据可以使用长期npp数据进行外推。这是为每个年龄和性别独立进行的,以试图捕捉原始人口的年龄性别结构。聚集只发生在外推的年龄性别特定值上。这意味着具有不同年龄性别结构的snpp地区所显示的趋势将有所不同。
相反,如果对每个snpp地理区域的聚集人口进行外推,那么每个snpp地理区域将具有相同的趋势,这将与npp数据的趋势相同。
对于给定的地理位置和年份,这种方法可以用以下公式更正式地解释:snpps(g,y)。
其中n是NPP,a是年龄,s是性别,y bar是参考年(通常是SNPP数据中的最后一年),并且c(g)表示从SNPP地理(LAD)到NPP一(国家)的映射。
变体的投影
上述外推方法同样适用于从snpp主变量和npp变量数据合成snpp变量。与上述表达式等价的表达式是:
其中下标v和0分别指变量和主投影。
安装
要求
API键
这个包使用ukcensusapi包来获取一些投影数据。软件包需要一个API密钥才能正常工作,有关详细信息,请参见此处的。
包装
需要Python3.5或更高版本。依赖项应该自动解决,但如果没有,请参见故障排除
pypi
$ python3 -m pip install ukpopulation
条件
$ conda install ukpopulation
这假设您已经添加了conda forge频道,可以使用
$ conda config --add channels conda-forge
一些示例(请参见下文)绘制图形,并依赖于matplotlib
,可以根据需要安装pip或conda。
开发版本
要克隆repo并在本地安装:
$ git clone https://github.com/nismod/ukpopulation $ ./setup.py install
(如果使用了fork,则替换url)。测试数据缓存目录包含一个文件nomis_api_key
它为测试系统定义了一个虚拟密钥仅限用途。可以使用以下命令从(项目根目录)运行测试套件:
$ ./setup.py test
故障排除
确保使用的pip版本正确(>;=3):
$ pip --version pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
如果没有,则用pip3
或python3-m pip替换
pip
如果安装缺少依赖项,请尝试:
$ pip install -r requirements.txt $ ./setup.py install
if(使用python 3.5?)您将遇到
AttributeError: module 'html5lib.treebuilders' has no attribute '_base'
那么
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>0
应该会修好的。但更好的解决方案是升级到python3.6
如果matplotlib由于缺少依赖项(tkinter)而无法安装,可以通过
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>1
如果您的问题没有在上面解决,请发布一个问题,包括尽可能多的支持信息。
用法示例
检索特定LAD的SNPP
详细数据
这个例子获取了纽卡斯尔2018年的性别和年龄预测。
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>2
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>3
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>4
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>5
聚合数据
此示例获取纽卡斯尔2018年至2039年的总人口预测。
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>2
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>7
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>8
检索按年龄筛选的NPP数据
以下是如何计算2016年至2050年按国家分列的劳动适龄人口总数:
>>>importukpopulation.customsnppdataasCustomSNPPData>>>customdata=pd.read_csv("custom_snpp.csv")>>>customdata.head()GEOGRAPHY_CODEGENDERC_AGEOBS_VALUEPROJECTED_YEAR_NAME0E0600000510603.020181E0600000511600.020182E0600000512624.020183E0600000513636.020184E0600000514661.02018>>>CustomSNPPData.register_custom_projection("custom_snpp",customdata,"cache_directory")WritingcustomSNPPcustom_snpptocache/ukpopulation_custom_snpp_custom_snpp.csv>>>CustomSNPPData.list_custom_projections("cache_directory")['custom_snpp']>>>9
$ python3 -m pip install ukpopulation0
$ python3 -m pip install ukpopulation1
这就汇总了英国的数据:
$ python3 -m pip install ukpopulation2
nb snpp数据也可以按年龄和/或性别和/或地理位置以同样的方式进行筛选。
检索英格兰和威尔士的核电站变量
首先是详细数据(按年龄、性别和国家),然后按年龄和性别汇总。
$ python3 -m pip install ukpopulation3
使用snpp和npp数据推断mye
单个区域
构建埃克塞特2011-2065年的汇总数据:
- 使用截至2016年的Mye数据,按年龄和性别汇总。
- 然后使用截至2041年的SNPP数据,按年龄和性别汇总。
- 利用npp数据和exeter(2041)的年龄性别结构进行推断。
- 按年龄和性别汇总外推数据
- 绘制数据。
源代码
批量计算
在本例中,我们推断并汇总威尔士每个LAD的SNPP:
- 对于每个区域,
- 根据2039年到2050年的年龄性别结构进行推断。
- 按年龄和性别汇总推断的数据。
- 附加到完整数据集。
- 将威尔士数据集另存为csv:
源代码
通过将npp变体应用于特定的lad来构建snpp变体
在这里,我们将"hhh"(高增长)和"lll"(低增长)npp变体应用于纽卡斯尔的snpp数据:
- 只需按年龄和性别汇总纽卡斯尔2018-2039年的SNPP数据,即可计算出本金("购买力平价")预测值。
- 通过将未聚合数据(即按年龄和性别)按NPP变量/PRI的比率加权来计算变量
- 按年龄和性别汇总变量数据。
- 绘制结果。
源代码
推断snpp变体
在这里,我们建立在上述例子的基础上,不仅应用了npp变量,而且还进行了外推。这个过程首先涉及到通过npp主变量推断snpp。然后,外推数据应用了变量调整。
源代码
比较单个LAD的家庭和人口预测
在本例中,我们简单地将纽卡斯尔的总家庭预测与(主要)人口预测进行比较。你可以看到,人口增长开始比家庭增长更为缓慢。这表明家庭规模在缩小。对数据的进一步检查应证实这一点。
源代码
代码文档
包文档的查看方式如下:
$ python3 -m pip install ukpopulation4
贡献
欢迎通过常用的拉取请求机制对此程序包作出贡献。
支架
如果您遇到错误,觉得文档不正确或不完整,或者想要推荐新功能,请在问题选项卡中发布问题。
致谢
该项目包是作为EPSRC资助的基础设施转型研究联合会下属的Mistral项目的一部分开发的。