【Python】Pandas ~ 基本編 / JSON編 ~

■ はじめに

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