Когда вы создаете пустой массив со строкой, все другие значения в массиве также будут обрабатываться как объекты.
X = numpy.array([[-1, -1, "A"]])
print (X)
array([['-1', '-1', 'A']], dtype='<U11')
P = numpy.array([[-0.8, -1]])
array([[-0.8, -1. ]]) ## Remains as float.
Итак, создание кадра данных сarray X
приведет к кадру данных, где все столбцы являются объектами, где data_p
останется с плавающей точкой.
data_x = pandas.DataFrame(X, columns=('x','y','group'))
print (data_x.dtypes)
x object
y object ## object dtypes
group object
dtype: object
data_p = pandas.DataFrame(P, columns=('x','y'))
data_p['group'] = "B"
print (data_p.dtypes)
x float64
y float64 ## Here x and y remains as float.
group object
dtype: object
Теперь, когда вы concat
оба кадра данных, Здесь x
и y
столбцыбудучи объектом в одном и плавающим в другом, по умолчанию будет объект dtype
в combined
.
combined = pandas.concat([data_x, data_p], ignore_index=True, sort=True)
print (combined.dtypes)
group object
x object
y object
dtype: object
Таким образом, причина для TypeError
заключается в том, что результирующие столбцы x & y
являются объектами типа dtype.Точечный график требует числовые столбцы для построения.
combined = combined.apply(pd.to_numeric, errors='ignore') ## Convert to numeric
group object
x float64
y float64
dtype: object
seaborn.scatterplot(data=combined, x='x', y='y')
![Plot](https://i.stack.imgur.com/RX7x1.png)