■ はじめに
https://dk521123.hatenablog.com/entry/2020/11/17/000000
https://dk521123.hatenablog.com/entry/2020/11/18/000000
https://dk521123.hatenablog.com/entry/2021/01/25/000000
の続き。 JSONを扱うことになったので、メモ。
目次
【1】JSONの読み込み 補足:ndjson について 【2】JSONの書き込み 【3】サンプル 【4】使用上の注意 1)null値が、NaNになってしまう 【5】補足:ndjson について
【1】JSONの読み込み
* read_json() を使う
API仕様
https://pandas.pydata.org/docs/reference/api/pandas.read_json.html
参考文献
https://note.nkmk.me/python-pandas-read-json/
【2】JSONの書き込み
* 以下の関連記事で紹介した「to_json」を使う
https://dk521123.hatenablog.com/entry/2021/04/10/192752
より抜粋
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_json.html
* JSON形式に変換
使用上の注意
df.to_json の戻り値は、文字列なので、 for などでループさせるには 以下のようにする必要がある json_data = json.loads(json_str)
【3】サンプル
import pandas as pd df = pd.read_json("demo.json", encoding="UTF8") print(df) df.to_json("copy_demo.json", indent=2)
入力ファイル:demo.json
[ { "id": "X0001", "name": "Mike" }, { "id": "X0002", "name": "Tom", "birth_date": "2022-01-01" }, { "id": "X0003", "name": "Paul", "birth_date": "1988-12-12" } ]
出力結果
id name birth_date 0 X0001 Mike NaN 1 X0002 Tom 2022-01-01 2 X0003 Paul 1988-12-12
出力ファイル:copy_demo.json (入力ファイルと異なる形式)
{ "id":{ "0":"X0001", "1":"X0002", "2":"X0003" }, "name":{ "0":"Mike", "1":"Tom", "2":"Paul" }, "birth_date":{ "0":null, "1":"2022-01-01", "2":"1988-12-12" } }
【4】使用上の注意
1)null値が、NaNになってしまう
* 詳細は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2022/02/20/000000
【5】補足:ndjson について
* 以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2022/08/30/224248
関連記事
Pandas ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/22/014957
Pandas ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/10/14/000000
Pandas ~ 基本編 / データフレーム ~
https://dk521123.hatenablog.com/entry/2021/07/25/000000
Pandas ~ データフレームの相互変換 ~
https://dk521123.hatenablog.com/entry/2022/02/15/000000
Pandas ~ 基本編 / CSV編 ~
https://dk521123.hatenablog.com/entry/2020/11/17/000000
Pandas ~ 基本編 / Excel編 ~
https://dk521123.hatenablog.com/entry/2020/11/18/000000
Pandas ~ 基本編 / Excel => CSVに変換 ~
https://dk521123.hatenablog.com/entry/2021/01/25/000000
Pandas ~ NaNをNoneに変換する ~
https://dk521123.hatenablog.com/entry/2022/02/20/000000
Pandas ~ to_xxxx / 出力編 ~
https://dk521123.hatenablog.com/entry/2021/04/10/192752
Python ~ ndjson を扱う ~
https://dk521123.hatenablog.com/entry/2022/08/30/224248