محتويات الدورة

تحليل البيانات / الأساسي: الأسئلة والجداول الموثوقة / الدرس 2

أنواع البيانات والقياس وقراءة CSV

اقرأ النص الجدولي بمخطط صريح، وميّز المعرفات من الكميات ووحدات القياس والترميز قبل إجراء الحساب.

وقت القراءة التقريبي: 5 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تصنيف المعرفات والفئات والأعداد والقياسات المستمرة وفق معناها.
  • قراءة CSV المقتبس دون تخمين النوع من شكل القيمة.
  • توحيد الوحدات بقواعد معلنة مع الاحتفاظ بالقيم الأصلية.

قد يكون ما يشبه العدد مجرد تسمية

المعرف 003 تسمية وليس كمية يصح أخذ متوسطها. ليس للفئة الاسمية ترتيب ضمني، بينما يحدد المقياس الرتبي ترتيباً دون ضمان تساوي المسافات. تختلف العمليات المناسبة للأعداد والقياسات، وقد يختلف معنى الصفر فيها. يجب أن يوضح قاموس الحقول تفسير كل حقل وقيمه المقبولة ووحدته وعلامات الغياب فيه.

نوع التخزين مختلف عن نوع التحليل. تبدأ خلية CSV نصاً، وقد يخزن float في Python رمز فئة دون أن يصبح جمعه مفيداً. اختر التمثيل بعد فهم دور الحقل. احفظ الأصفار البادئة في المعرفات، ولا تستنتج تاريخاً تقويمياً من نمط عددي ملتبس لمجرد أن تحويله ممكن.

CSV صيغة ذات قواعد وليست فصلاً على الفاصلة

قد تحتوي CSV فواصل داخل اقتباس ونهايات أسطر مضمّنة واقتباسات مهربة وفواصل من أنواع مختلفة. استخدم محللاً مضبوطاً وفق الصيغة الموثقة بدلاً من تقسيم كل سطر يدوياً. عند قراءة ملف نصي فعلي، حدد الترميز وافتحه مع newline="" لوحدة csv. ويظل الصف المقبول بحاجة إلى فحص العنوان والعرض والمجال.

يحفظ البرنامج الأول المعرف نصاً ويفسر المبلغ العشري صراحة. تحتوي المنطقة المقتبسة فاصلة لكنها تظل حقلاً واحداً. يتجنب إنشاء Decimal من النص التحويل الأولي إلى عائم ثنائي، لكنه لا يقرر تلقائياً قاعدة التقريب أو المعنى التجاري للمبلغ.

python اقرأ الحقل المقتبس واحفظ هوية المعرف
import csv
import io
from decimal import Decimal

source = io.StringIO('id,region,amount\n003,"North, west",12.50\n', newline="")
row = next(csv.DictReader(source))
amount = Decimal(row["amount"])
print(f'id={row["id"]} region={row["region"]} amount={amount}')
الناتج المتوقع
id=003 region=North, west amount=12.50

تبقى الفاصلة داخل حقل المنطقة، ويظل 003 معرفاً من ثلاثة محارف. لا تحول الشيفرة الرمز إلى العدد 3.

اجعل المخطط يحول الافتراضات إلى فحوص

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

يفيد استنتاج الأنواع في الاستكشاف، لكنه خطر إذا صار عقد تشغيل غير مسجل. قد تغير قيمة مجهولة متأخرة نوع عمود بدأت قيمه أعداداً صحيحة. راجع dtype وخيارات الغياب في pandas صراحة؛ ولا تُنفذ أمثلتها هنا لغياب الحزمة محلياً. ينطبق التفكير في المخطط على الأدوات الأخرى أيضاً.

وحّد الوحدات بقاعدة معروفة وقابلة للتدقيق

يحول البرنامج الثاني الملي ثانية إلى ثانية بعامل معلن. احفظ وحدة المصدر وحقل القيمة الخام في طبقة التدقيق؛ ولا تستبدل عمود duration بوحدة مختلفة دون تحديث عقده. قد يفسر اختلاف الوحدة فرقاً قدره ألف ضعف، لا مشاهدة استثنائية بالضرورة.

تحتاج بعض التحويلات إزاحة إضافة إلى الضرب، كما يحدث بين مقاييس حرارة ذات أصفار مختلفة. وتختلف المنطقة الزمنية عن المدة المنقضية: يحدد الطابع لحظة أو وقتاً مدنياً محلياً، بينما تقيس المدة فاصلاً. حدد التفسير قبل طرح القيم أو توزيعها على مجموعات زمنية.

python حوّل وحدة القياس بعامل صريح
milliseconds = [1000, 2500]
seconds = [value / 1000 for value in milliseconds]
print("seconds", ",".join(f"{value:.1f}" for value in seconds))
الناتج المتوقع
seconds 1.0,2.5

تعطي القسمة على 1000 القيمة 1.0 ثانية من 1000 ملي ثانية، و2.5 ثانية من 2500 ملي ثانية، دون تغيير معنى القياس.

وثّق الدقة والترميز ومعالجة النص

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

قد يغير خطأ الترميز أو تطبيع Unicode الفئات أو نتائج الربط. استخدم ترميزاً معروفاً وافحص فشل فك النص واحفظ الرموز الأصلية قبل توحيدها. حذف الفراغ أو تجاهل حالة الأحرف تحويل مجال قد يدمج تسميتين مختلفتين. يقدم المحلل قيماً مرشحة فقط؛ وتظل صلاحيتها مرتبطة بمعناها الموثق.

الأخطاء الشائعة وإصلاحها

أصبح المعرف 003 هو العدد 3.

لماذا يحدث؟
عامل استنتاج النوع التسمية كعدد فأضاع الأصفار ذات المعنى.
كيف تصلحه؟
احفظ المعرف نصاً منذ مرحلة القراءة الأولى ولا تصلحه بعد فقد هويته.
كيف تتجنب تكراره؟
حدد أنواع المعرفات قبل استيراد الملف.

أنشأت فاصلة داخل الاقتباس عموداً إضافياً.

لماذا يحدث؟
فُصل النص يدوياً دون تطبيق قواعد اقتباس CSV.
كيف تصلحه؟
استخدم وحدة csv بإعدادات الفاصل والاقتباس المناسبة للمصدر.
كيف تتجنب تكراره؟
اختبر الفواصل المقتبسة ونهايات الأسطر الداخلية.

اختلفت القياسات بعامل يساوي 1000.

لماذا يحدث؟
اختلطت قيم بالثواني مع أخرى بالملي ثانية في العمود نفسه.
كيف تصلحه؟
وحّدها وفق قاعدة وحدة موثقة، مع حفظ الخام ووحدته.
كيف تتجنب تكراره؟
ضع الوحدات في القاموس واختبر التحويل عدديّاً.

اختبر فهمك

1. لماذا لا يصح متوسط الرمزين البريديين 0012 و1200 رغم نجاح int؟

اعرض الحل المشروح

يحدد الرمزان منطقتين ولا يقيسان كمية ذات معنى بريدي قابل للمتوسط. يزيل التحويل أيضاً الصفر البادئ من الهوية. احفظهما نصين وعد الفئات، واربط بقاموس مناطق متحقق منه إن تطلب السؤال الجغرافي ذلك. لا يثبت نجاح التحليل العددي أن مقياس القياس يسمح بالحساب.

2. ما الفحوص اللازمة قبل جمع عمود مبلغ مستورد من CSV؟

اعرض الحل المشروح

تحقق من العناوين الفريدة والعرض، واحفظ المعرفات نصوصاً، وحدد الفراغ والمجهول، ثم فسر المبلغ وفق الاصطلاح العشري والعملة. ارفض التالف وخارج المجال وصرح هل يسمح بتسوية سالبة. طابق المقبول والمرفوض بالمدخل واحفظ الرموز الخام للتشخيص، بدلاً من تحويل كل فشل إلى صفر.

أهم ما تعلمته

  • يسبق المعنى التحليلي اختيار نوع التخزين أو تحويله.
  • قراءة CSV وفحص المخطط والتحقق من المجال مراحل منفصلة.
  • تنتمي الوحدة والترميز والدقة وعلامات الغياب إلى عقد البيانات.

المراجع الرسمية