始める無料で始める

入れ子のJSONをフラット化する

JSONデータの特徴として、入れ子(ネスト)にできる点があります。属性の値が、さらに属性と値の組で構成されることがあるのです。こうしたネストされたデータは、展開して別々のデータフレーム列に「フラット化」すると、より扱いやすくなります。pandas.io.json サブモジュールには、まさにそれを行う json_normalize() という関数があります。

Yelp APIのレスポンスデータはネストされています。ここでは、coordinates 列と location 列の次のレベルのデータをフラット化してください。

pandaspd)と requests はインポート済みで、API呼び出しの結果は response に保存されています。

この演習はコースの一部です

pandasで効率よくデータを取り込む

コースを見る

演習の手順

  • pandasio.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())
コードを編集して実行