#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