Pandas مكتبة قوية في بايثون لمعالجة البيانات وتحليلها. غالبًا ما تصل البيانات بتنسيق JSON، مما يتطلب تحويلها إلى DataFrame في Pandas لمعالجتها بكفاءة. تستعرض هذه المقالة طريقتين رئيسيتين لهذا التحويل: استخدام json_normalize()
و read_json()
، مع تسليط الضوء على نقاط القوة والضعف لكل منهما.
جدول المحتويات
معالجة JSON المعقدة بكفاءة باستخدام json_normalize()
تتفوق دالة json_normalize()
عند التعامل مع هياكل JSON المعقدة. فهي تقوم بتسطيح هذه البيانات الهرمية إلى تنسيق جدولي، مثالي لـ Pandas DataFrames. وبالرغم من أنها تتطلب فهمًا أعمق لهيكل JSON الخاص بك، إلا أنها توفر تحكمًا دقيقًا في DataFrame الناتج.
ضع في اعتبارك هذا المثال:
import pandas as pd
import json
json_data = """
[
{"id": 1, "name": "Alice", "address": {"street": "123 Main St", "city": "Anytown"}},
{"id": 2, "name": "Bob", "address": {"street": "456 Oak Ave", "city": "Otherville"}}
]
"""
data = json.loads(json_data)
df = pd.json_normalize(data, record_path=['address'], meta=['id', "name"])
print(df)
يقوم هذا الكود بتحميل JSON، ثم يستخدم json_normalize()
. record_path=['address']
يحدد حقل “address” المعقد للسطوح، بينما meta=['id', 'name']
يتضمن “id” و “name” كأعمدة بيانات وصفية. سيحتوي DataFrame الناتج على أعمدة “street”، “city”، “id”، و “name”.
مميزات json_normalize()
:
- يتعامل مع JSON المعقد: مثالي لـ JSON المعقد والهرمي.
- تحكم دقيق في التسطيح: تحكم دقيق في الحقول المدرجة وفي عملية التسطيح.
عيوب json_normalize()
:
- يتطلب معرفة بهيكل JSON: يعتمد استخدامه الفعال على فهم هيكل JSON الخاص بك.
- قد يكون معقدًا مع JSON شديد التعقيد: قد تكون الهياكل شديدة التعقيد مرهقة.
تبسيط JSON البسيط باستخدام read_json()
توفر دالة read_json()
نهجًا أكثر مباشرة، خاصةً لهياكل JSON البسيطة. فهي تقرأ بيانات JSON مباشرةً إلى Pandas DataFrame، وغالبًا ما يُفضل استخدامها مع كائنات JSON البسيطة أو عند العمل مع ملفات JSON.
إليك مثال:
import pandas as pd
import json
json_data = """
[
{"id": 1, "name": "Alice", "age": 30},
{"id": 2, "name": "Bob", "age": 25}
]
"""
df = pd.read_json(json_data)
print(df)
يقوم هذا الكود بقراءة سلسلة JSON مباشرةً إلى DataFrame، مع مراعاة هيكل JSON في أعمدة DataFrame.
مميزات read_json()
:
- بسيطة وسهلة الاستخدام: سهلة الاستخدام لهياكل JSON البسيطة.
- معالجة مباشرة لملفات JSON: تقرأ بيانات JSON من الملفات بكفاءة باستخدام مسارات الملفات.
عيوب read_json()
:
- معالجة محدودة لـ JSON المعقد: قد تواجه صعوبة مع JSON شديد التعقيد، وقد تتطلب معالجة مسبقة.
- تحكم أقل في التسطيح: يوفر تحكمًا أقل في هيكل DataFrame النهائي مقارنةً بـ
json_normalize()
.
الخاتمة:
كل من json_normalize()
و read_json()
قيّمتان لتحويل JSON إلى Pandas DataFrames. يعتمد الخيار الأفضل على تعقيد JSON الخاص بك والتحكم المطلوب في DataFrame الناتج. بالنسبة لـ JSON البسيط، يكفي استخدام read_json()
؛ وبالنسبة لـ JSON المعقد، يوفر json_normalize()
المرونة اللازمة لإنشاء DataFrame قابل للاستخدام. تذكر تثبيت pandas باستخدام pip install pandas
قبل تشغيل هذه الأمثلة.