入れ子のJSONをフラット化する
JSONデータの特徴として、入れ子(ネスト)にできる点があります。属性の値が、さらに属性と値の組で構成されることがあるのです。こうしたネストされたデータは、展開して別々のデータフレーム列に「フラット化」すると、より扱いやすくなります。pandas.io.json サブモジュールには、まさにそれを行う json_normalize() という関数があります。
Yelp APIのレスポンスデータはネストされています。ここでは、coordinates 列と location 列の次のレベルのデータをフラット化してください。
pandas(pd)と requests はインポート済みで、API呼び出しの結果は response に保存されています。
この演習はコースの一部です
pandasで効率よくデータを取り込む
演習の手順
pandasのio.jsonサブモジュールからjson_normalize()関数を読み込みます。responseからJSONデータを取り出してdataに代入します。json_normalize()を使って、businessesのデータをフラット化してデータフレームcafesに読み込みます。引数sepにはピリオドではなくアンダースコア(_)を指定します。dataの先頭を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Load json_normalize()
____
# Isolate the JSON data from the API response
data = ____
# Flatten business data into a dataframe, replace separator
cafes = ____(data["businesses"],
____)
# View data
print(cafes.head())