Pandas解析JSON数据集

Pandas解析JSON数据集

使用pandas解析JSON数据集要方便得多。Pandas允许你将一个列表转换成一个Dataframe,并单独指定列名。

一个JSON分析器将JSON文本转换为另一种表示方式,必须接受所有符合JSON语法的文本。它可以接受非JSON形式或扩展。一个实现可以设置以下内容。

  • 对它所接受的文本的大小有限制。
  • 对筑巢的最大深度进行限制。
  • 对数字的范围和精度的限制。
  • 对字符串的长度和字符内容设置限制。

处理大型JSON数据集可能会恶化,特别是当它们太大,无法装入内存时。在这样的情况下,命令行工具和Python的组合可以成为探索和分析数据的有效方式。

导入JSON文件:

对JSON的操作是通过Python数据分析库(称为pandas)完成的。

import pandas as pd
Python

现在你可以使用read_json命令读取JSON并将其保存为pandas数据结构。

pandas.read_json (path_or_buf=None, orient = None, typ=’frame’, dtype=True, convert_axes=True, convert_dates=True, keep_default_dates=True, numpy=False, precise_float=False, date_unit=None, encoding=None, lines=False, chunksize=None, compression=’infer’)

import pandas as pd
# Creating Dataframe 
df = pd.DataFrame([['a', 'b'], ['c', 'd']],
                  index =['row 1', 'row 2'],
                  columns =['col 1', 'col 2'])
  
# Indication of expected JSON string format
print(df.to_json(orient ='split'))
  
print(df.to_json(orient ='index'))
Python

输出:

{"columns":["col 1", "col 2"],
 "index":["row 1", "row 2"],
 "data":[["a", "b"], ["c", "d"]]}

{"row 1":{"col 1":"a", "col 2":"b"},
 "row 2":{"col 1":"c", "col 2":"d"}}
Python

使用dataframe.to_json将该对象转换为JSON字符串。

DataFrame.to_json (path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit=’ms’, default_handler=None, lines=False, compression=’infer’, index=True)

直接从数据集读取JSON文件。

import pandas as pd
  
data = pd.read_json('http://api.population.io/1.0/population/India/today-and-tomorrow/?format = json')
print(data)
Python

输出:

total_population
0  {'date': '2019-03-18', 'population': 1369169250}
1  {'date': '2019-03-19', 'population': 1369211502}
Python

用Pandas进行嵌套式JSON解析。

嵌套的JSON文件在平铺和加载到Pandas的过程中可能会很耗时和困难。
我们正在使用嵌套的”‘ raw_nyc_phil.json …”‘ 从一个嵌套的数组创建一个扁平化的pandas数据框架,然后解压一个深度嵌套的数组。

代码 #1:
让我们把作品列解压到一个独立的数据框架中。我们还将抓取平面列。

import json 
import pandas as pd 
from pandas.io.json import json_normalize 
  
with open('https://github.com/a9k00r/python-test/blob/master/raw_nyc_phil.json') as f:
    d = json.load(f)
  
# lets put the data into a pandas df
# clicking on raw_nyc_phil.json under "Input Files"
# tells us parent node is 'programs'
nycphil = json_normalize(d['programs'])
nycphil.head(3)
Python

输出:
Pandas解析JSON数据集

代码 #2:
让我们使用json_normaliz将作品列解压成一个独立的数据框架。

works_data = json_normalize(data = d['programs'],
                            record_path ='works', 
                            meta =['id', 'orchestra', 'programID', 'season'])
works_data.head(3)
Python

输出:
Pandas解析JSON数据集

代码 #3:

让我们在这里通过传递一个列表将’soloists’数据扁平化。由于独奏者被嵌套在工作中。

soloist_data = json_normalize(data = d['programs'],
                              record_path =['works', 'soloists'],
                              meta =['id'])
  
soloist_data.head(3)
Python

输出:
Pandas解析JSON数据集

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册