ادغام CSV با Python؛ بررسی تعداد ردیف‌ها بدون پاک‌سازی داده

چرا مهم است

اگر فایل‌های ماهانه را کنار هم می‌گذاری، این آموزش روشی برای مقایسهٔ تعداد ردیف‌های ورودی و خروجی نشان می‌دهد. می‌توانی ببینی هر فایل چند ردیف وارد کرده، بدون اینکه ردیف‌های تکراری حذف شوند.

قبل از خواندن، این‌ها را بدان۳ مفهوم
standard library

مجموعهٔ ابزارها و library‌هایی که همراه یک زبان برنامه‌نویسی ارائه می‌شوند و برای استفاده از آن‌ها به نصب بستهٔ جداگانه نیازی نیست.

بیشتر: standard library

CSV

قالبی برای ذخیرهٔ داده‌های جدولی در فایل متنی که مقدارهای هر ردیف معمولاً با ویرگول از هم جدا می‌شوند.

در حال نگارش: CSV

BOM

نشانه‌ای در ابتدای برخی فایل‌های متنی که می‌تواند نوع encoding یا ترتیب byte‌ها را مشخص کند.

در حال نگارش: BOM

وقتی هر ماه یک فایل CSV از فروشگاه یا ابزار گزارش‌گیری دریافت می‌شود، کنار هم گذاشتن آن‌ها فقط بخشی از کار است؛ باید بررسی کرد که در این فرایند ردیفی از دست نرفته باشد. این آموزش یک script در Python معرفی می‌کند که فایل‌ها را ادغام می‌کند و تعداد ردیف‌های هر فایل، مجموع ورودی و مجموع خروجی را گزارش می‌دهد. ابزارهای اصلی آن csv،؜ argparse و pathlib از standard library هستند و به pandas نیازی ندارد. پیش‌نیاز آموزش Python 3.9 یا جدیدتر است.

در مرحلهٔ اول، فقط فایل‌های دارای پسوند .csv در سطح اول پوشه انتخاب و بر اساس نام مرتب می‌شوند. در نمونهٔ آموزش، این ترتیب باعث می‌شود فایل‌های ماهانه پشت سر هم قرار بگیرند. سپس csv.DictReader اولین ردیف هر فایل را به‌عنوان header می‌خواند. فایل با encoding برابر utf-8-sig باز می‌شود تا خروجی UTF-8 ابزارهایی مانند Excel که ممکن است با BOM شروع شود نیز خوانده شود.

ردیف‌های کاملاً خالی کنار گذاشته می‌شوند و در هیچ‌کدام از دو سمت مقایسه شمرده نمی‌شوند؛ اما وجود حتی یک خانهٔ غیرخالی برای نگه‌داشتن ردیف کافی است. اگر فایل‌ها ستون‌های متفاوتی داشته باشند، خروجی همهٔ ستون‌ها را به ترتیب اولین مشاهده نگه می‌دارد. مقدار ستون‌هایی که در یک ردیف وجود ندارند، خالی نوشته می‌شود. نام‌هایی مانند order_id و Order ID هم دو ستون جدا محسوب می‌شوند.

این script پاک‌سازی داده انجام نمی‌دهد: تاریخ‌ها را یکدست نمی‌کند، مبلغ‌ها را تفسیر نمی‌کند و نام ستون‌ها را تغییر نمی‌دهد. ردیف‌های کاملاً تکراری را هم فقط می‌شمارد و نگه می‌دارد. معیار تکراری‌بودن، یکسان‌بودن مقدار همهٔ ستون‌هاست؛ حتی یک فاصلهٔ اضافی در انتهای یک خانه می‌تواند دو ردیف را متفاوت کند.

داده‌های نمونه کاملاً ساختگی‌اند. سه فایل به‌ترتیب ۴، ۵ و ۳ ردیف دارند؛ بنابراین نتیجهٔ مورد انتظار ۱۲ ردیف ورودی، ۱۲ ردیف خروجی و یک ردیف تکراریِ حفظ‌شده است. گزارش نهایی وضعیت OK یا MISMATCH را نشان می‌دهد. آموزش تأکید می‌کند که در صورت نابرابری تعدادها، برنامه باید با وضعیت خروج غیرصفر پایان یابد. این بررسی فقط دربارهٔ تعداد ردیف‌هاست، نه درست‌بودن یا تمیزبودن محتوای آن‌ها.

نکته کلیدی

برابر بودن تعداد ردیف‌ها را با درست‌بودن داده‌ها یکی نگیر. در این روش، ردیف‌های کاملاً خالی شمرده نمی‌شوند و ردیف‌های تکراری باقی می‌مانند؛ پس نتیجهٔ بررسی را فقط در همین محدوده تفسیر کن.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)