DEV Community

Cover image for ودع المعاناة: 5 سكريبتات بايثون ذكية لتنظيف البيانات أوتوماتيكيًا
Mohamed Shaban
Mohamed Shaban

Posted on

ودع المعاناة: 5 سكريبتات بايثون ذكية لتنظيف البيانات أوتوماتيكيًا

تخلص من كابوس تنظيف البيانات بهذه السكريبتات الذكية

لماذا نهدر الوقت في تنظيف البيانات يدويًا؟

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

الحقيقة المؤلمة: تنظيف البيانات يمثل 80% من وقت العمل التحليلي، وهذا هدر غير مقبول في عصر الأتمتة.

الحل: بايثون إلى الإنقاذ

جمعت لكم 5 سكريبتات عملية جربتها شخصيًا ووفرت عليَّ ساعات من العمل الممل. كل سكريبت لا يتعدى 10-15 سطر، وسهل التعديل ليناسب بياناتك.

السكريبت الأول: منظم التواريخ الفوضوية

import pandas as pd
from datetime import datetime

def clean_dates(df, date_column):
    """يحول أي شكل تاريخ إلى صيغة موحدة"""
    date_formats = ['%d/%m/%Y', '%Y-%m-%d', '%m-%d-%Y', '%d-%m-%Y']

    for fmt in date_formats:
        try:
            df[date_column] = pd.to_datetime(df[date_column], format=fmt)
            break
        except ValueError:
            continue

    return df
Enter fullscreen mode Exit fullscreen mode

متى تستخدمه: عندما يكون لديك بيانات من مصادر مختلفة بتنسيقات تاريخ متعددة.

السكريبت الثاني: كاشف التكرارات الذكي

def smart_deduplicate(df, key_columns):
    """يزيل التكرارات بناءً على أعمدة محددة"""
    return df.drop_duplicates(subset=key_columns, keep='first')
Enter fullscreen mode Exit fullscreen mode

الميزة: تقرر بنفسك أي الأعمدة تعتبر مفتاحًا للتكرار، مش مجرد الصف الكامل.

السكريبت الثالث: معالج القيم الناقصة

def handle_missing_values(df, strategy='mean'):
    """يعالج القيم الناقصة بطريقة ذكية"""
    numeric_cols = df.select_dtypes(include=['number']).columns

    for col in numeric_cols:
        if strategy == 'mean':
            df[col].fillna(df[col].mean(), inplace=True)
        elif strategy == 'median':
            df[col].fillna(df[col].median(), inplace=True)

    return df
Enter fullscreen mode Exit fullscreen mode

السكريبت الرابع: موحد النصوص

def standardize_text(df, text_columns):
    """يوحد تنسيق النصوص والحروف"""
    for col in text_columns:
        df[col] = df[col].str.strip().str.title()

    return df
Enter fullscreen mode Exit fullscreen mode

مفيد جدًا: لتنظيم أسماء العملاء، المدن، أو أي بيانات نصية.

السكريبت الخامس: كاشف القيم الشاذة

def detect_outliers(df, column):
    """يكتشف القيم الشاذة باستخدام قاعدة IQR"""
    Q1 = df[column].quantile(0.25)
    Q3 = df[column].quantile(0.75)
    IQR = Q3 - Q1

    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR

    outliers = df[(df[column] < lower_bound) | (df[column] > upper_bound)]
    return outliers
Enter fullscreen mode Exit fullscreen mode

الخلاصة: لماذا هذه السكريبتات تغير قواعد اللعبة؟

١. توفير الوقت: من ساعات إلى دقائق
٢. تقليل الأخطاء: لا وجود للخطأ البشري
٣. إمكانية التكرار: تشغيل نفس العملية على أي dataset
٤. القابلية للتطوير: تصلح لملايين الصفوف

جرب بنفسك!

ابدأ بأبسط سكريبت يناسب مشكلتك، وشاهد كيف تتحسن إنتاجيتك. الأسئلة؟ اطرحها في التعليقات 👇

📊 للبيزنس: تحليل القيمة التجارية على Blog
💬 شاركنا رأيك على Facebook

Top comments (0)