اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

انا هنا في الكود ده عاوز 

1- امسح القيمه الNaN ماعد اعمده معين 

# Select columns that are important for further analysis, focusing on those that may contain missing values
data_columns_nulls = data_train[['cyto_score','cyto_score_detail','hla_high_res_6','hla_high_res_8','hla_high_res_10','hla_match_b_high','tce_imm_match','mrd_hct','tce_match','tce_div_match']]

# Drop rows with NaN values in columns that are not part of the selected ones
# Commented line below would remove any rows with NaN values, but we're handling missing data per column
#data_train.dropna(inplace=True)
for columns in data_train.columns:
    if columns not in data_columns_nulls.columns:
        # Drop rows where the selected column has NaN values
        data_train = data_train.dropna(subset=[columns])
# Calculate and print the total number of missing values per column (if needed)
missing_values = data_train.isna().sum()
print(missing_values)        

ودي نتجيه الmissing_values 


ID                           0
dri_score                    0
psych_disturb                0
cyto_score                2491
diabetes                     0
hla_match_c_high             0
hla_high_res_8              60
tbi_status                   0
arrhythmia                   0
hla_low_res_6                0
graft_type                   0
vent_hist                    0
renal_issue                  0
pulm_severe                  0
prim_disease_hct             0
hla_high_res_6              60
cmv_status                   0
hla_high_res_10             60
hla_match_dqb1_high          0
tce_imm_match             2468
hla_nmdp_6                   0
hla_match_c_low              0
rituximab                    0
hla_match_drb1_low           0
hla_match_dqb1_low           0
prod_type                    0
cyto_score_detail         4105
conditioning_intensity       0
ethnicity                    0
year_hct                     0
obesity                      0
mrd_hct                   5884
in_vivo_tcd                  0
tce_match                 6306
hla_match_a_high             0
hepatic_severe               0
donor_age                    0
prior_tumor                  0
hla_match_b_low              0
peptic_ulcer                 0
age_at_hct                   0
hla_match_a_low              0
gvhd_proph                   0
rheum_issue                  0
sex_match                    0
hla_match_b_high            60
race_group                   0
comorbidity_score            0
karnofsky_score              0
hepatic_mild                 0
tce_div_match             2536
donor_related                0
melphalan_dose               0
hla_low_res_8                0
cardiac                      0
hla_match_drb1_high          0
pulm_moderate                0
hla_low_res_10               0
efs                          0
efs_time                     0
dtype: int64

لحد دلوقتي تمام بعد كده 

2- املئ القيمه الNaN في الاعمدا المعين التي لم امسحها 

# Fill missing values in the columns selected for analysis
for columns in data_columns_nulls.columns:
    # For categorical columns (object type), fill NaN with the most frequent value (mode)
    if data_train[columns].dtype == 'object':
        data_train[columns].fillna(data_train[columns].mode()[0])
    else:
        # For numerical columns, fill NaN with the mean of the column
        data_train[columns].fillna(data_train[columns].mean())
print("-" * 20)
# Calculate and print the total number of missing values per column (if needed)
missing_values = data_train.isna().sum()
print(missing_values) 

نتجه الmissing_values زي الاول بطبظ طيب ازي مش المفروض يكون كلها اصفر

ID                           0
dri_score                    0
psych_disturb                0
cyto_score                2491
diabetes                     0
hla_match_c_high             0
hla_high_res_8              60
tbi_status                   0
arrhythmia                   0
hla_low_res_6                0
graft_type                   0
vent_hist                    0
renal_issue                  0
pulm_severe                  0
prim_disease_hct             0
hla_high_res_6              60
cmv_status                   0
hla_high_res_10             60
hla_match_dqb1_high          0
tce_imm_match             2468
hla_nmdp_6                   0
hla_match_c_low              0
rituximab                    0
hla_match_drb1_low           0
hla_match_dqb1_low           0
prod_type                    0
cyto_score_detail         4105
conditioning_intensity       0
ethnicity                    0
year_hct                     0
obesity                      0
mrd_hct                   5884
in_vivo_tcd                  0
tce_match                 6306
hla_match_a_high             0
hepatic_severe               0
donor_age                    0
prior_tumor                  0
hla_match_b_low              0
peptic_ulcer                 0
age_at_hct                   0
hla_match_a_low              0
gvhd_proph                   0
rheum_issue                  0
sex_match                    0
hla_match_b_high            60
race_group                   0
comorbidity_score            0
karnofsky_score              0
hepatic_mild                 0
tce_div_match             2536
donor_related                0
melphalan_dose               0
hla_low_res_8                0
cardiac                      0
hla_match_drb1_high          0
pulm_moderate                0
hla_low_res_10               0
efs                          0
efs_time                     0

 

