البرمجة

تحويل وتنظيم بيانات JSON باستخدام Pandas في Python

عند التعامل مع DataFrame في Pandas وترتيب البيانات المتنوعة التي قد تحتوي على هيكل معقد، يمكن أن يكون الأمر تحديًا. في موقفك، حيث تريد تحويل بعض الأعمدة إلى أعمدة جديدة بناءً على القيم في عمود معين، يمكنك استخدام دالة pivot_table بشكل مختلف للوصول إلى النتيجة المرجوة.

قبل أن نبدأ، دعني أشير إلى أن هناك تعديلات بسيطة يجب إجراؤها على البيانات لضمان النجاح في هذا السياق. على وجه التحديد، يجب أن تكون لديك عمودين فقط (value و value_id) اللذين ستقوم بتحويلهما إلى أعمدة جديدة.

لنقم بتنفيذ ذلك:

python
import pandas as pd import simplejson as json # البيانات الأصلية json_str = '''{"preferred_timestamp": "internal_timestamp", "internal_timestamp": 3606765503.684, "stream_name": "ctdpf_j_cspp_instrument", "values": [{ "value_id": "temperature", "value": 9.8319 }, { "value_id": "conductivity", "value": 3.58847 }, { "value_id": "pressure", "value": 22.963 }] }''' # تحويل البيانات إلى DataFrame df = pd.json_normalize(json.loads(json_str), 'values', ['preferred_timestamp', 'stream_name', 'internal_timestamp']) # إجراء التحويل اللازم pivot_df = df.pivot_table(index=['stream_name', 'preferred_timestamp', 'internal_timestamp'], columns='value_id', values='value', aggfunc='first').reset_index() # إعادة ترتيب الأعمدة pivot_df = pivot_df[['stream_name', 'preferred_timestamp', 'internal_timestamp', 'conductivity', 'pressure', 'salinity', 'temperature']] # طباعة النتيجة print(pivot_df)

باستخدام pivot_table بشكل صحيح، ستحصل على DataFrame الذي يحتوي على الهيكل الذي تريده، حيث تكون القيم في عمود “value_id” قد تم تحويلها إلى أعمدة منفصلة.

المزيد من المعلومات

في هذا السياق، يمكننا النظر في بعض التفاصيل حول كيفية تحقيق هذا الهدف باستخدام Pandas وتحويل البيانات في DataFrame.

أولًا وقبل كل شيء، يُظهر الكود المقدم كيف يمكن قراءة البيانات من ملف JSON وتحويلها إلى DataFrame باستخدام json_normalize. هذا يعتبر خطوة مهمة عند التعامل مع بيانات JSON المدمجة.

بعد ذلك، يتم استخدام pivot_table لتحويل البيانات وترتيبها بشكل صحيح. في هذا السياق، تم استخدام الدالة مع المعاملات التالية:

  • index=['stream_name', 'preferred_timestamp', 'internal_timestamp']: هنا يتم تحديد العمود الذي سيتم استخدامه لتصنيف البيانات.
  • columns='value_id': يتم استخدام هذا لتحديد العمود الذي سيتم استخدامه لإنشاء أعمدة جديدة.
  • values='value': هنا يتم تحديد العمود الذي يحتوي على القيم التي سيتم تحويلها.
  • aggfunc='first': يتم استخدام هذا لتحديد كيفية التعامل مع القيم المتكررة. في هذه الحالة، تم اختيار أخذ القيمة الأولى.

ثم تم إعادة ترتيب الأعمدة للحصول على الهيكل الذي تريده.

يعتبر هذا الأسلوب فعالًا لتحويل البيانات وترتيبها بشكل مناسب في DataFrame باستخدام Pandas، ويمكن تكامله في سياقات أوسع لتحليل البيانات واستخراج الإحصائيات المطلوبة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر