Data from National Bureau of Statistics of China
Project description
国家统计局数据
nbsdata 包目的是从中国国家统计局获取数据,使用该包时请自觉遵守国家统计局有关数据使用的规范。
安装
pip install nbsdata
注意本包依赖 requests 和 polars 两个包,请自行安装。
使用
在获取统计局数据时,首先需要获取:
- cid: 数据集代码
- indicatorid: 指标代码
- provinceid: 获取地区数据时需要省级单位代码,如“浙江”为 "330000000000". 对于全国数据,使用 "000000000000"
- period: 获取数据时需要指定时间段.
包的加载
import nbsdata as nbs
以下以获取 2021 年 1 季度至 2026 年 1 季度“浙江”的“农村居民人均可支配收入”的数据为例,介绍数据获取的整个流程。
获取数据集代码
从根节点出发,依次查询,直至叶节点为止。
nbs.get_cid('regional_quarterly')
获取的 cid 为 "854f819b04104191a5ae2f2cba270e6c". 以该 cid 为父节点,继续查询:
nbs.get_cid('regional_quarterly', '854f819b04104191a5ae2f2cba270e6c')
此时得到“人民生活”节点对应的 cid 为 "a7b44a1c308f4533ae28fc0665c96c5a". 继续查询:
nbs.get_cid('regional_quarterly', 'a7b44a1c308f4533ae28fc0665c96c5a')
得到“居民人均可支配收入”对应的 cid 为 "1065e991d0c84623bf0e0d012f36c0e3", 并且显示该节点为叶节点,数据集代码查询结束。
获取指标代码
现在查询叶节点“居民人均可支配收入”对应的具体指标对应的指标代码:
nbs.get_indicatorids('1065e991d0c84623bf0e0d012f36c0e3')
从返回的数据框中可得到包含“农村居民人均可支配收入”的指标对应的代码为 "c6a1a68990ea4d6dafad3dbcf530d5cb"。
获取地区代码
获取“浙江”对应的地区代码:
nbs.query_province_code('浙江')
返回浙江的代码为 "330000000000".
获取数据
现在我们已经完成了获取数据的所有准备,可以开始获取数据了。
nbs.getdata(
cid = '1065e991d0c84623bf0e0d012f36c0e3',
indid = 'c6a1a68990ea4d6dafad3dbcf530d5cb',
period = '202101SS-202601SS',
region = '330000000000'
)
返回一个 21 * 4 的数据框:
│ region ┆ time ┆ value ┆ unit │ │ --- ┆ --- ┆ --- ┆ --- │ │ 浙江省 ┆ 202101SS ┆ 11686 ┆ 元 │ │ 浙江省 ┆ 202102SS ┆ 20357 ┆ 元 │ │ 浙江省 ┆ 202103SS ┆ 28474 ┆ 元 │ │ 浙江省 ┆ 202104SS ┆ 35247 ┆ 元 │ │ 浙江省 ┆ 202201SS ┆ 12541 ┆ 元 │ │ … ┆ … ┆ … ┆ … │ │ 浙江省 ┆ 202501SS ┆ 15043 ┆ 元 │ │ 浙江省 ┆ 202502SS ┆ 25986 ┆ 元 │ │ 浙江省 ┆ 202503SS ┆ 36383 ┆ 元 │ │ 浙江省 ┆ 202504SS ┆ 45154 ┆ 元 │ │ 浙江省 ┆ 202601SS ┆ 15934 ┆ 元 |
注意上述数据为季度累计值,我们可以在此基础上利用 polars 进行整理,得到各季度的当前值。
df2 = df.with_columns(
pl.col('time').str.head(4).cast(pl.Int8).alias('year'),
pl.col('time').str.slice(4, 2).cast(pl.Int8).alias('quarter')
).sort(
'region', 'year', 'quarter'
).select(
pl.col('region'),
pl.col('year'),
pl.col('quarter'),
pl.col('value').diff().over('year').fill_null(pl.col('value'))
)
参考文献
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nbsdata-1.0.2.tar.gz.
File metadata
- Download URL: nbsdata-1.0.2.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65da0207e9a1167a5e3593d63313ad129d4bab7b62eeca5e9bc0a202167e0691
|
|
| MD5 |
7bb78f3bfa315720b9891305e9c6a8de
|
|
| BLAKE2b-256 |
7ccbc1680382fc220806f6a4e10025b08996cd38e74749209169834438c0166a
|
File details
Details for the file nbsdata-1.0.2-py3-none-any.whl.
File metadata
- Download URL: nbsdata-1.0.2-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9cb5983e843d71c0019756a95d6ac68a6db87afdb55cfc8e233fe5b00d604613
|
|
| MD5 |
d4c9c4c4043c595fea2341ff3cc8bbce
|
|
| BLAKE2b-256 |
b26fddfd209124cd914a5b2cc2a738669292e8b4530618eb8521bd6b510498ff
|