下载、缓存、整理、过滤、操作和推断英国人口和家庭估计/预测

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一致性

现在,myedatasnppdatanppdatasnhpdata类的公共方法一致地排列参数:首先categories(如果合适),然后geogs,然后years

联合王国的统计机构,即:onsstatswellesnr scotland,以及nisra,所有这些机构都提供年度人口估计和预测数据。尽管数据本质上是相同的,但机构和数据集之间的数量、格式和可用性是不同的。所有人口预测数据均按年龄和性别(单年)提供。家庭预测数据的变化更大,每个国家/机构在人力资源规划年龄和/或家庭类型方面产生的家庭分类不一致。目前,此套餐不按年龄进行分类,保留原来的家庭类型分类,即:

<表><广告>最小公分母 英国 威尔士(斯塔茨威尔士)苏格兰(nrscotland) 北爱尔兰(NISRA)< /广告><正文>单人"一人户:女性"
"一人户:男性""1人""1成人:女性"
"1成人:男性""一个成年家庭"成人和儿童"有一个受抚养子女的家庭"
"有三个或更多受抚养子女的家庭"
"有两个受抚养子女的家庭""2人(1名成人,1名儿童)"
"3人(2名成人,1名儿童)"
"3人(1名成人,2名儿童)"
"4人(2名成人,1名儿童)"
"4人(1名成人,3名儿童)"
"5人(2名成人,1名儿童)"
"5人(1名成人,4名儿童)"。 "1个成人1+儿童"
"2个成人1+儿童""一个有孩子的成年家庭"
"其他有孩子的家庭"仅成人"有两个或两个以上成年人的其他家庭"‘2人(无子女)’
‘3人(无子女)’
‘4人(无子女)’
‘5人(无子女)’"2个成年人"
"3个以上成年人""两个没有孩子的成年人"
"其他没有孩子的家庭"

国家人口预测(NPP)由国家统计局负责提供英国境内每个国家的数据,包括15个变量,涵盖未来可能出现的多种情况。目前的数据基于2016年的人口估计,并预测到2116年的一个世纪。

国家以下人口预测(SNPP)由每个国家的机构(英国国家统计局)负责,根据所涉国家的情况,从基准年算起25年:

<表><广告>国家 最新SNPP年份范围(截至2018年6月)< /广告><正文>英国2016-2041年威尔士2014-2039年苏格兰2016-2041年北爱尔兰2016-2041年

从1991年到2016年,包括1991年到2016年,由地方当局提供整个英国的年中人口估计数(mye)。

投影覆盖

英国国内的国家会产生自己的snpp数据,也会产生一些(不完整的)变体预测。国家统计局目前认为这些(至少是英国的)是"实验"

<表><广告>场景/变体 代码< < < >< < < / > > <w</th>< < < > NP< /广告><正文>本金 ppp x x x x x高生育率< HPP >< > > x x x低生育率 LPP x x高预期寿命 php x x预期寿命低 PLP x x中等高预期寿命 PJP x中等低预期寿命 PLP x高迁移率 pph x x低迁移 ppl x x高人口 HHH x x低人口 LLL x x0%的欧盟未来移民 ppq x50%的欧盟未来移民 PPR x150%的欧盟未来移民 PPS x零净迁移 ppz x x x x年轻人的年龄结构 HLH 老年结构 LHL 更替生育率 rpp恒定生育率 CPP无死亡率改善 pnp无变化< 长期均衡净迁移 ppb x

可达性

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-2116
    • OBS值:人数
  • 所有数据都被缓存,以便快速检索。

外推

snpp数据可以使用长期npp数据进行外推。这是为每个年龄和性别独立进行的,以试图捕捉原始人口的年龄性别结构。聚集只发生在外推的年龄性别特定值上。这意味着具有不同年龄性别结构的snpp地区所显示的趋势将有所不同。

相反,如果对每个snpp地理区域的聚集人口进行外推,那么每个snpp地理区域将具有相同的趋势,这将与npp数据的趋势相同。

对于给定的地理位置和年份,这种方法可以用以下公式更正式地解释:snpps(g,y)

eq1

其中n是NPP,a是年龄,s是性别,y bar是参考年(通常是SNPP数据中的最后一年),并且c(g)表示从SNPP地理(LAD)到NPP一(国家)的映射。

变体的投影

上述外推方法同样适用于从snpp主变量和npp变量数据合成snpp变量。与上述表达式等价的表达式是:

