Ali Ahmed55 نشر 25 نوفمبر أرسل تقرير نشر 25 نوفمبر السلام عليكم هو انا ازي اقدر مسح بيانات الoutliers بستخدم باثيون ؟ اولان انا اقدر احديد البيانات الoutliers من خلال الكود ده q1 = 87.750000 q3 = 190.000000 iqr = q3 - q1 lower_bound = q1 - 1.5 * iqr upper_bound = q3 + 1.5 * iqr print(f"Lower bound: {lower_bound}") print(f"upper bound: {upper_bound}") outliers = [] for x in diabetes['Insulin']: if x > upper_bound or x < lower_bound: outliers.append(x) print(outliers) فا ازي اقدر امسح الoutliers من البيانات نفسها ؟ 3 اقتباس
0 عبد الوهاب بومعراف نشر 25 نوفمبر أرسل تقرير نشر 25 نوفمبر يمكنك استخدام فلترة البيانات بناء على هذه الحدود، و باستخدام الكود الذي كتبته، الخطوة التالية هي إنشاء شرط يستبعد القيم التي تقع خارج النطاق المحدد بهذا الشكل: import pandas as pd q1 = 87.750000 q3 = 190.000000 iqr = q3 - q1 lower_bound = q1 - 1.5 * iqr upper_bound = q3 + 1.5 * iqr # إزالة القيم الخارجة عن الحدود filtered_diabetes = diabetes[(diabetes['Insulin'] >= lower_bound) & (diabetes['Insulin'] <= upper_bound)] # عرض البيانات بعد إزالة الـ outliers print(filtered_diabetes) و هنا لدينا الشرط diabetes['Insulin'] >= lower_bound يحتفظ بالقيم التي تساوي أو تزيد عن الحد الأدنى، و الشرط diabetes['Insulin'] <= upper_bound يحتفظ بالقيم التي تساوي أو تقل عن الحد الأقصى، و يتم الجمع بين الشرطين باستخدام العامل المنطقي &. و نستخدم DataFrame مع الأقواس المربعة [] لفلترة الصفوف بناء على الشرط، و الناتج سيكون DataFrame جديد بدون الـoutliers. 1 اقتباس
0 Mustafa Suleiman نشر 25 نوفمبر أرسل تقرير نشر 25 نوفمبر أنت تستخدم طريقة المدى الربيعي (IQR) للكشف عن البيانات الشاذة، وهي طريقة مستخدمة بكثرة وفعالة. وهناك طرق مختلفة لما تريده، أولها الفهرس المنطقي Boolean Indexing diabetes = diabetes[(diabetes['Insulin'] >= lower_bound) & (diabetes['Insulin'] <= upper_bound)] سيتم إنشاء مجموعة بيانات جديدة تسمى diabetes تستبعد الصفوف التي تحتوي على قيم "Insulin" شاذة. الطريقة الثانية هي باستخدام طريقة drop: outlier_indices = diabetes[(diabetes['Insulin'] < lower_bound) | (diabetes['Insulin'] > upper_bound)].index diabetes.drop(outlier_indices, inplace=True) ستحذف الصفوف التي تحتوي على قيم شاذة من مجموعة البيانات الأصلية diabetes. الطريقة الثالثة هي من خلال loc: diabetes.loc[~((diabetes['Insulin'] < lower_bound) | (diabetes['Insulin'] > upper_bound)), :] ستنشئ مجموعة بيانات جديدة تحتوي فقط على الصفوف التي لا تحتوي على قيم شاذة. 1 اقتباس
0 Ali Ahmed55 نشر 25 نوفمبر الكاتب أرسل تقرير نشر 25 نوفمبر الف شكرااا جدا جدا لحضرتكم بتاريخ 5 دقائق مضت قال Mustafa Suleiman: أنت تستخدم طريقة المدى الربيعي (IQR) للكشف عن البيانات الشاذة، وهي طريقة مستخدمة بكثرة وفعالة. وهناك طرق مختلفة لما تريده، أولها الفهرس المنطقي Boolean Indexing diabetes = diabetes[(diabetes['Insulin'] >= lower_bound) & (diabetes['Insulin'] <= upper_bound)] سيتم إنشاء مجموعة بيانات جديدة تسمى diabetes تستبعد الصفوف التي تحتوي على قيم "Insulin" شاذة. الطريقة الثانية هي باستخدام طريقة drop: outlier_indices = diabetes[(diabetes['Insulin'] < lower_bound) | (diabetes['Insulin'] > upper_bound)].index diabetes.drop(outlier_indices, inplace=True) ستحذف الصفوف التي تحتوي على قيم شاذة من مجموعة البيانات الأصلية diabetes. الطريقة الثالثة هي من خلال loc: diabetes.loc[~((diabetes['Insulin'] < lower_bound) | (diabetes['Insulin'] > upper_bound)), :] ستنشئ مجموعة بيانات جديدة تحتوي فقط على الصفوف التي لا تحتوي على قيم شاذة. بس انا عندي الLower bound: -65.625 بالسلب يعني هل دي دطبيعي مع العلم البيانات مافهيش قيمه سالب ؟ بتاريخ 11 دقائق مضت قال Mustafa Suleiman: outlier_indices = diabetes[(diabetes['Insulin'] < lower_bound) | (diabetes['Insulin'] > upper_bound)].index diabetes.drop(outlier_indices, inplace=True) ستحذف الصفوف التي تحتوي على قيم شاذة من مجموعة البيانات الأصلية diabetes. يعني مش هحتاح لحفظ ملف جديد ؟ 1 اقتباس
0 محمد عاطف17 نشر 25 نوفمبر أرسل تقرير نشر 25 نوفمبر بتاريخ 26 دقائق مضت قال Ail Ahmed: بس انا عندي الLower bound: -65.625 بالسلب يعني هل دي دطبيعي مع العلم البيانات مافهيش قيمه سالب ؟ نعم من الممكن أن يكون الLower bound قيمة سالبة إذا كنت تستخدم طريقة حساب تعتمد على مقاييس الإحصاء مثل Tukey’s fences ومعادلة ال Lower Bound هي : Lower Bound = Q1 − 1.5 × IQR وهذا ممكن بالطبع حسابيا إذا كان الربع الأول قيمة صغيرة كما في المثال الذي لديك حيث ستجد أن q1 أصغر بكثير من q3 ولذلك تأكد من الممكن أن تكون هناك خطأ في البيانات التي لديك حيث من الممكن أن توجد الكثير من القيم المفقودة أو قيم شاذة كثيرة مما تسببت في خطأ توزيع البيانات . لذلك ليس معني أن القيمة سالبة أنه بالضرورة وجود مشكلة في الحسابات حيث من الممكن أن يكون الأمر طبيعي لا مشكلة. بتاريخ 49 دقائق مضت قال Ail Ahmed: يعني مش هحتاح لحفظ ملف جديد ؟ السطر الذي ذكرخ المدرب مصطفى لا يقوم بحفظ التعديلات في ملف جديد ولكن التعديلات تتم فقط في الذاكرة ولن تؤثر على الملف الأساسي. ولكن إذا أردت حفظ التعديل بعد حذف القيم في ملف جديد يمكنك إستخدام السطر التالي : diabetes.to_csv('diabetes_cleaned.csv', index=False) 1 اقتباس
0 Ali Ahmed55 نشر 25 نوفمبر الكاتب أرسل تقرير نشر 25 نوفمبر بتاريخ 1 دقيقة مضت قال محمد عاطف17: نعم من الممكن أن يكون الLower bound قيمة سالبة إذا كنت تستخدم طريقة حساب تعتمد على مقاييس الإحصاء مثل Tukey’s fences ومعادلة ال Lower Bound هي : Lower Bound = Q1 − 1.5 × IQR وهذا ممكن بالطبع حسابيا إذا كان الربع الأول قيمة صغيرة كما في المثال الذي لديك حيث ستجد أن q1 أصغر بكثير من q3 ولذلك تأكد من الممكن أن تكون هناك خطأ في البيانات التي لديك حيث من الممكن أن توجد الكثير من القيم المفقودة أو قيم شاذة كثيرة مما تسببت في خطأ توزيع البيانات . لذلك ليس معني أن القيمة سالبة أنه بالضرورة وجود مشكلة في الحسابات حيث من الممكن أن يكون الأمر طبيعي لا مشكلة. السطر الذي ذكرخ المدرب مصطفى لا يقوم بحفظ التعديلات في ملف جديد ولكن التعديلات تتم فقط في الذاكرة ولن تؤثر على الملف الأساسي. ولكن إذا أردت حفظ التعديل بعد حذف القيم في ملف جديد يمكنك إستخدام السطر التالي : diabetes.to_csv('diabetes_cleaned.csv', index=False) الف شكراا لحضرتك جدا جزاك الله كل خير 1 اقتباس
السؤال
Ali Ahmed55
السلام عليكم
هو انا ازي اقدر مسح بيانات الoutliers بستخدم باثيون ؟
اولان انا اقدر احديد البيانات الoutliers من خلال الكود ده
فا ازي اقدر امسح الoutliers من البيانات نفسها ؟
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.