json_normalizeの基本的な使い方
json_normalize
は、Pandasライブラリの一部で、ネストされたJSONデータをフラットなテーブル形式に変換するための便利な関数です。
以下に基本的な使い方を示します。
import pandas as pd
from pandas.io.json import json_normalize
# ネストされたJSONデータ
data = [
{'name': 'John', 'age': 30, 'job': {'title': 'developer', 'skills': ['python', 'javascript']}},
{'name': 'Mary', 'age': 25, 'job': {'title': 'data scientist', 'skills': ['python', 'R']}}
]
# json_normalizeを使用してデータをフラット化
df = pd.json_normalize(data, 'job')
print(df)
このコードは、ネストされたJSONデータをフラットなデータフレームに変換します。json_normalize
関数は、ネストされた構造を持つJSONデータを扱う際に非常に便利です。
次のセクションでは、set_index
と組み合わせた使用方法について説明します。この組み合わせにより、より複雑なデータ構造を効率的に扱うことができます。
set_indexとの組み合わせ
Pandasのset_index
関数は、データフレームの任意の列をインデックスに設定するための関数です。これは、特定の列を基準にデータを整理したり、特定の行を効率的に抽出したりする際に便利です。
json_normalize
でフラット化したデータフレームに対してset_index
を適用することで、より柔軟なデータ操作が可能になります。
以下にその例を示します。
# json_normalizeでフラット化したデータフレーム
df = pd.json_normalize(data, 'job')
# 'title'列をインデックスに設定
df.set_index('title', inplace=True)
print(df)
このコードは、’title’列を新たなインデックスとして設定します。これにより、職種(’title’)に基づいてデータを抽出したり、分析したりすることが容易になります。
次のセクションでは、これらの技術を組み合わせた実践的な例を紹介します。
実践的な例と解説
ここでは、json_normalize
とset_index
を組み合わせた実践的な例を紹介します。この例では、ネストされたJSONデータから特定の情報を抽出し、それを基にデータ分析を行います。
import pandas as pd
from pandas.io.json import json_normalize
# ネストされたJSONデータ
data = [
{'name': 'John', 'age': 30, 'job': {'title': 'developer', 'skills': ['python', 'javascript']}},
{'name': 'Mary', 'age': 25, 'job': {'title': 'data scientist', 'skills': ['python', 'R']}}
]
# json_normalizeでフラット化
df = pd.json_normalize(data, 'job')
# 'title'列をインデックスに設定
df.set_index('title', inplace=True)
# 'developer'のスキルを抽出
developer_skills = df.loc['developer', 'skills']
print(developer_skills)
このコードは、’developer’という職種のスキルを抽出します。set_index
を使用して職種をインデックスに設定したため、loc
関数を使用して特定の職種のデータを効率的に抽出することができます。
このように、json_normalize
とset_index
を組み合わせることで、ネストされたJSONデータを効率的に操作し、特定の情報を抽出することが可能になります。これらの関数は、データ分析やデータ前処理において非常に便利なツールです。