使用pandas数据帧在python中处理json stat数据的库。

pyjstat的Python项目详细描述


last release 1.0:强烈建议更新到1.0版本,因为它支持json stat 2.0并带来了其他改进。

Pyjstat

https://travis-ci.org/predicador37/pyjstat.svg?branch=master

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。

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

推荐PyPI第三方库


热门话题
Android上已连接音频输入设备的java列表   java是创建类的新对象还是使用静态方法?   Java:Shift/Rotate对象数组   Java Casting ArrayIterator<Object>   在java中返回布尔值时出错   无法确定文本文件读入程序(java)中的各种元素   Java Swing JToolBar   JAVAlang.IllegalStateException执行Ghost4J(Linux 32对64位)   jvm如何增加ubuntu系统的java堆化?   java CORS策略“AccessControlAllowOrigin”(Anguar 8和Servlet)   使用dagger 2的java视图依赖项注入   单元测试中RxJava的java模拟活动生命周期   arraylist中的Java打印字符串   java返回值显示为0.0。为什么会这样?   java是clientserver应用程序所必需的MVC吗?   ByteToMessageDecoder类中的java内存泄漏   java将大量文档写入firestore   GWT项目中的java TomcatMaven插件。两者之间的区别是什么:org。科德豪斯。魔咒和组织。阿帕奇。公猫maven插件   java swing:向JTree项添加自定义图形按钮