I.何をする?

次の解説を参考にして、JSONファイルをデータ・フレームで読み込む方法を紹介します。 ## II.シンプルなJSONの場合 Pandasのread_jason()で読み込みます。

II.シンプルなJSONの場合

Pandasのpd.read_jsonで読み込みます。URLでも読み込めます。

import pandas as pd
URL = 'http://raw.githubusercontent.com/BindiChen/machine-learning/master/data-analysis/027-pandas-convert-json/data/simple.json'
df1 = pd.read_json(URL)
df1
##      id   name  math  physics  chemistry
## 0  A001    Tom    60       66         61
## 1  A002  James    89       76         51
## 2  A003  Jenny    79       90         78

III.Dictionaryがネストされている場合

JSONのサンプルは次です。

{"Python": {"\u54c1\u8a5e": "\u540d\u8a5e", "\u65e5\u672c\u8a9e": "\u30d1\u30a4\u30bd\u30f3"}, "Julia": {"\u54c1\u8a5e": "\u540d\u8a5e", "\u65e5\u672c\u8a9e": "\u30b8\u30e5\u30ea\u30a2"}, "data": {"\u54c1\u8a5e": "\u540d\u8a5e", "\u65e5\u672c\u8a9e": "\u30c7\u30fc\u30bf", "\u5909\u5316": {"\u5358\u6570": "datum", "\u8907\u6570": "data"}}}

サンプルをpd.read_jsonで読み込みます。行が用語となるようにたてよこを変換します。

“data”行の“変化”列にdictionariesが置かれています。

import json
df2 = pd.read_json('data/nested.json')
df2.transpose()
##         品詞   日本語                             変化
## Python  名詞  パイソン                            NaN
## Julia   名詞  ジュリア                            NaN
## data    名詞   データ  {'単数': 'datum', '複数': 'data'}

ネストされているdictionariesをフラットにするには、JSONで読み込んでmeta=[]で指定します。

import json
# load data using Python JSON module
with open('data/nested.json','r') as f:
    data = json.loads(f.read())
# Flatten data
df3 = pd.json_normalize(data, meta =['変形'])
df3
##   Python.品詞 Python.日本語 Julia.品詞  ... data.日本語 data.変化.単数 data.変化.複数
## 0        名詞       パイソン       名詞  ...      データ      datum       data
## 
## [1 rows x 8 columns]

To be continued.