#python #pandas #numpy #matplotlib
Вопрос:
Я пытался построить 3D-диаграмму рассеяния из массива панд (я пытался преобразовать данные в массивы numpy и строки для ввода в систему). Однако ошибка ValueError: s must be a scalar, or float array-like with the same size as x and y
продолжает появляться. Мои данные для идентификатора пациента находятся в формате EMR-001, EMR-002 и т.д. После его удаления. Мои данные на дату выписки преобразуются в строку чисел, например 20200120. Мои данные для диагностического кода представляют собой комбинацию символов, таких как 001 или 10B.
Я также попытался посмотреть в Интернете некоторые другие примеры, но не смог определить ни одной области. Могу ли я обратиться к вам за советом по поводу того, что я пропустил, или кода, который я могу ввести?
Я использую Python 3.9, UTF-8. Заранее благодарю вас!
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#importing csv data via pd
A = pd.read_csv('input.csv') #import file for current master list
Diagnosis_Des = A["Diagnosis Code"]
Discharge_Date = A["Discharge Date"]
Patient_ID = A["Patient ID"]
B = Diagnosis_Des.to_numpy()
#B1 = np.array2string(B)
#print(B.shape)
C = Discharge_Date.to_numpy() #need to change to data format
#C1 = np.array2string(C)
#print(C1)
D = Patient_ID.to_numpy()
#D1 = np.array2string(D)
#print(D.shape)
from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D
sequence_containing_x_vals = D
sequence_containing_y_vals = B
print(type(sequence_containing_y_vals))
sequence_containing_z_vals = C
print(type(sequence_containing_z_vals))
plt.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals)
pyplot.show()
Комментарии:
1. Если вы делаете точечный график,вам нужно, чтобы ось соответствовала цифрам на осях x, y и z. Я полагаю, что вы хотите как-то визуализировать данные? Будет ли работать создание словаря, который связывает с каждым идентификатором строки числовое значение для B и D? В противном случае расположение кодов вдоль оси не определено.
2. Ага, ткс! Я нахожу способ добавить слова str через len