Pandas 读写json,Json是最常用的标准数据格式之一,特别是web数据的传输,通常在使用这些数据之前,需要对数据格式进行处理。本章会介绍常用的几个处理json的API函数。
- read_json:从json文件中读取数据
- to_json:将数据写入到json文件中
- json_normalize:对json数据进行规范化处理
阅读本章前,可以先了解Pandas
相关的基础知识:Pandas基础教程, Pandas数据处理
JSONViewer
JSONViewer 是用于检测Json格式是否正确的一个在线应用工具,其网址是http://jsonviewer.stack.hu/, 输入或复制JSON数据到这个web应用中,就可以检测其格式是否合法,还可以以树状结构显示数据,方便大家理解数据的结构,如下所示:
树状结构效果如下图所示:
写入json数据
如果有一个DataFrame,需要将其转换成JSON文件,首先定义一个DataFrame对象,然后调用它的to_json()
函数,传入你要创建的json文件名作为参数。如下所示:
输出结果如下:
frame.json
文件的内容如下:
读取json数据
读取json数据也很简单,使用to_json()
函数,传入文件名作为参数即可。如下所示:
输出结果如下:
上述例子中因为frame.json
文件是由DataFrame对象转换而来,JSON数据为列表形式。然而,json文件中的数据通常不是列表形式,因此,需要将字典结构的文件转成列表形式,这个过程就称为规范化。
规范化
Pandas 库中的 json_normalize()
函数能够将字典或列表转换成表格,使用前,可以通过如下方式导入这个函数:
创建json文件,将其保存到工作目录下,文件名为books.json
,文件内容如下:
如上所示,文件结构不再是列表形式,而是一种更为复杂的形式。因此无法再使用read_json()函数来处理,执行报错如下所示:
我们仍然可以从这个数据结构中获取到列表数据,首先,加载JSON文件的内容,并将其转换为一个字符串。
然后调用 json_normalize()
函数进行规范化处理,如下所示,你可能想得到一个包含所有图书信息的表格,只要把键books
作为第二个参数即可。
输出结果如下:
json_normalize()
函数会读取所有books
作为键的元素的值,元素的所有属性将会转换为嵌套的列名称,而属性值将会转换为DataFrame元素,该函数使用一串递增的数字作为索引。
你得到的DataFrame对想只包含了一部分内部信息,增加books位于同一级的其他键的值可能会由用处,把存储键名的列表作为第三个参数传入即可。如下所示:
输出结果如下: