تخزين البيانات المُجمعة بكفاءة
الحفظ بصيغ CSV/JSON/Parquet، والإلحاق الآمن، وإزالة التكرارات، والجمع التدريجي.
تخزين البيانات المُجمعة بكفاءة درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
من الردود الخام إلى البيانات المخزنة
بعد جمع البيانات، تحتاج إلى تخزينها حتى يمكن إعادة تحميلها ومشاركتها وتحليلها. ويُحدث اختيار التنسيق المناسب واتباع بعض العادات فرقًا كبيرًا في السرعة واستخدام القرص.
يتناول هذا الدرس CSV وParquet وإلحاق الدفعات وإزالة التكرارات.
تحويل JSON إلى DataFrame
تكون ردود API عادةً قوائم من القواميس. وتحول pd.DataFrame هذه البيانات مباشرةً إلى جدول جاهز للتخزين.
import pandas as pd
records = [
{"id": 1, "name": "A", "score": 9.5},
{"id": 2, "name": "B", "score": 8.0},
]
df = pd.DataFrame(records)
print(df)الحفظ بصيغة CSV باستخدام df.to_csv
يتميز CSV بأنه شامل وسهل القراءة للبشر. احفظ باستخدام to_csv، ومرّر index=False حتى لا يُكتب فهرس الصفوف كعمود زائد.
df.to_csv("data.csv", index=False)
# Reload
df2 = pd.read_csv("data.csv")حدود CSV
يتميز CSV بسهولة الاستخدام، لكنه يواجه عيوبًا في أعمال الذكاء الاصطناعي:
- لا توجد أنواع بيانات — إذ تُخزّن كل القيم كنص، ولذلك يُعاد تخمين dtypes عند التحميل
- ملفات كبيرة، ولا يوجد ضغط افتراضيًا
- بطء القراءة مع مجموعات البيانات الكبيرة
يُعد Parquet أفضل للبيانات الأكبر حجمًا أو التي تُحمّل مرارًا.
الحفظ بصيغة Parquet باستخدام df.to_parquet
Parquet هو تنسيق ثنائي عمودي. ويحافظ على أنواع البيانات، ويضغط البيانات بكفاءة، ويُحمّل أسرع بكثير من CSV.
يتطلب محركًا مثل pyarrow مثبتًا.
df.to_parquet("data.parquet", index=False)
df2 = pd.read_parquet("data.parquet")
print(df2.dtypes) # types preserved, no re-guessingCSV مقابل Parquet — متى تستخدم كلًا منهما؟
قاعدة عامة:
- CSV: للبيانات الصغيرة، والمشاركة مع أدوات غير Python، والفحص السريع
- Parquet: للبيانات الكبيرة، والتحميل المتكرر، والحفاظ على أنواع البيانات، وخطوط أنابيب التحليلات
بالنسبة إلى مهام الجمع التي تغذي النماذج، يُفضّل استخدام Parquet.
إلحاق دفعات جديدة باستخدام pd.concat
غالبًا ما يحدث الجمع على دفعات. ادمج DataFrame موجودًا مع آخر جديد باستخدام pd.concat.
يعيد ignore_index=True ترقيم الفهرس، بحيث يظل منظمًا.
new_batch = pd.DataFrame(new_records)
df = pd.concat([df, new_batch], ignore_index=True)
print(len(df))الإلحاق مباشرةً بملف CSV
لإلحاق البيانات بملف CSV موجود من دون تحميله، افتح الملف في وضع الإلحاق وتجاوز الترويسة عند عمليات الكتابة اللاحقة.
import os
header = not os.path.exists("data.csv")
new_batch.to_csv("data.csv", mode="a", header=header, index=False)لماذا إزالة التكرار
قد تؤدي إعادة تشغيل عملية الجمع، أو تداخل الصفحات، أو إعادة المحاولات إلى إنشاء صفوف مكررة. تزيد التكرارات من الأعداد، وقد تتسرب بين تقسيمات التدريب والاختبار، مما يضر بتقييم النموذج.
احرص دائمًا على إزالة التكرار بعد دمج الدفعات.
drop_duplicates(subset=[id])
استخدم مفتاحًا فريدًا ثابتًا، وغالبًا ما يكون id، مع drop_duplicates(subset=...). يزيل ذلك التكرارات حتى إذا تغيرت الحقول الأخرى قليلًا.
يحتفظ keep="last" بأحدث إصدار من كل معرّف.
df = df.drop_duplicates(subset=["id"], keep="last").reset_index(drop=True)
print(len(df), "unique rows")أداة مساعدة للحفظ والدمج
اجمع الخطوات معًا: حمّل ملف Parquet الموجود إذا كان متاحًا، ثم ادمج الدفعة الجديدة، وأزل التكرارات حسب المعرّف، واحفظ البيانات مجددًا. يمكنك تشغيل هذه العملية بأمان عدة مرات.
import os
import pandas as pd
def save_merge(new_df, path="data.parquet", key="id"):
if os.path.exists(path):
old = pd.read_parquet(path)
new_df = pd.concat([old, new_df], ignore_index=True)
new_df = new_df.drop_duplicates(subset=[key], keep="last")
new_df.to_parquet(path, index=False)
return new_dfتحقق سريع: اختيار التنسيق
تقوم بتحميل مجموعة بيانات كبيرة بشكل متكرر لتدريب النموذج، وتحتاج إلى الحفاظ على أنواع البيانات مع سرعة القراءة.
مراجعة: تخزين البيانات بكفاءة
أصبح بإمكانك الآن حفظ البيانات التي تجمعها بكفاءة:
pd.DataFrameلتحويل سجلات JSON إلى جدولto_csv(index=False)للنص القابل للنقل، وto_parquetللتخزين السريع مع الحفاظ على الأنواعpd.concat(ignore_index=True)أو وضع الإلحاق في CSV لمعالجة الدفعاتdrop_duplicates(subset=["id"])للحفاظ على فرادة الصفوف
التالي: العمل مع واجهات برمجة التطبيقات العامة الحقيقية.
الأسئلة الشائعة
هل درس «تخزين البيانات المُجمعة بكفاءة» مجاني؟
نعم — نص درس «تخزين البيانات المُجمعة بكفاءة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «تخزين البيانات المُجمعة بكفاءة»؟
الحفظ بصيغ CSV/JSON/Parquet، والإلحاق الآمن، وإزالة التكرارات، والجمع التدريجي. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تخزين البيانات المُجمعة بكفاءة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات REST API لجمع البيانات
- تقسيم الصفحات وجمع مجموعات البيانات الكبيرة
- تخزين البيانات المُجمعة بكفاءة
- العمل مع واجهات برمجة التطبيقات للبيانات العامة