ホームページ  >  記事  >  バックエンド開発  >  Pandas でネストされた JSON オブジェクトを DataFrame として管理するにはどうすればよいですか?

Pandas でネストされた JSON オブジェクトを DataFrame として管理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-24 14:07:02874ブラウズ

How to Manage Nested JSON Objects as a DataFrame in Pandas?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。