"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > استخدام مكتبات Faker وPandas Python لإنشاء بيانات اصطناعية للاختبار

استخدام مكتبات Faker وPandas Python لإنشاء بيانات اصطناعية للاختبار

تم النشر بتاريخ 2024-11-07
تصفح:942

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

في هذه المدونة، سنستكشف كيف يمكن استخدام بايثون لإنشاء بيانات تركيبية لسيناريوهات مختلفة، بما في ذلك:

  1. الجداول المترابطة: تمثل علاقات رأس بأطراف.
  2. البيانات الهرمية: غالبا ما تستخدم في الهياكل التنظيمية.
  3. العلاقات المعقدة: مثل علاقات متعدد إلى متعدد في أنظمة التسجيل.

سنستفيد من مكتبات Faker وPandas لإنشاء مجموعات بيانات واقعية لحالات الاستخدام هذه.


مثال 1: إنشاء بيانات اصطناعية للعملاء والطلبات (علاقة رأس بأطراف)

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

إنشاء جدول العملاء

يحتوي جدول العملاء على معلومات أساسية مثل معرف العميل والاسم وعنوان البريد الإلكتروني.

import pandas as pd
from faker import Faker
import random

fake = Faker()

def generate_customers(num_customers):
    customers = []
    for _ in range(num_customers):
        customer_id = fake.uuid4()
        name = fake.name()
        email = fake.email()
        customers.append({'CustomerID': customer_id, 'CustomerName': name, 'Email': email})
    return pd.DataFrame(customers)

customers_df = generate_customers(10)

Using faker and pandas Python Libraries to Create Synthetic Data for Testing

يُنشئ هذا الرمز 10 عملاء عشوائيين يستخدمون Faker لإنشاء أسماء وعناوين بريد إلكتروني واقعية.

إنشاء جدول الطلبات

الآن، نقوم بإنشاء جدول الطلبات، حيث يرتبط كل طلب بالعميل من خلال معرف العميل.

def generate_orders(customers_df, num_orders):
    orders = []
    for _ in range(num_orders):
        order_id = fake.uuid4()
        customer_id = random.choice(customers_df['CustomerID'].tolist())
        product = fake.random_element(elements=('Laptop', 'Phone', 'Tablet', 'Headphones'))
        price = round(random.uniform(100, 2000), 2)
        orders.append({'OrderID': order_id, 'CustomerID': customer_id, 'Product': product, 'Price': price})
    return pd.DataFrame(orders)

orders_df = generate_orders(customers_df, 30)

Using faker and pandas Python Libraries to Create Synthetic Data for Testing

في هذه الحالة، يربط جدول الطلبات كل طلب بعميل يستخدم معرف العميل. يمكن لكل عميل تقديم طلبات متعددة، وتكوين علاقة رأس بأطراف.


مثال 2: إنشاء بيانات هرمية للإدارات والموظفين

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

إنشاء جدول الأقسام

يحتوي جدول الأقسام على معرف القسم الفريد والاسم والمدير لكل قسم.

def generate_departments(num_departments):
    departments = []
    for _ in range(num_departments):
        department_id = fake.uuid4()
        department_name = fake.company_suffix()
        manager = fake.name()
        departments.append({'DepartmentID': department_id, 'DepartmentName': department_name, 'Manager': manager})
    return pd.DataFrame(departments)

departments_df = generate_departments(10)

Using faker and pandas Python Libraries to Create Synthetic Data for Testing

إنشاء جدول الموظفين

بعد ذلك، نقوم بإنشاء جدول الموظفين، حيث يرتبط كل موظف بقسم عبر معرف القسم.

def generate_employees(departments_df, num_employees):
    employees = []
    for _ in range(num_employees):
        employee_id = fake.uuid4()
        employee_name = fake.name()
        email = fake.email()
        department_id = random.choice(departments_df['DepartmentID'].tolist())
        salary = round(random.uniform(40000, 120000), 2)
        employees.append({
            'EmployeeID': employee_id,
            'EmployeeName': employee_name,
            'Email': email,
            'DepartmentID': department_id,
            'Salary': salary
        })
    return pd.DataFrame(employees)

employees_df = generate_employees(departments_df, 100)

Using faker and pandas Python Libraries to Create Synthetic Data for Testing

