قراءة JSON المتداخلة مع الكائنات المتداخلة كإطار بيانات Pandas
عند التعامل مع بيانات JSON التي تحتوي على كائنات متداخلة، فإن معالجتها بكفاءة في Python أمر بالغ الأهمية . يوفر Pandas أداة قوية لتحقيق ذلك - json_normalize.
توسيع المصفوفة إلى أعمدة
لتوسيع مصفوفة المواقع إلى أعمدة منفصلة، استخدم json_normalize كما يلي:
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)
سيؤدي ذلك إلى إنشاء إطار بيانات يحتوي على أعمدة موسعة:
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 التي تحتوي على كائنات متعددة، يعتمد النهج على بنية البيانات المطلوبة.
الاحتفاظ بالأعمدة الفردية
للاحتفاظ بالأعمدة الفردية (التاريخ والرقم والاسم والمواقع)، استخدم ما يلي:
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)
سيؤدي ذلك إلى تجميع البيانات وتسلسل المواقع:
date name number locations 0 2016-01-10 R 3932 Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...
تسوية بنية البيانات
إذا كنت تفضل بنية بيانات مسطحة، فيمكنك ذلك استخدم json_normalize مع الإعدادات التالية:
df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])
print(df)
سيؤدي ذلك إلى إخراج البيانات في جدول واحد:
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
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3