Невозможно построить тепловую карту одного столбца относительно других

1

С помощью вопроса: Тепловая карта корреляции я попробовал следующее:

import pandas
import seaborn as sns 
dataframe = pandas.read_csv("training.csv", header=0,index_col=0)
for a in list(['output']):
    for b in list(dataframe.columns.values):
        corr.loc[a, b] = dataframe.corr().loc[a, b]
        print(b)
print(corr)
sns.heatmap(corr['output'])

Я получил следующую ошибку:

IndexError: Inconsistent shape between the condition and the input (got (8, 1) and (8,))

Я не хочу иметь тепловую карту корреляции всех значений со всеми значениями. Я только хочу иметь соотношение одного столбца по отношению к другим.

Пожалуйста, дайте мне знать, что мне не хватает.

  • 0
    Часто, когда вы получаете что-то подобное (8, 1) and (8,) вам просто нужно изменить форму (8,) чтобы она была (8,1) . Допустим, массив X равен (n,) . чтобы получить (n,1) то X.reshape(-1,1) или X[:,np.newaxis]
  • 0
    Но вы только что попытались повторить примеры из документации по морским делам? seaborn.pydata.org/generated/seaborn.heatmap.html
Показать ещё 1 комментарий
Теги:
pandas
python-3.x
correlation
heatmap

2 ответа

1
Лучший ответ

Вы пытаетесь построить pd.Series из pd.Series - это не работает. pd.Series - это 1D-объект, а seaborn.heatmap() обычно используется для 2D-структур данных.

sns.heatmap(corr[['output']]) - сделает работу

df = pd.DataFrame(data=[[1,2,3],[5,4,3],[5,4,12]],index=[0,1,2],columns=['A','B','C'])
df.corr().loc['A',:]

Из [13]:

A 1.0

B 1.0

С 0,5

Имя: A, dtype: float64

sns.heatmap(df.corr().loc[['A'],:])

Изображение 174551

  • 0
    Спасибо за ваш ответ. Это помогло мне.
  • 0
    @JafferWilson Добро пожаловать!
Показать ещё 3 комментария
1

В соответствии

sns.heatmap(corr['output'])

corr['output'] является pd.Series. Документация гласит

data: прямоугольный набор данных

2D набор данных, который может быть приведен к ndarray. Если предоставляется Pandas DataFrame, информация индекса/столбца будет использоваться для маркировки столбцов и строк.

Ты пишешь

Я не хочу иметь тепловую карту корреляции всех значений со всеми значениями. Я только хочу иметь соотношение одного столбца по отношению к другим.

В этом случае, почему тепловая карта? Ваши данные являются одномерными. Вы можете использовать диаграмму, например, с помощью pd.DataFrame.corrwith:

dataframe.corrwith(dataframe['some_specific_column']).plot(kind='barh')
  • 0
    Спасибо за ваш ответ. Дело сейчас, я просто использую один столбец. Но в будущем я могу использовать 2 или 3, тогда мне может понадобиться тепловая карта для оценки корреляции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню