<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>حسوب I/O - مساهمات المستخدم ahmedabdeltawab</title>
		<description>المساهمات التي أرسلها ahmedabdeltawab - حسوب I/O</description>
		<language>ar</language>
		<generator>حسوب I/O</generator>
		<item>
			<title>رأس ملفك يكذب: كيف كادت ٩٬٢٩١ فاتورة تختفي بصمت</title>
			<pubDate>Sat, 12 Sep 2026 14:37:51 +0000</pubDate>
			<link>https://io.hsoub.com/python/185428-%D8%B1%D8%A3%D8%B3-%D9%85%D9%84%D9%81%D9%83-%D9%8A%D9%83%D8%B0%D8%A8-%D9%83%D9%8A%D9%81-%D9%83%D8%A7%D8%AF%D8%AA-%D9%81%D8%A7%D8%AA%D9%88%D8%B1%D8%A9-%D8%AA%D8%AE%D8%AA%D9%81%D9%8A-%D8%A8%D8%B5%D9%85%D8%AA</link>
			<description><![CDATA[بيانات المعاملات الحقيقية لا تكون نظيفة أبداً — والأسوأ أنها تبدو نظيفة. هذه قصة قصيرة من مجموعة بيانات حقيقية (UCI Online Retail: ٥٤١٬٩٠٩ معاملة تجارة إلكترونية) عن أهدأ طريقة لتدمير البيانات: التحويل الصامت لنوع العمود. كل الأرقام أدناه منقولة حرفياً من دفتر مُنفَّذ. الصفوف الأولى تبدو مثالية  ألقِ نظرة على أول صفوف الملف، وستجد عمود رقم الفاتورة InvoiceNo يُقرأ أعداداً صحيحة نظيفة — نسبة قراءة ١٠٠٪، ثقة كاملة. أي خطوة استنتاج تلقائي للأنواع — بما فيها أداتي — ستحكم أنه int64 وتمضي. لكن قِس الملف كله لا رأسه، فتهبط النسبة إلى نحو ٩٨٪. والـ٢٪ الباقية: فواتير تبدأ بحرف &quot;C&quot; — وهو في هذه البيانات علامة الإلغاء. حوّل العمود إلى رقمي، فيصير كل واحد منها NaN: Invoice numbers destroyed by numeric coercion: 9,291 DextraLoaderWarning: column &#39;InvoiceNo&#39;: ambiguous - float64 at parse_rate=0.98 فئة كاملة من أحداث العمل — اختفت بصمت. لا استثناء، لا انهيار. وهذا ما يجعل التحويل الصامت أهدأ خطأ في عالم البيانات: الأنبوب ينجح. لماذا تهم هذه الصفوف الـ٩٬٢٩١؟  ليست ضجيجاً. إنها جانب المرتجعات من العمل كله: طلبات ملغاة تساوي ٨٫٤٪ من إجمالي المبيعات. أضعها، ويصبح كل رقم إيراد بعدها خاطئاً بهدوء. ومثال واحد على ما تكشفه: المنتج الأول مبيعاً في الظاهر — &quot;PAPER CRAFT, LITTLE BIRDIE&quot; بقيمة ١٦٨٬٤٧٠ جنيهاً إسترلينياً — وهمٌ. طلب واحد بـ٨٠٬٩٩٥ وحدة أُدخل الساعة ٩:١٥ صباحاً وأُلغي كاملاً الساعة ٩:٢٧ من الصباح نفسه. لا يكشفه إلا صفوف الإلغاء المحفوظة. والأكثر مبيعاً الحقيقي؟ حامل كعك. الحل: المعرّفات أسماء لا كميات  لا تستطيع أي مكتبة أن تعرف أن &quot;رقم الفاتورة&quot; معرّف لا كمية — هذه معرفة مجال. لكن ما تستطيعه الأداة هو أن تفصح عن تخمينها وتسلّمك خطة قابلة للتصحيح وإعادة التشغيل: naive, plan = dx.load(CSV_PATH, return_params=True) # يحذّر: غامض عند 0.98 plan[&quot;columns&quot;][&quot;InvoiceNo&quot;][&quot;dtype&quot;] = &quot;object&quot; # الفواتير أسماء plan[&quot;columns&quot;][&quot;StockCode&quot;][&quot;dtype&quot;] = &quot;object&quot; # وأكواد المنتجات كذلك df = dx.load(CSV_PATH, params=plan) # إعادة تشغيل حتمية Cancellation invoices preserved: 9,288 InvoiceNo values lost: 0 صار التصحيح كوداً موثقاً قابلاً للإصدار — لا خلية غامضة شغّلها أحدهم مرة ونسيها. ثلاث عادات علّمتني إياها هذه القصة  ١) لا تثق برأس الملف أبداً. الصفوف الأولى تُقرأ نظيفة ١٠٠٪؛ الحقيقة تسكن في نسبة قراءة الملف كاملاً. قِس كل خلية. ٢) صرّح بالمعرّفات صراحةً. أرقام الفواتير، أكواد المنتجات، أرقام الهواتف، الرموز البريدية — تبدو أرقاماً وليست أرقاماً. سطر واحد في المخطط يمنع هذه الفئة كلها من الأخطاء. ٣) افصل، لا تحذف. الإطار النهائي هنا ثلاثة إطارات: مبيعات (٥٣٠٬١٠٤ صفاً، ٩٧٫٨٪) · مرتجعات (٩٬٢٨٨، ١٫٧٪) · شواذ (٢٬٥١٧، ٠٫٥٪). الصفوف المحذوفة لا تجيب عن أسئلة لاحقة؛ المفصولة تجيب — وجدول المرتجعات هو الذي كشف المنتج الوهمي. جرّبها بنفسك  المسار كاملاً — من ملف CSV فوضوي إلى قرار عمل، وكل خطوة تطبع ما فعلته ولماذا — منشور مُنفَّذاً بالكامل على Kaggle: https://www.kaggle.com/code/ahmedabdeltawab40/rescuing-9-291-invoices-from-coercion-pydextra يعمل على مكتبة pydextra (pip install pydextra، رخصة MIT) — مكتبة صغيرة بنيتها حول فكرة واحدة: كل دالة تطبع سطر Decision: يشرح ما فعلته ولماذا. وللشفافية: هذا مشروع تعليمي-عملي شخصي، لا بديلاً عن pandas — فـpandas هي المحرك تحته.  GitHub: https://github.com/ahmedabdeltawab602-collab/dextra  الوثائق: https://ahmedabdeltawab602-collab.github.io/dextra/  الأصل الإنجليزي لهذا المقال على dev.to: https://dev.to/ahmedabdeltawab/the-head-of-your-csv-is-lying-how-9291-invoice-numbers-almost-vanished-3891  البيانات: Chen, D. (2015). Online Retail. UCI Machine Learning Repository. DOI 10.24432/C5BW33 — رخصة CC BY 4.0.]]></description>
		</item>
	</channel>
</rss>
