مقدمة:
يعد الاختبار الشامل أمرًا ضروريًا للتطبيقات المعتمدة على البيانات، ولكنه يعتمد غالبًا على امتلاك مجموعات البيانات الصحيحة، والتي قد لا تكون متاحة دائمًا. سواء كنت تقوم بتطوير تطبيقات الويب، أو نماذج التعلم الآلي، أو الأنظمة الخلفية، فإن البيانات الواقعية والمنظمة أمر بالغ الأهمية للتحقق المناسب وضمان الأداء القوي. قد يكون الحصول على بيانات العالم الحقيقي محدودًا بسبب مخاوف الخصوصية، أو قيود الترخيص، أو ببساطة عدم توفر البيانات ذات الصلة. هذا هو المكان الذي تصبح فيه البيانات الاصطناعية ذات قيمة.
في هذه المدونة، سنستكشف كيف يمكن استخدام بايثون لإنشاء بيانات تركيبية لسيناريوهات مختلفة، بما في ذلك:
سنستفيد من مكتبات 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)
يُنشئ هذا الرمز 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)
في هذه الحالة، يربط جدول الطلبات كل طلب بعميل يستخدم معرف العميل. يمكن لكل عميل تقديم طلبات متعددة، وتكوين علاقة رأس بأطراف.
مثال 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)
إنشاء جدول الموظفين
بعد ذلك، نقوم بإنشاء جدول الموظفين، حيث يرتبط كل موظف بقسم عبر معرف القسم.
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)
يربط هذا الهيكل الهرمي كل موظف بقسم من خلال معرف القسم، مما يشكل علاقة بين الوالدين والطفل.
مثال 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)
إنشاء جدول الطلاب
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)
إنشاء جدول تسجيل المقررات
يصور جدول تسجيلات المقرر الدراسي العلاقة بين متعدد ومتعدد بين الطلاب والدورات التدريبية.
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)
في هذا المثال، قمنا بإنشاء جدول ربط لتمثيل علاقات متعدد إلى متعدد بين الطلاب والدورات التدريبية.
خاتمة:
باستخدام Python ومكتبات مثل Faker وPandas، يمكنك إنشاء مجموعات بيانات تركيبية واقعية ومتنوعة لتلبية مجموعة متنوعة من احتياجات الاختبار. تناولنا في هذه المدونة ما يلي:
تضع هذه الأمثلة الأساس لإنشاء بيانات تركيبية مصممة خصيصًا لتلبية احتياجاتك. يمكن أن تؤدي التحسينات الإضافية، مثل إنشاء علاقات أكثر تعقيدًا، أو تخصيص البيانات لقواعد بيانات محددة، أو توسيع نطاق مجموعات البيانات لاختبار الأداء، إلى نقل عملية إنشاء البيانات الاصطناعية إلى المستوى التالي.
توفر هذه الأمثلة أساسًا متينًا لتوليد البيانات الاصطناعية. ومع ذلك، يمكن إجراء المزيد من التحسينات لزيادة التعقيد والخصوصية، مثل:
إذا أعجبك المقال، يرجى مشاركته مع أصدقائك وزملائك. يمكنك التواصل معي على LinkedIn لمناقشة أي أفكار أخرى.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3