ホームページ > バックエンド開発 > Python チュートリアル > ネストされた JSON データを Pandas DataFrame にインポートして処理するにはどうすればよいですか?

ネストされた JSON データを Pandas DataFrame にインポートして処理するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-24 11:40:02
オリジナル
908 人が閲覧しました

How to Import and Process Nested JSON Data into Pandas DataFrames?

ネストされた JSON ファイルを Pandas DataFrame として読み取る

ネストされたオブジェクトを含む JSON データを操作する場合、それをより多くのデータフレームに変換する必要がある場合があります。分析または操作のための構造化フォーマット。 Pandas は、このようなデータを効率的に処理するための便利なツールを提供します。

シナリオ:

次の構造の JSON ファイルを考えてみましょう:

<code class="json">{
    "number": "",
    "date": "01.10.2016",
    "name": "R 3932",
    "locations": [
        { ... },
        { ... },
        { ... }
    ]
}</code>
ログイン後にコピー

json_normalize の使用:

json_normalize 関数を使用すると、ネストされた JSON を DataFrame にフラット化できます。指定された JSON に対して、次の操作を実行できます:

<code class="python">import pandas as pd

with open('myJson.json') as data_file:    
    data = json.load(data_file)  

df = pd.json_normalize(data, 'locations', ['date', 'number', 'name'], 
                    record_prefix='locations_')
print (df)</code>
ログイン後にコピー

これにより、次の列を持つ DataFrame が作成されます:

ネストされたデータを保持するための拡張:

ネストされた配列をそのまま保持したい場合は、解析パラメーターを指定して read_json を使用できます。これにより、JSON が解析されて、location 列を辞書のリストとして含む DataFrame が作成されます。

<code class="python">df = pd.read_json("myJson.json", orient='records', parsing = True)</code>
ログイン後にコピー

または、コンストラクター パラメーターを使用して、location 列を解析することもできます。

<code class="python">df = pd.read_json("myJson.json", orient='records',
                  constructor=lambda x: pd.DataFrame(x['locations']))</code>
ログイン後にコピー

ネストされた値の連結:

location 列の値を 1 つの文字列に結合する場合は、groupby 関数と apply 関数を使用できます:

<code class="python">df = df.groupby(['date', 'name', 'number'])['locations'].apply(','.join).reset_index()</code>
ログイン後にコピー

以上がネストされた JSON データを Pandas DataFrame にインポートして処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート