Ali Ahmed55 نشر 31 يناير أرسل تقرير نشر 31 يناير السلام عليكم طيب اي الداله دي select_dtypes وكمان دي apply() الموجود في pandas وهلي هم افضل من الif و for loop ؟ يعني ده افضل for columns in data_train.columns: if data_train[columns].dtypes == object: data_train[columns] = label_encoer.fit_transform(data_train[columns]) والا ده data_train[data_train.select_dtypes(include=['object']).columns] = data_train.select_dtypes(include=['object']).apply(label_encoer.fit_transform) 2 اقتباس
0 محمد عاطف17 نشر 31 يناير أرسل تقرير نشر 31 يناير وعليكم السلام ورحمة الله وبركاته. لنشرح أولا الدالتين : select_dtypes(): نستخدم تلك الدالة لإختيار الأعمدة بناء على نوع البيانات سواء كانت object أو float أو int أو غيرها. المثال التالي سيقوم بتحديد الأعمدة التي من نوع object فقط: data_train.select_dtypes(include=['object']) apply(): نستخدمها لتطبيق دالة معينة على كل عمود أو صف في DataFrame . المثال التالي سيطبق fit_transform من label_encoder على كل عمود : data_train.apply(label_encoder.fit_transform) الآن لنفرق بين الكودين الذي أرفقتهم : الطريقة الأولى وهي استخدام for loop مع if : مميزاتها: الكود واضح ومن ينظر إليها يفهم سريعا ما هو المطلوب تنفيذه من هذا الكود. يمكنك إضافة أي شروط أو عمليات إضافية داخل الـ for loop بسهولة. عيوبها: استخدام for loop يعتبر أبطأ بالنسبة إلى الدوال المدمجة مثل apply() أو select_dtypes حيث تلك الدوال تم إنشاءها لتكون أسرع وأفضل من الأكواد المجردة . الطريقة الثانية وهي استخدام select_dtypes و apply : مميزاتها: كما وضحت لك أن الدوال select_dtypes و apply تم إنشاءها لتكوم أفضل وأسرع وهكذا نستطيع التعامل مع البيانات بشكل أسرع من الـ for loop. الكود أقصر من الكود الأول. عيوبها: تلك الطريقة ليست سهلة في القراءة وليست أوضح كما في الطريقة الأولى . إذا كنت بحاجة إلى إضافة شروط كثيرة فهذه الطريقة ليست الأفضل في ذلك. لهذا إذا كنت تبحث عن الأداء الأسرع والأفضل فالطريقة الثانية أفضل بكثير . 1 اقتباس
0 Ali Ahmed55 نشر 31 يناير الكاتب أرسل تقرير نشر 31 يناير الف شكرااا جدا جدا لحضرتك جزاك الله كل خير 1 اقتباس
0 Mustafa Suleiman نشر 31 يناير أرسل تقرير نشر 31 يناير في pandas، توجد دوال مُخصصة لتسهيل معالجة البيانات بشكل فعال، ومنها select_dtypes وapply(). حيث select_dtypes تسمح لك بفلترة (تصفية) أعمدة الـ DataFrame حسب نوع البيانات dtypes، بالشكل التالي: df.select_dtypes(include=[int, float], exclude=[object]) include اختيار الأعمدة ذات الأنواع المحددة (مثل int، float، datetime) و exclude استبعاد الأعمدة ذات الأنواع المحددة. import pandas as pd data = {'A': [1, 2], 'B': ['x', 'y'], 'C': [3.0, 4.0]} df = pd.DataFrame(data) numeric_df = df.select_dtypes(include='number') أما apply() تطبق دالة مُخصصة على جميع الصفوف أو الأعمدة (حسب المحور axis). df.apply(func, axis=0) df.apply(func, axis=1) كالتالي: df['sum'] = df.apply(lambda row: row.sum(), axis=1) ودوال pandas مثل select_dtypes وapply() تكون أسرع بشكل عام لأنها مبنية على تحسينات مُستوى منخفض مثل C أو NumPy. أما الحلقات التقليدية (for/if) في Python تكون أبطأ، خاصة مع البيانات الكبيرة، لأنها تُنفذ بشكل تسلسلي ولا تستفيد من تحسينات المتجهات vectorization. 1 اقتباس
0 Ali Ahmed55 نشر 1 فبراير الكاتب أرسل تقرير نشر 1 فبراير بتاريخ 6 ساعة قال Mustafa Suleiman: في pandas، توجد دوال مُخصصة لتسهيل معالجة البيانات بشكل فعال، ومنها select_dtypes وapply(). حيث select_dtypes تسمح لك بفلترة (تصفية) أعمدة الـ DataFrame حسب نوع البيانات dtypes، بالشكل التالي: df.select_dtypes(include=[int, float], exclude=[object]) include اختيار الأعمدة ذات الأنواع المحددة (مثل int، float، datetime) و exclude استبعاد الأعمدة ذات الأنواع المحددة. import pandas as pd data = {'A': [1, 2], 'B': ['x', 'y'], 'C': [3.0, 4.0]} df = pd.DataFrame(data) numeric_df = df.select_dtypes(include='number') أما apply() تطبق دالة مُخصصة على جميع الصفوف أو الأعمدة (حسب المحور axis). df.apply(func, axis=0) df.apply(func, axis=1) كالتالي: df['sum'] = df.apply(lambda row: row.sum(), axis=1) ودوال pandas مثل select_dtypes وapply() تكون أسرع بشكل عام لأنها مبنية على تحسينات مُستوى منخفض مثل C أو NumPy. أما الحلقات التقليدية (for/if) في Python تكون أبطأ، خاصة مع البيانات الكبيرة، لأنها تُنفذ بشكل تسلسلي ولا تستفيد من تحسينات المتجهات vectorization. الف شكرااا جدا لحضرتك جزاك الله كل خير اقتباس
السؤال
Ali Ahmed55
السلام عليكم
طيب اي الداله دي select_dtypes وكمان دي apply() الموجود في pandas وهلي هم افضل من الif و for loop ؟
يعني ده افضل
والا ده
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.