Pandasでjson形式のファイルや文字列を読み込む方法

今回はPandasでjsonファイルを読み込む方法をマスターしましょう。csvやtxtファイルを読み込む方法は有名ですが、json形式の文字列やファイルとなると戸惑う方も多いのではないでしょうか。今回はpandas.read_json()を使う方法について、解説していきます。

csvやtxtファイルの読み込みについては以下の関連の記事をご覧ください。

Pandasのread_csvでcsvファイルを読み込む方法 Pandasのread_tableでtxtファイルを読み込む方法

json形式の読み込みをマスターする

pandas.read_json()を用いることで、ファイルや文字列を読み込むことができます。今回サンプルとして使用するjsonファイルはこちらです。

sample.json
{"Japanese":{"ichiro":50,"jiro":70,"saburo":90},"mathematics":{"ichiro":40,"jiro":50,"saburo":80},"science":{"ichiro":90,"jiro":60,"saburo":60},"society":{"ichiro":55,"jiro":80,"saburo":65},"English":{"ichiro":80,"jiro":80,"saburo":70}}

json形式の文字列を読み込む

引数にjson形式の文字列を入れると、DataFrame形式に変換することができます。pandasをインポートしてやってみましょう。

Python
>>> import pandas as pd
>>> import json

>>> jsonStr = '{"Japanese":{"ichiro":50,"jiro":70,"saburo":90},"mathematics":{"ichiro":40,"jiro":50,"saburo":80},"science":{"ichiro":90,"jiro":60,"saburo":60},"society":{"ichiro":55,"jiro":80,"saburo":65},"English":{"ichiro":80,"jiro":80,"saburo":70}}'
>>> df = pd.read_json(jsonStr)
>>> df
	Japanese	mathematics	science	society	English
ichiro	50	40	90	55	80
jiro	70	50	60	80	80
saburo	90	80	60	65	70
注意
json形式では、文字列内の引用符はダブルクォートでなければなりません。シングルクォートで囲むと、ValueErrorになります。

json形式のファイルを読み込む

文字列と同様に、read_json()を使います。引数にファイルのパスを指定すると、DataFrame形式で取得することができます。

Python
>>> import pandas as pd
>>> import json

>>> df = pd.read_json('sample.json')
>>> df
	Japanese	mathematics	science	society	English
ichiro	50	40	90	55	80
jiro	70	50	60	80	80
saburo	90	80	60	65	70

読み込み時にindexとcolumnを入れ替える

引数にorient=’index’を指定すると、indexcolumnを入れ替える(転置する)ことができる。

Python
>>> import pandas as pd
>>> import json

>>> df = pd.read_json('sample.json', orient='index')
>>> df
	ichiro	jiro	saburo
Japanese	50	70	90
mathematics	40	50	80
science	90	60	60
society	55	80	65
English	80	80	70

転置は以下の記事でも取り扱っています。

PandasのDataFrameの行と列を入れ替える方法を解説!

圧縮ファイルを読み込む

圧縮ファイルを読み込む際には、引数にcompressionを指定する。zip, gzip, bz2, xzを指定することで、圧縮ファイルを直接読み込むことができる。また、拡張子が.zip, .gz, .bz2, .xzの場合はcompression=’infer’とすることで、圧縮方式が自動で選択される。

Python
>>> import pandas as pd
>>> import json

>>> df = pd.read_json('sample.zip', compression='infer')

まとめ

今回はjson形式の文字列やファイルの読み込み方を見てきました。データ分析の際には、json形式で吐き出されているケースが多いので、改めて確認しておきましょう!

覚えておきたいポイント
  • read_jsonでjson形式の読み込みができる
  • 引数にorientで転置
  • compressionで圧縮ファイルも読み込める