今回はPandasでDataFrameをjson形式の文字列や、ファイルに変換したり保存する方法をマスターしましょう。csvやtxtファイルの読み込みや変換する方法は有名ですが、json形式の文字列やファイルとなると戸惑う方も多いのではないでしょうか。今回はpandas.to_json()を使う方法について、解説していきます。
csvや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’を指定すると、indexとcolumnを入れ替える(転置する)ことができます。
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}}'
転置は以下の記事でも取り扱っています。

圧縮ファイルへと保存する
出力時に圧縮ファイルにする場合は、引数にcompressionを指定する。 gzip, bz2, xzを指定することができる。
Python
>>> import pandas as pd
>>> import json
>>> df.to_json('df.gz', compression='gzip')
まとめ
今回はjson形式の文字列やファイルへの変換や保存方法を見てきました。改めてまとめておきましょう。
覚えておきたいポイント
- to_json()でjson形式へ変換・保存できる
- 引数にorientで転置
- compressionで出力時にファイルを圧縮