Pandasでjson形式のファイルや文字列に変換・保存する方法

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

csvやtxtファイルへの変換や保存方法については以下の関連の記事をご覧ください。

Pandasのデータフレームをcsvファイルに出力する方法 Pandasのread_tableでtxtファイルを読み込む方法

json形式への変換・保存の方法をマスターする

pandas.to_json()を用いることで、DataFrameをjsonファイルや文字列に変換することができます。今回サンプルとして使用するDataFrameはこちらです。

df
	ichiro	jiro	saburo
Japanese	50	70	90
mathematics	40	50	80
science	90	60	60
society	55	80	65
English	80	80	70

json形式の文字列へ変換する

json形式へ変換するためには、to_json()を使います。これだけでjson形式に変換できましたね。

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

>>> df.to_json()
'{"ichiro":{"Japanese":50,"mathematics":40,"science":90,"society":55,"English":80},"jiro":{"Japanese":70,"mathematics":50,"science":60,"society":80,"English":80},"saburo":{"Japanese":90,"mathematics":80,"science":60,"society":65,"English":70}}'

json形式のファイルに保存する

引数に保存先のパスを指定するとファイルへ保存することができます。例えば、実行ファイルと同じ階層にdf.jsonという名前でjsonファイルを作成する場合は以下の通りになります。

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

>>> df.to_json(df.json)

変換する時にindexとcolumnを入れ替える

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

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

>>> df.to_json(orient='index')
'{"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}}'

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

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

圧縮ファイルへと保存する

出力時に圧縮ファイルにする場合は、引数にcompressionを指定する。 gzip, bz2, xzを指定することができる。

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

>>> df.to_json('df.gz', compression='gzip')

まとめ

今回はjson形式の文字列やファイルへの変換や保存方法を見てきました。改めてまとめておきましょう。

覚えておきたいポイント
  • to_json()でjson形式へ変換・保存できる
  • 引数にorientで転置
  • compressionで出力時にファイルを圧縮