使用pandas数据帧在python中处理json stat数据的库。
pyjstat的Python项目详细描述
last release 1.0:强烈建议更新到1.0版本,因为它支持json stat 2.0并带来了其他改进。
Pyjstat
pyjstat是用于json stat格式化数据操作的python库 它允许使用python读取和编写json stat[1]格式,使用 广泛接受的pandas库[2]提供的数据帧结构。 json stat格式是一种简单的轻量级json数据格式 传播,目前在其2.0版本。 pyjstat的灵感来自于rjstat[3],一个用于读写的库 json stat和r,作者是ajschumacher。注意,就像在RJSTAT项目中一样, 并非所有功能都受支持(即并非所有元数据都被转换)。 pyjstat是在apache许可证2.0下提供的。
[1] | http://json-stat.org/ for JSON-stat information |
[2] | http://pandas.pydata.org for Python Data Analysis Library information |
[3] | https://github.com/ajschumacher/rjstat for rjstat library information |
这个库最初是为使用Python2.7开发的。做了一些修正 (感谢@andrekittredge),现在它也可以与python 3.4一起工作。
提供了对json stat 1.3和2.0的支持。json stat 1.3方法是 现在已弃用,将来不应使用,但向后兼容 已经保存下来了。
pyjstat 1.0的目标是简单。已复制json stat类 (数据集、集合和维度)并提供简单的read()和write() 方法。功能性涵盖了具有url或数据帧的常见用例。 作为数据源。
检索特定多维数据集单元格值的方法取自 json stat javascript示例代码。感谢@badosa。
另外,版本1.0在内部使用requests包,它应该 使数据集的下载更容易。
测试覆盖率为88%,使用travis ci。
最后,请注意,新的类和方法的灵感来自json stat 2.0, 因此,不能与以前版本的json-stat一起使用。 方法仍然可用,包括错误修复和性能 改进。
安装
Pyjstat需要熊猫包。用于安装:
pip install pyjstat
使用1.0版及更高版本(支持json stat 2.0)
数据集操作:读和写
典型用法通常如下:
from pyjstat import pyjstat EXAMPLE_URL = 'http://json-stat.org/samples/galicia.json' # read from json-stat dataset = pyjstat.Dataset.read(EXAMPLE_URL) # write to dataframe df = dataset.write('dataframe') print(df) # read from dataframe dataset_from_df = pyjstat.Dataset.read(df) # write to json-stat print(dataset_from_df.write())
数据集操作:获取值
此操作模拟json stat网页中的javascript示例:
from pyjstat import pyjstat EXAMPLE_URL = 'http://json-stat.org/samples/oecd.json' query = [{'concept': 'UNR'}, {'area': 'US'}, {'year': '2010'}] dataset = pyjstat.Dataset.read(EXAMPLE_URL) print(dataset.get_value(query))
采集操作:读写
集合可以解析为数据帧列表:
from pyjstat import pyjstat EXAMPLE_URL = 'http://json-stat.org/samples/collection.json' collection = pyjstat.Collection.read(EXAMPLE_URL) df_list = collection.write('dataframe_list') print(df_list)
英国ONS API示例
在下面的示例中,api key参数必须替换为实际的api键 从国家统计局。此数据集对应于伦敦按性别和年龄划分的居住类型:
EXAMPLE_URL = 'http://web.ons.gov.uk/ons/api/data/dataset/DC1104EW.json?'\ 'context=Census&jsontype=json-stat&apikey=yourapikey&'\ 'geog=2011HTWARDH&diff=&totals=false&'\ 'dm/2011HTWARDH=E12000007' dataset = pyjstat.Dataset.read(EXAMPLE_URL) df = dataset.write('dataframe') print(df)
更多示例
更多示例可以在examples目录中找到,这两个目录都适用于1.3版 和2.0。
使用0.3.5及更高版本(支持json stat 1.3)
此语法已弃用,因此不再推荐使用。
从json stat到pandas数据帧
典型用法通常如下:
from pyjstat import pyjstat import requests from collections import OrderedDict EXAMPLE_URL = 'http://json-stat.org/samples/us-labor.json' data = requests.get(EXAMPLE_URL) results = pyjstat.from_json_stat(data.json(object_pairs_hook=OrderedDict)) print (results)
从pandas数据帧到json stat
相同的数据可以转换为json stat,其中包含一些不可避免的元数据 损失:
from pyjstat import pyjstat import requests from collections import OrderedDict import json EXAMPLE_URL = 'http://json-stat.org/samples/us-labor.json' data = requests.get(EXAMPLE_URL) results = pyjstat.from_json_stat(data.json(object_pairs_hook=OrderedDict)) print (results) print (json.dumps(json.loads(pyjstat.to_json_stat(results))))
更改
有关更改、修复、改进和新功能的参考,请参见changes.txt。