eq2

其中下标v0分别指变量和主投影。

安装

要求

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)

如果没有,则用pip3python3-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 ukpopulation
0
$ python3 -m pip install ukpopulation
1

这就汇总了英国的数据:

$ python3 -m pip install ukpopulation
2

nb snpp数据也可以按年龄和/或性别和/或地理位置以同样的方式进行筛选。

检索英格兰和威尔士的核电站变量

首先是详细数据(按年龄、性别和国家),然后按年龄和性别汇总。

$ python3 -m pip install ukpopulation
3

使用snpp和npp数据推断mye

单个区域

构建埃克塞特2011-2065年的汇总数据:

  • 使用截至2016年的Mye数据,按年龄和性别汇总。
  • 然后使用截至2041年的SNPP数据,按年龄和性别汇总。
  • 利用npp数据和exeter(2041)的年龄性别结构进行推断。
  • 按年龄和性别汇总外推数据
  • 绘制数据。

源代码

外推纽卡斯尔人口预测

批量计算

在本例中,我们推断并汇总威尔士每个LAD的SNPP:

  • 对于每个区域,
    • 根据2039年到2050年的年龄性别结构进行推断。
    • 按年龄和性别汇总推断的数据。
    • 附加到完整数据集。
  • 将威尔士数据集另存为csv:
<表><广告>地理代码 计划年份名称 OBS值 < /广告><正文>W060000112040年262903.24103359133W060000112041年262933.2340468692W060000112042年263162.3661643687W060000112043年263332.96819104964W060000112044年263593.29826455784W060000112045年263923.03553008236W060000112046年264243.6253810904W060000112047年264168.2113917932W060000112048年264211.4576059673………

源代码

通过将npp变体应用于特定的lad来构建snpp变体

在这里,我们将"hhh"(高增长)和"lll"(低增长)npp变体应用于纽卡斯尔的snpp数据:

  • 只需按年龄和性别汇总纽卡斯尔2018-2039年的SNPP数据,即可计算出本金("购买力平价")预测值。
  • 通过将未聚合数据(即按年龄和性别)按NPP变量/PRI的比率加权来计算变量
  • 按年龄和性别汇总变量数据。
  • 绘制结果。

源代码

纽卡斯尔人口预测变量

推断snpp变体

在这里,我们建立在上述例子的基础上,不仅应用了npp变量,而且还进行了外推。这个过程首先涉及到通过npp主变量推断snpp。然后,外推数据应用了变量调整。

源代码

纽卡斯尔人口预测变量

比较单个LAD的家庭和人口预测

在本例中,我们简单地将纽卡斯尔的总家庭预测与(主要)人口预测进行比较。你可以看到,人口增长开始比家庭增长更为缓慢。这表明家庭规模在缩小。对数据的进一步检查应证实这一点。

源代码

纽卡斯尔人口预测变量

代码文档

包文档的查看方式如下:

$ python3 -m pip install ukpopulation
4

贡献

欢迎通过常用的拉取请求机制对此程序包作出贡献。

支架

如果您遇到错误,觉得文档不正确或不完整,或者想要推荐新功能,请在问题选项卡中发布问题。

致谢

该项目包是作为EPSRC资助的基础设施转型研究联合会下属的Mistral项目的一部分开发的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java有没有办法在堆栈后保留元素。pop()?   多线程Java:Thread。currentThread()。getName()返回“还没有线程”   java For循环只返回最后一个值   java初始化和比较整数   Java将自定义光标热点设置为图像的中心(.png)   java如何在assertThat中使用带有类型推断的hamcrest nullValue   java Quarkus REST客户端避免空字段的JSON序列化   java使用JFileChooser将语音从文本保存到语音文件   java Android Studio找不到JAR'org。日食jgit4。5.3.201708160445r。罐子   java如何在ElasticSearch中使用带通配符的术语?   java可能的空指针异常安卓   在JavaSwing中使用AwesomeFont中的自定义字体和unicode字符向JButton添加图标?   部署过程中的java持久化单元名称问题WildFly   JavaSpring数据:我无法在数据库中保存关系模型   字符串如何计算文件中单词的长度?JAVA   java Eclipse调试器中变量项旁边的id=xxx是什么   httpclient Java httppost文件打印后上载速度   JAXB对象不实现可序列化的结果是什么?   java Spring JPA数据:自定义通用存储库和服务:未满足PendencyException   java如何从解析类中检索所有值?