Data Manipulation

خلط إطارات بيانات Pandas بكفاءة

Spread the love

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

محتويات

طريقة Pandas sample()

توفر طريقة Pandas sample() نهجًا سهل الاستخدام لخلط صفوف DataFrame. بإعداد معلمة frac إلى 1، تحصل على ترتيب عشوائي تمامًا لـ DataFrame الأصلي.


import pandas as pd

# DataFrame نموذجي
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# الخلط باستخدام sample()
shuffled_df = df.sample(frac=1, random_state=42)  # random_state للتكرار

print("DataFrame الأصلي:n", df)
print("nDataFrame المُخلط:n", shuffled_df)

تُعدّ وِجهة random_state أساسية للتكرار. يضمن تحديد عدد صحيح خلطًا ثابتًا عبر عمليات متعددة. سيؤدي حذفها إلى خلطات مختلفة في كل مرة.

دالة NumPy permutation()

تُولّد دالة NumPy permutation() ترتيبًا عشوائيًا للمؤشرات. يُعدّ هذا النهج أسرع بشكل عام من sample()، خاصةً بالنسبة لـ DataFrames كبيرة، لأنه يعمل مباشرةً على مصفوفات NumPy الأكثر كفاءة.


import pandas as pd
import numpy as np

# DataFrame نموذجي
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# الخلط باستخدام numpy.random.permutation()
shuffled_indices = np.random.permutation(len(df))
shuffled_df = df.iloc[shuffled_indices]

print("DataFrame الأصلي:n", df)
print("nDataFrame المُخلط:n", shuffled_df)

للحصول على نتائج قابلة للتكرار، استخدم np.random.seed(42) قبل استدعاء np.random.permutation().

دالة Scikit-learn shuffle()

تُعدّ دالة Scikit-learn shuffle() مفيدة بشكل خاص عند خلط DataFrame مع مصفوفة ذات صلة (مثل، تسميات في إعداد التعلم تحت الإشراف). فهي تضمن أن يبقى DataFrame والمصفوفة متزامنين بعد الخلط.


import pandas as pd
from sklearn.utils import shuffle

# DataFrame نموذجي
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# خلط DataFrame ومصفوفة منفصلة (إن لزم الأمر)
shuffled_df, _ = shuffle(df, random_state=42)  # الشرطة السفلية تتجاهل قيمة الإرجاع الثانية

print("DataFrame الأصلي:n", df)
print("nDataFrame المُخلط:n", shuffled_df)

مثل الطرق السابقة، تتحكم random_state في التكرار. تُلغي الشرطة السفلية _ قيمة الإرجاع الثانية (التي ستكون مصفوفة مُخلطة إذا تم توفير واحدة).

الخلاصة: تُخلِط كل طريقة صفوف DataFrame بفعالية. تُعدّ طريقة Pandas sample() هي الأكثر سهولة في الفهم، بينما غالبًا ما توفر permutation() من NumPy أداءً أفضل للمجموعات الكبيرة من البيانات. تُعدّ shuffle() من Scikit-learn مثالية للخلط المتزامن لـ DataFrame ومصفوفة مقابلة. اختر الطريقة الأنسب لاحتياجاتك واستخدم دائمًا random_state للحصول على نتائج قابلة للتكرار.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *