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


json形式の読み込みをマスターする
pandas.read_json()を用いることで、ファイルや文字列を読み込むことができます。今回サンプルとして使用する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をインポートしてやってみましょう。
>>> 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形式のファイルを読み込む
文字列と同様に、read_json()を使います。引数にファイルのパスを指定すると、DataFrame形式で取得することができます。
>>> 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’を指定すると、indexとcolumnを入れ替える(転置する)ことができる。
>>> 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
転置は以下の記事でも取り扱っています。

圧縮ファイルを読み込む
圧縮ファイルを読み込む際には、引数にcompressionを指定する。zip, gzip, bz2, xzを指定することで、圧縮ファイルを直接読み込むことができる。また、拡張子が.zip, .gz, .bz2, .xzの場合はcompression=’infer’とすることで、圧縮方式が自動で選択される。
>>> import pandas as pd
>>> import json
>>> df = pd.read_json('sample.zip', compression='infer')
まとめ
今回はjson形式の文字列やファイルの読み込み方を見てきました。データ分析の際には、json形式で吐き出されているケースが多いので、改めて確認しておきましょう!
- read_jsonでjson形式の読み込みができる
- 引数にorientで転置
- compressionで圧縮ファイルも読み込める