إضافة أعمدة إلى DataFrame باستخدام قاموس في بايثون
تعتبر الباندا (Pandas) من المكتبات الأساسية في لغة البرمجة بايثون (Python) لتحليل البيانات، حيث توفر أدوات متعددة لمعالجة البيانات بطريقة فعالة وسهلة. إحدى المهام الشائعة التي قد تواجهها أثناء العمل مع إطار البيانات (DataFrame) هي إضافة أعمدة جديدة من قاموس أومجموعة من القواميس، والتي قد تحتوي على سمات مختلفة لكل صف. في هذا المقال، سنستعرض كيفية إضافة أعمدة إلى إطار البيانات من قاموس باستخدام بايثون بالإضافة إلى تقديم نصائح حول التعامل مع حالات البيانات المتغيرة.
إضافة أعمدة إلى إطار البيانات باستخدام قواميس
بدايةً، إذا كان لديك إطار بيانات بالفعل، مثل:
import pandas as pd
df = pd.DataFrame({"id": [0, 1, 2, 3, 4]})
هنا لدينا إطار بيانات يحتوي على عمود "id" يحدد المعرفات. الآن، إذا كنت تستعلم عن واجهة برمجة التطبيقات (API) وترجع نتائج على شكل قواميس، مثل:
response = {"id": 0, "values": {"first_name": "Bob", "last_name": "Smith"}}
يمكنك إضافة القيم إلى إطار البيانات بشكل ديناميكي. لنفترض أنك حصلت على استجابة API متعددة وقد تحتوي على سمات مختلفة أو جديدة لكل معرف.
كيفية التعامل مع القيم المتغيرة
لإضافة القيم بمرونة إلى إطار البيانات، يمكن أن تتبع الخطوات التالية:
- تحويل القاموس إلى إطار بيانات: قم أولاً بتحويل القاموس الذي تستلمه إلى إطار بيانات. يمكن لمحفظة القيم أن تحتوي على سمات مختلفة، لذلك تأكد من استخدام الطريقة المناسبة. يمكنك استخدام
pd.json_normalize()
لهذه الغاية.
new_data = pd.json_normalize(response)
- دمج البيانات: بعد تحويل القاموس إلى إطار بيانات، يمكنك دمج البيانات الأصلية مع البيانات الجديدة. يمكن استخدام
pd.concat()
لتحقيق ذلك.
df = pd.concat([df, new_data], axis=1)
- التأكد من عدم فقدان المعلومات: في حالة كون العمود الموجود بالفعل، يمكنك استخدام وظيفة
combine_first()
أوupdate()
للـ DataFrame. هذا يمكن أن يكون مفيدًا لضمان عدم فقدان أي معلومات.
نموذج كامل
إليك نموذجًا كاملًا يوضح كيفية إضافة الأعمدة من القاموس إلى إطار البيانات، مع الأخذ في الاعتبار أن السمات قد تتغير في كل مرة:
import pandas as pd
# إنشاء إطار بيانات
df = pd.DataFrame({"id": [0, 1, 2, 3, 4]})
# استجابة API
responses = [
{"id": 0, "values": {"first_name": "Bob", "last_name": "Smith"}},
{"id": 1, "values": {"first_name": "Alice"}},
{"id": 2, "values": {"last_name": "Johnson"}},
]
# معالجة كل استجابة
for response in responses:
new_data = pd.json_normalize(response['values'])
# دمج البيانات
df = pd.concat([df[df['id'] == response['id']], new_data], axis=1)
print(df)
التعامل مع المتغيرات المعقدة
إذا كنت تتعامل مع بيانات معقدة أكثر، فإن استخدام مكتبات أخرى مثل json
قد يساعد في تعزيز القدرة على معالجة البيانات. يمكنك استخدام json.loads
لتحويل البيانات النصية إلى هياكل يمكن العمل بها.
الإيجابية في استخدام الباندا
تعتبر مكتبة الباندا في بايثون أداة قوية ومرنة، مما يسمح لك بالتكيف مع مختلف أنواع البيانات والتعامل معها بسهولة. من خلال استخدام الأساليب الصحيحة، يمكنك تعديل إطار البيانات بطريقة تلبي احتياجاتك واحتياجات مشروعك.
في الختام، عبر إضافة أعمدة إلى إطار البيانات من قاموس أو استجابة API، يمكنك تحسين البيانات التي تعمل معها. يتيح لك بايثون، خاصة باستخدام مكتبة الباندا، التعامل مع البيانات المفككة وجعلها مرتبة وجاهزة للتحليل. تحت أي ظرف من الظروف، كن مستعدًا لتعديل الكود الخاص بك للتكيف مع السمات المختلفة التي قد تواجهها في بيئتك البرمجية.