Корреляция для полного набора данных без каких-либо значений nan обеспечивает nan

#python #python-3.x #pandas #dataframe #correlation

Вопрос:

Корреляция для полного набора данных без каких-либо значений nan обеспечивает nan. Я закодировал все категориальные столбцы в числовые.

Пожалуйста, проверьте код ниже

 train_data.dypes
 

Выход есть :

 Order_Ref_Number                 int64
Product_Ref_ID                   int64
Size                             int64
Color_Code                       int64
Product_Category_Reference       int64
Cost_to_Customer(USD)          float64
Customer_ID                      int64
Gender                           int64
Customer_BirthDate               int64
Customer_Location                int64
Order_Placed_AT_day              int64
Order_Placed_AT_month            int64
Order_Placed_AT_year             int64
Order_Delivered_Date_day         int64
Order_Delivered_Date_month       int64
Order_Delivered_Date_year        int64
Customer_Joining_Date_day        int64
Customer_Joining_Date_month      int64
Customer_Joining_Date_year       int64
Order_Repeat_Chance              int64
dtype: object
 

Далее следует код :

 correlation = train_data.corr()
print(correlation['Order_Repeat_Chance'].sort_values(ascending = False), 'n')
 

Выход есть :

 Order_Repeat_Chance            1.000000
Cost_to_Customer(USD)          0.142347
Order_Ref_Number               0.061362
Order_Placed_AT_month          0.060764
Product_Ref_ID                 0.055347
Customer_BirthDate             0.050837
Order_Delivered_Date_month     0.040939
Product_Category_Reference     0.025365
Order_Delivered_Date_year      0.022811
Order_Delivered_Date_day       0.015046
Gender                         0.007147
Customer_ID                    0.002988
Customer_Location              0.002294
Customer_Joining_Date_day     -0.000358
Order_Placed_AT_day           -0.011442
Customer_Joining_Date_month   -0.021122
Color_Code                    -0.022827
Customer_Joining_Date_year    -0.024684
Size                          -0.035805
Order_Placed_AT_year                NaN
Name: Order_Repeat_Chance, dtype: float64
 

Ответ №1:

Не видя вас train_data , трудно сказать. Но вполне вероятно, что все числа в Order_Placed_AT_year одинаковы? Потому что тогда corr НаН:

 import pandas as pd
df = pd.DataFrame({'x':[1,2,3],'y':[1,1,1]})
df.corr()
 

дает

 
    x   y
x   1.0 NaN
y   NaN NaN
 

это так из-за std постоянного временного ряда 0 , и вы делите его на это при расчете corr