Невозможно построить тепловую карту одного столбца относительно других - PullRequest
0 голосов
/ 11 января 2019

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

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,))

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

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

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вы пытаетесь построить тепловую карту из pd.Series - это не работает. pd.Series является одномерным объектом, в то время как 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

C 0,5

Имя: A, dtype: float64

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

enter image description here

0 голосов
/ 11 января 2019

В строке

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...