#python #dataframe #numpy #for-loop #dtype
Вопрос:
Я пытаюсь создать корреляционную матрицу из моего фрейма данных со всеми переменными, вот цикл, который я создал:
########################################### ###Coefficient de corrélation de Pearson### ########################################### from scipy.stats import pearsonr attribute_list = ["model", "year", "price", "transmission", "mileage", "fuelType", "tax", "mpg", "engineSize"] correlation_coefficient_matrix = np.zeros((len(attribute_list), len(attribute_list))) pvalue_matrix = np.zeros((len(attribute_list), len(attribute_list))) for i in range(len(attribute_list)): for j in range(len(attribute_list)): if i gt;= j: x = my_data_frame[attribute_list[i]].values y = my_data_frame[attribute_list[j]].values r1, pvalue = pearsonr(x, y) if i == j: correlation_coefficient_matrix[i, j] = r1 pvalue_matrix[i, j] = pvalue if i gt; j: correlation_coefficient_matrix[i, j] = r1 pvalue_matrix[i, j] = pvalue correlation_coefficient_matrix[j, i] = r1 pvalue_matrix[j, i] = pvalue print("This is the correlation matrix between variables, the variables are:") print(attribute_list) print("n") print(correlation_coefficient_matrix) print("n") print(pvalue_matrix)
Вот ошибка, которая появляется:
Traceback (most recent call last): File "C:/Users/utilisateur/Desktop/OUTILS DE PROGRAMMATION POUR LA SCIENCE DES DONNÉES/TP1.py", line 127, in lt;modulegt; r1, value = pearsonr(x, y) File "C:Usersutilisateuranaconda3libsite-packagesscipystatsstats.py", line 3919, in pearsonr dtype = type(1.0 x[0] y[0]) TypeError: unsupported operand type(s) for : 'float' and 'str'
Кто-нибудь может мне в этом помочь? Я знаю, что это как-то связано с тем, что типы float и string не преобразуются должным образом, но я заблудился…
Спасибо!
Комментарии:
1.
1.0
это поплавок.x
илиy
должны быть строками, или, поскольку они исходят из dataframe .values, массивы типов объектов dtype, содержащие строки.2. Я не уверен, что понял ваш ответ, я должен преобразовать свои переменные x и y в строки?
3. Что ты пытаешься сделать? Я думаю
x
, иy
уже содержат строки.для строк-это соединение.
для чисел это сложение.