في بايثون هناك عدة طرق لأخذ عينة (sampling) من البيانات سنبدأ بأخذ عينة من البيانات بدون إرجاع، وفي هذه الحالة يجب أن يكون حجم العينة أصغر من حجم البيانات. ويتضح ذلك من خلال الأمثلة التالية:
In: import random as r x = [1, 2, 3, 4, 5] s=r.sample(x,5) print(s) Out: [4, 1, 5, 3, 2]
لاختيار عينة من سلسلة من الكلمات:
In: x = ["Ali", "Mohammed", "Khalid", "Sultan"] s=r.sample(x,3) print(s) Out: ['Mohammed', 'Khalid', 'Ali']
لاختيار عينة من سلسلة من الحروف:
In: x = "Data" s=r.sample(x,3) print(s) Out: ['a', 'D', 'a']
لاختيار عينة من قاموس البيانات:
In: x = { "Ali": 55, "Mohammed": 70, "Khalid": 60, "Sultan" :50 } s=r.sample(x.items(),3) print(s) Out: [('Mohammed', 70), ('Khalid', 60), ('Sultan', 50)]
للحصول على خيارات أكثر بخصوص خاصية الإرجاع واحتمالية اختيار عنصر محدد في العينة وهنا لا يشترط أن يكون حجم العينة أصغر من حجم البيانات، يمكن استخدام الكود التالي:
In: import numpy as np x = [1, 2, 3] np.random.choice(x, size=2, replace=True, p=(0.3,0.6,0.1)) Out: array([2, 2])
لأخذ عينة من إطار البيانات (data frame) مع المحافظة على تقابل عناصر الصفوف يمكن استخدام الكود التالي:
In: import pandas as pd mydata = pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': ['a', 'b', 'c', 'd', 'e']}) mydata.sample(n=3, replace=False) Out: x y 2 3 c 0 1 a 4 5 e