JSONファイルを参照して、表組(データフレーム)、グラフを描画するサンプルです。
読み込むjson
{
"school": "ABC University",
"students": [
{"id": 1, "name": "Alice", "course": {"major": "Physics", "credits": 120}},
{"id": 2, "name": "Bob", "course": {"major": "Chemistry", "credits": 118}}
]
}
このjsonを参照して、エクセルのような表組にしたり、棒グラフを作ります。
ポイントは、配列が入れ子(ネスト)になっているので、加工します。
実行結果は以下です。
コードは以下になります。
import streamlit as st
import pandas as pd
import json
json_file_path = 'data/demo/json/test_results.json'
try:
with open(json_file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
st.subheader('ファイルから読み込んだJSONデータ全体 (確認用)')
st.json(data)
st.subheader('jsoonリストを展開したDataFrame')
# data['students'] を渡す
df = pd.json_normalize(data['students'])
# DataFrameの表示
st.dataframe(df)
# (オプション) 列名を 'course.major' から 'major' に変更したい場合
st.subheader("列名を整形したDataFrame (オプション)")
# 'course.major' -> 'major' のように変更
df.columns = [col.split('.')[-1] for col in df.columns]
st.dataframe(df)
st.bar_chart(data=df, x='name', y='credits')
except FileNotFoundError:
st.error(f"エラー: ファイルが見つかりません: {json_file_path}")
except KeyError as e:
st.error(f"JSONデータ内に期待したキー ({e}) が見つかりませんでした。")
except Exception as e:
st.error(f"ファイルの処理中にエラーが発生しました: {e}")