Ali Ahmed55 نشر 29 يناير أرسل تقرير نشر 29 يناير السلام عليكم هو انا هنا ازي اقدر احول البيانات دي بستخدم LabelEncoder من غير القيمه الNull يعني انا عاوز قيمه الNull تكون زي ماهي ؟ ودي البيانات data = pd.DataFrame({ 'A': ['yes', 'yes', np.nan, 'no', 'no'], 'B': [np.nan, 'no', 'no', 'no', 'no'], 'C': ['no', 'yes', 'yes', np.nan, 'yes'] }) 2 اقتباس
0 Mustafa Suleiman نشر 29 يناير أرسل تقرير نشر 29 يناير تقصد تحويل البيانات باستخدام LabelEncoder مع الحفاظ على قيم NaN دون تغيير، عليك إذن استبدال القيم NaN بقيمة مؤقتة قبل التشفير لتجنب أخطاء LabelEncoder وتطبيقه على كل عمود، ثم إعادة استبدال القيمة المؤقتة بـ NaN بعد التشفير. import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder data = pd.DataFrame({ 'A': ['yes', 'yes', np.nan, 'no', 'no'], 'B': [np.nan, 'no', 'no', 'no', 'no'], 'C': ['no', 'yes', 'yes', np.nan, 'yes'] }) data_encoded = data.copy() for col in data_encoded.columns: mask = data_encoded[col].isna() temp_data = data_encoded[col].fillna('missing') le = LabelEncoder() encoded_data = le.fit_transform(temp_data) encoded_data = encoded_data.astype(float) encoded_data[mask] = np.nan data_encoded[col] = encoded_data print(data_encoded) وستحصل على: A B C 0 2.0 NaN 1.0 1 2.0 1.0 2.0 2 NaN 1.0 2.0 3 1.0 1.0 NaN 4 1.0 1.0 2.0 لاحظ لو العمود لا يحتوي على NaN، سيتم ترميزه بشكل طبيعي، أيضًا القيم المشفرة ستكون أرقامًا صحيحة (مثل 0, 1, ...)، بينما تظل NaN كما هي. 1 اقتباس
0 Ali Ahmed55 نشر 29 يناير الكاتب أرسل تقرير نشر 29 يناير بتاريخ 8 دقائق مضت قال Mustafa Suleiman: تقصد تحويل البيانات باستخدام LabelEncoder مع الحفاظ على قيم NaN دون تغيير، عليك إذن استبدال القيم NaN بقيمة مؤقتة قبل التشفير لتجنب أخطاء LabelEncoder وتطبيقه على كل عمود، ثم إعادة استبدال القيمة المؤقتة بـ NaN بعد التشفير. import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder data = pd.DataFrame({ 'A': ['yes', 'yes', np.nan, 'no', 'no'], 'B': [np.nan, 'no', 'no', 'no', 'no'], 'C': ['no', 'yes', 'yes', np.nan, 'yes'] }) data_encoded = data.copy() for col in data_encoded.columns: mask = data_encoded[col].isna() temp_data = data_encoded[col].fillna('missing') le = LabelEncoder() encoded_data = le.fit_transform(temp_data) encoded_data = encoded_data.astype(float) encoded_data[mask] = np.nan data_encoded[col] = encoded_data print(data_encoded) وستحصل على: A B C 0 2.0 NaN 1.0 1 2.0 1.0 2.0 2 NaN 1.0 2.0 3 1.0 1.0 NaN 4 1.0 1.0 2.0 لاحظ لو العمود لا يحتوي على NaN، سيتم ترميزه بشكل طبيعي، أيضًا القيم المشفرة ستكون أرقامًا صحيحة (مثل 0, 1, ...)، بينما تظل NaN كما هي. الله ينور عليك هو ده الا انا عاوز جزاك اللله كل خير بس ليه استبدل القيمه الNulll بقيمه الmissing وليه القيمه دي missing فضلت زي ما هي اقتباس
0 محمد عاطف17 نشر 29 يناير أرسل تقرير نشر 29 يناير الحل الأفضل هو أخذ نسخة احتياطية من البيانات الفارغة أولا . ومن ثم تحويلها إلى قيمة ليست فارغة بعد ذلك يمكننا إستخدام LabelEncoder . وأخيرا نقوم بإعادة البيانات الفارغة من النسخة الإحتياطية ووضعها في البيانات التي لدينا : import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder data = pd.DataFrame({ 'A': ['yes', 'yes', np.nan, 'no', 'no'], 'B': [np.nan, 'no', 'no', 'no', 'no'], 'C': ['no', 'yes', 'yes', np.nan, 'yes'] }) le = LabelEncoder() for column in data.columns: nan_values = data[column].isna() temp_data = data[column].fillna('data_temp') data[column] = le.fit_transform(temp_data) data[column][nan_values] = np.nan print(data) 1 اقتباس
0 Ali Ahmed55 نشر 29 يناير الكاتب أرسل تقرير نشر 29 يناير الف شكرااا جدا جدا لحضراتكم جزاكم الله كل خير 1 اقتباس
0 Mustafa Suleiman نشر 29 يناير أرسل تقرير نشر 29 يناير بتاريخ الآن قال Ali Ahmed55: الله ينور عليك هو ده الا انا عاوز جزاك اللله كل خير بس ليه استبدل القيمه الNulll بقيمه الmissing وليه القيمه دي missing فضلت زي ما هي لتجنب أخطاء LabelEncoder، حيث LabelEncoder من مكتبة scikit-learn لا يدعم التعامل مع القيم الفارغة (NaN) بشكل مباشر، فهو مصمم ليعمل مع فئات محددة مثل ye','no، لكن NaN ليست فئة، بل هي قيمة مفقودة. فكرة الحل استبدال NaN بقيمة مؤقتة مثل 'missing' قبل التشفير، وتُعامل كفئة Category جديدة أثناء التشفير، وبعد التشفير، نستبدل القيمة المؤقتة بـ NaN مرة أخرى. 1 اقتباس
0 Ali Ahmed55 نشر 29 يناير الكاتب أرسل تقرير نشر 29 يناير بتاريخ 22 دقائق مضت قال Mustafa Suleiman: لتجنب أخطاء LabelEncoder، حيث LabelEncoder من مكتبة scikit-learn لا يدعم التعامل مع القيم الفارغة (NaN) بشكل مباشر، فهو مصمم ليعمل مع فئات محددة مثل ye','no، لكن NaN ليست فئة، بل هي قيمة مفقودة. فكرة الحل استبدال NaN بقيمة مؤقتة مثل 'missing' قبل التشفير، وتُعامل كفئة Category جديدة أثناء التشفير، وبعد التشفير، نستبدل القيمة المؤقتة بـ NaN مرة أخرى. الف شكرااا جدا جدا لحضرتك ربنا يكفيك شر الواحش اقتباس
0 Ali Ahmed55 نشر 29 يناير الكاتب أرسل تقرير نشر 29 يناير بتاريخ 6 ساعة قال Mustafa Suleiman: تقصد تحويل البيانات باستخدام LabelEncoder مع الحفاظ على قيم NaN دون تغيير، عليك إذن استبدال القيم NaN بقيمة مؤقتة قبل التشفير لتجنب أخطاء LabelEncoder وتطبيقه على كل عمود، ثم إعادة استبدال القيمة المؤقتة بـ NaN بعد التشفير. import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder data = pd.DataFrame({ 'A': ['yes', 'yes', np.nan, 'no', 'no'], 'B': [np.nan, 'no', 'no', 'no', 'no'], 'C': ['no', 'yes', 'yes', np.nan, 'yes'] }) data_encoded = data.copy() for col in data_encoded.columns: mask = data_encoded[col].isna() temp_data = data_encoded[col].fillna('missing') le = LabelEncoder() encoded_data = le.fit_transform(temp_data) encoded_data = encoded_data.astype(float) encoded_data[mask] = np.nan data_encoded[col] = encoded_data print(data_encoded) وستحصل على: A B C 0 2.0 NaN 1.0 1 2.0 1.0 2.0 2 NaN 1.0 2.0 3 1.0 1.0 NaN 4 1.0 1.0 2.0 لاحظ لو العمود لا يحتوي على NaN، سيتم ترميزه بشكل طبيعي، أيضًا القيم المشفرة ستكون أرقامًا صحيحة (مثل 0, 1, ...)، بينما تظل NaN كما هي. طيب أ.مصطفي انا عاوز الاعمده تكون int مش float اعمل اي ؟ اقتباس
السؤال
Ali Ahmed55
السلام عليكم
هو انا هنا ازي اقدر احول البيانات دي بستخدم LabelEncoder من غير القيمه الNull يعني انا عاوز قيمه الNull تكون زي ماهي ؟
ودي البيانات
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.