يربط هذا الهيكل الهرمي كل موظف بقسم من خلال معرف القسم، مما يشكل علاقة بين الوالدين والطفل.


مثال 3: محاكاة علاقات متعدد إلى متعدد لعمليات التسجيل في الدورة التدريبية

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

إنشاء جدول المقررات

def generate_courses(num_courses):
    courses = []
    for _ in range(num_courses):
        course_id = fake.uuid4()
        course_name = fake.bs().title()
        instructor = fake.name()
        courses.append({'CourseID': course_id, 'CourseName': course_name, 'Instructor': instructor})
    return pd.DataFrame(courses)

courses_df = generate_courses(20)

Using faker and pandas Python Libraries to Create Synthetic Data for Testing

إنشاء جدول الطلاب

def generate_students(num_students):
    students = []
    for _ in range(num_students):
        student_id = fake.uuid4()
        student_name = fake.name()
        email = fake.email()
        students.append({'StudentID': student_id, 'StudentName': student_name, 'Email': email})
    return pd.DataFrame(students)

students_df = generate_students(50)
print(students_df)

Using faker and pandas Python Libraries to Create Synthetic Data for Testing

إنشاء جدول تسجيل المقررات

يصور جدول تسجيلات المقرر الدراسي العلاقة بين متعدد ومتعدد بين الطلاب والدورات التدريبية.

def generate_course_enrollments(students_df, courses_df, num_enrollments):
    enrollments = []
    for _ in range(num_enrollments):
        enrollment_id = fake.uuid4()
        student_id = random.choice(students_df['StudentID'].tolist())
        course_id = random.choice(courses_df['CourseID'].tolist())
        enrollment_date = fake.date_this_year()
        enrollments.append({
            'EnrollmentID': enrollment_id,
            'StudentID': student_id,
            'CourseID': course_id,
            'EnrollmentDate': enrollment_date
        })
    return pd.DataFrame(enrollments)

enrollments_df = generate_course_enrollments(students_df, courses_df, 200)

Using faker and pandas Python Libraries to Create Synthetic Data for Testing

في هذا المثال، قمنا بإنشاء جدول ربط لتمثيل علاقات متعدد إلى متعدد بين الطلاب والدورات التدريبية.


خاتمة:
باستخدام Python ومكتبات مثل Faker وPandas، يمكنك إنشاء مجموعات بيانات تركيبية واقعية ومتنوعة لتلبية مجموعة متنوعة من احتياجات الاختبار. تناولنا في هذه المدونة ما يلي:

  1. الجداول المترابطة: إظهار علاقة رأس بأطراف بين العملاء والطلبات.
  2. البيانات الهرمية: توضيح العلاقة بين الوالدين والطفل بين الأقسام والموظفين.
  3. العلاقات المعقدة: محاكاة علاقات متعدد إلى متعدد بين الطلاب والدورات التدريبية.

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

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

  1. بيانات خاصة بقاعدة البيانات: تخصيص إنشاء البيانات لأنظمة قواعد البيانات المختلفة (على سبيل المثال، SQL مقابل NoSQL).
  2. علاقات أكثر تعقيدًا: إنشاء علاقات متبادلة إضافية، مثل العلاقات الزمنية، أو التسلسلات الهرمية متعددة المستويات، أو القيود الفريدة.
  3. قياس البيانات: إنشاء مجموعات بيانات أكبر لاختبار الأداء أو اختبار التحمل، مما يضمن قدرة النظام على التعامل مع ظروف العالم الحقيقي على نطاق واسع. من خلال إنشاء بيانات تركيبية مصممة خصيصًا لتلبية احتياجاتك، يمكنك محاكاة الظروف الواقعية لتطوير التطبيقات واختبارها وتحسينها دون الاعتماد على مجموعات البيانات الحساسة أو التي يصعب الحصول عليها.

إذا أعجبك المقال، يرجى مشاركته مع أصدقائك وزملائك. يمكنك التواصل معي على LinkedIn لمناقشة أي أفكار أخرى.


بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/rahulbhave/using-faker-and-pandas-python-libraries-to-create-synthetic-data-for-testing-4gn4?1 إذا كان هناك أي انتهاك، من فضلك اتصل بـ [email protected]
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3