У меня есть следующий набор данные в панде DataFrame, который я убирала и сохраненную в "filename1.csv"
:TypeError при построении Heatmap с Сиборном
import pandas as pd
df = pd.read_csv("filename1.csv")
print(df)
samples a b c percent_a percent_c ratio_a:b ratio_c:b
0 sample1 185852 6509042 253303 0.028553 0.038916 35.022717 25.696664
1 sample2 218178 6456571 273448 0.033792 0.042352 29.593135 23.611696
2 sample3 251492 6353453 343252 0.039584 0.054026 25.263042 18.509588
3 sample4 232299 6431376 284522 0.036120 0.044240 27.685767 22.604143
..............................
Я хотел бы построить этот DataFrame как Тепловая карта с использованием Сиборна. Во-первых, было бы интересно посмотреть на образцы (один образец в ряду) в отношении двух колонн, percent_a
и percent_c
:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# drop unnecessary columns
df = df.drop(["a", "b", "c", "ratio_a:b", "ratio_c:b"], axis = 1)
sns.heatmap(df)
plt.show()
Однако это выдает ошибку:
TypeError: ufunc 'isnan' not supported for the input types, and the inputs
could not be safely coerced to any supported types according to the casting rule ''safe''
Первоначально я думал, что это означало, что в этом DataFrame были значения NaN
. Однако представляется ошибочным, поскольку
df.isnull().values.any()
выходы False
. Поэтому я подозреваю, что это потому, что samples
- это столбец не численных значений.
Как я могу построить морскую теплоизоляцию таким образом, чтобы были показаны эти категориальные значения?
Да. Тем не менее, я хотел бы, чтобы ось y отображала имена для «образцов», а не только индексы 0, 1, 2, 3 Как это сделать? – ShanZhengYang
Отредактирован ответ. Это то, что вы имели ввиду? – ImportanceOfBeingErnest
Да, вот что меня смутило. Спасибо! – ShanZhengYang