Python

Python基礎:JSONファイルの書き出し/読み込み

スポンサーリンク

はじめに

JSONはデータの受け渡しに広く使われるデータ形式です。機械学習でもWebAPIからデータを取得した場合は、この形式になっていることが多いため、目に触れる機会も多いと思います。今回は、このJSON形式を扱います。

サンプルデータ

今回もscikitlearnのirisデータセットを使います。

# ライブラリのインポート
import pandas as pd
from sklearn.datasets import load_iris

# データの読み込み
data=load_iris()
data.keys()
df=pd.DataFrame(data.data,columns=data.feature_names).head()
df

JSONファイルへの書き出し

データフレームをJSONフォーマットへ変換する場合は、to_jsonメソッドを使います。 to_jsonメソッドには第1引数にファイルパスを指定してJSONフォーマットのファイルとして書き出すことができます。

df.to_json('test.json')

第一引数に何も指定しなかった場合、データフレームがJSON文字列へ変換されます。

df.to_json()

to_jsonメソッドはorient引数(初期値columns)があり、データフレームからJSON文字列へ変換するフォーマットを指定できます。orient引数へ指定可能な値は次の表のようになります。

フォーマット
splitディクショナリと類似したフォーマット。
{インデックス -> [インデックス], カラム -> [カラム], データ -> [値] }
recordsリストと類似したフォーマット。
[{カラム -> 値}, …, {カラム -> 値}]
indexディクショナリと類似したフォーマット。
{インデックス -> {カラム -> 値}}
columnsディクショナリと類似したフォーマット。
{カラム -> {インデックス -> 値}}
valuesデータフレームの値の配列
tableディクショナリと類似したフォーマット。データのスキーマの情報を有する。データはorient=’records’のフォーマットに準ずる。
{‘schema’:{schema}, ‘データ’:{データ}}
df.to_json(orient='table')

JSONファイルの読み込み

JSON文字列をpandasのオブジェクトとして読み込む場合はread_json関数を使います。第一引数でファイルパスあるいは、JSON文字列を指定します。read_json関数のtyp引数により、戻すpandasのオブジェクトを指定することができます。初期値はframeでJSON文字列をデータフレームへ変換して戻します。

pd.read_json('test.json',typ='frame')

JSONの書き出しで使ったto_jsonメソッドと同様、read_json関数にもorient引数が用意されています。orient引数の初期値はtyp引数の値により異なります。JSON文字からの書き出しがデータフレームの場合(typ=frame)、orient引数の初期値はcolumnsです。

read_json関数には読み込み時にデータ型の制御をおこなう引数も用意されています。dtype引数が初期値Trueの場合、データ読み込み時にデータ型の推測をおこないます。また、カラムラベルをキー、データ型をバリューとして持つディクショナリを指定した場合、読み込み時に明示的にカラムのデータ型を指定できます。

スポンサーリンク

まとめ

いかがでしょうか?私はJSONってなんだかよくわからなくてとっつきにくい!って思ってました。これまで扱ったことのある身近なirisデータで確認してみると、理解できたのではないでしょうか?

コメント

タイトルとURLをコピーしました