Pandas DataFrame としてネストされたオブジェクトを含むネストされた JSON を読み取る
ネストされたオブジェクトを含む JSON データを扱う場合、Python で効率的に操作することが重要です。 Pandas は、これを実現するための強力なツール json_normalize を提供します。
配列を列に拡張する
location 配列を個別の列に拡張するには、次のように json_normalize を使用します。
<code class="python">import json 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>
これにより、拡張された列を持つデータフレームが作成されます:
locations_arrTime locations_arrTimeDiffMin locations_depTime \ 0 06:32 1 06:37 1 06:40 2 08:24 1 locations_depTimeDiffMin locations_name locations_platform \ 0 0 Spital am Pyhrn Bahnhof 2 1 0 Windischgarsten Bahnhof 2 2 Linz/Donau Hbf 1A-B locations_stationIdx locations_track number name date 0 0 R 3932 R 3932 01.10.2016 1 1 R 3932 01.10.2016 2 22 R 3932 01.10.2016
複数の JSON オブジェクトの処理
複数のオブジェクトを含む JSON ファイルの場合、このアプローチは目的のデータ構造によって異なります。
個々の列を保持する
個々の列 (日付、番号、名前、場所) を保持するには、次を使用します:
<code class="python">df = pd.read_json('myJson.json') df.locations = pd.DataFrame(df.locations.values.tolist())['name'] df = df.groupby(['date', 'name', 'number'])['locations'].apply(','.join).reset_index() print(df)</code>
これにより、データがグループ化され、場所が連結されます。
date name number locations 0 2016-01-10 R 3932 Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...
データ構造をフラット化します
フラット化されたデータ構造を希望する場合は、次のことができます。次の設定で json_normalize を使用します:
<code class="python">df = pd.read_json('myJson.json', orient='records', convert_dates=['date']) print(df)</code>
これにより、単一のテーブルにデータが出力されます:
number date name ... locations.arrTimeDiffMin locations.depTimeDiffMin locations.platform 0 R 3932 2016-01-10 R 3932 ... 0 0 2 1 R 3932 2016-01-10 R 3932 ... 1 0 2 2 R 3932 2016-01-10 R 3932 ... 1 - 1A-B
以上がPandas でネストされた JSON オブジェクトを DataFrame として管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。