Recommended Posts

  • 0
نشر

عند استخدام fillna، تحتاج إلى إعادة تعيين القيم إلى الأعمدة لأن fillna لا تعدل البيانات في مكانها بشكل افتراضي إلا إذا استخدمت inplace=True، إليك الكود المعدل الذي يجب أن يعمل كما هو متوقع:

# تحديد الأعمدة التي تحتوي على القيم المفقودة والتي ترغب في التعامل معها
data_columns_nulls = ['cyto_score', 'cyto_score_detail', 'hla_high_res_6', 'hla_high_res_8', 
                      'hla_high_res_10', 'hla_match_b_high', 'tce_imm_match', 
                      'mrd_hct', 'tce_match', 'tce_div_match']

# مسح القيم المفقودة (NaN) في الأعمدة غير المحددة
for column in data_train.columns:
    if column not in data_columns_nulls:
        data_train = data_train.dropna(subset=[column])

# تعبئة القيم المفقودة (NaN) في الأعمدة المحددة
for column in data_columns_nulls:
    if column in data_train.columns:
        # إذا كان العمود نصي (object)، املأ بـ mode
        if data_train[column].dtype == 'object':
            data_train[column].fillna(data_train[column].mode()[0], inplace=True)
        else:
            # إذا كان العمود رقمي، املأ بـ mean
            data_train[column].fillna(data_train[column].mean(), inplace=True)

# التحقق من القيم المفقودة مرة أخرى
print("-" * 20)
missing_values = data_train.isna().sum()
print(missing_values)

هنا أضفنا inplace=True مع fillna لضمان تعديل القيم داخل الإطار مباشرة.

  • 0
نشر
بتاريخ 6 دقائق مضت قال Chihab Hedidi:

عند استخدام fillna، تحتاج إلى إعادة تعيين القيم إلى الأعمدة لأن fillna لا تعدل البيانات في مكانها بشكل افتراضي إلا إذا استخدمت inplace=True، إليك الكود المعدل الذي يجب أن يعمل كما هو متوقع:

# تحديد الأعمدة التي تحتوي على القيم المفقودة والتي ترغب في التعامل معها
data_columns_nulls = ['cyto_score', 'cyto_score_detail', 'hla_high_res_6', 'hla_high_res_8', 
                      'hla_high_res_10', 'hla_match_b_high', 'tce_imm_match', 
                      'mrd_hct', 'tce_match', 'tce_div_match']

# مسح القيم المفقودة (NaN) في الأعمدة غير المحددة
for column in data_train.columns:
    if column not in data_columns_nulls:
        data_train = data_train.dropna(subset=[column])

# تعبئة القيم المفقودة (NaN) في الأعمدة المحددة
for column in data_columns_nulls:
    if column in data_train.columns:
        # إذا كان العمود نصي (object)، املأ بـ mode
        if data_train[column].dtype == 'object':
            data_train[column].fillna(data_train[column].mode()[0], inplace=True)
        else:
            # إذا كان العمود رقمي، املأ بـ mean
            data_train[column].fillna(data_train[column].mean(), inplace=True)

# التحقق من القيم المفقودة مرة أخرى
print("-" * 20)
missing_values = data_train.isna().sum()
print(missing_values)

هنا أضفنا inplace=True مع fillna لضمان تعديل القيم داخل الإطار مباشرة.

الف شكرااا جدا جدا لحضرتك

جزاك الله كل خير

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...