пара seaborn после преобразования целочисленного столбца в строку - PullRequest
0 голосов
/ 06 мая 2019

У меня проблема с seaborn.pairplot () с кодом ниже

У меня есть фрейм данных, и в одном случае мне нужно преобразовать один из столбцов в строку;После преобразования в строку.Pairplot () не работает должным образом.Как решить проблему.

Ниже приведен код,

import numpy as np 
from pandas import DataFrame
import seaborn as sns
%matplotlib inline

Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
Cols = ['A', 'B', 'C', 'D']
df_temp = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols)

print(df_temp)

sns.pairplot(df_temp) # This works

# convert one of the column to String datatype
df_temp['A'] = df_temp['A'].astype(str)
sns.pairplot(df_temp) # Gives error

Полный журнал ошибок - Журнал ошибок

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

На диагонали парного графика есть гистограммы.Невозможно нарисовать гистограммы из строк.Поскольку в таком случае я не уверен, что вы хотели бы показать на диагонали, давайте оставим это в стороне и просто построим сетку пары из кадра данных, который содержит строки в одном столбце,

import matplotlib.pyplot as plt
import numpy as np 
from pandas import DataFrame
import seaborn as sns


Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
Cols = ['A', 'B', 'C', 'D']
df = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols)
df['A'] = list("VWXYZ")

g = sns.PairGrid(df, vars=df.columns, height=2)
g.map_offdiag(sns.scatterplot)

plt.show()

enter image description here

Если вместо этого целью является использование только числовых столбцов, вы можете отфильтровать кадр данных по типу d.

import matplotlib.pyplot as plt
import numpy as np 
from pandas import DataFrame
import seaborn as sns

Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
Cols = ['A', 'B', 'C', 'D']
df = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols)


# convert one of the column to String datatype
df['A'] = df['A'].astype(str)
sns.pairplot(df.select_dtypes(include=[np.number])) 

plt.show()

enter image description here

1 голос
/ 07 мая 2019
import numpy as np 
from pandas import DataFrame
import seaborn as sns
%matplotlib inline

Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
Cols = ['A', 'B', 'C', 'D']
df_temp = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols)

print(df_temp)

# convert one of the column to String datatype
df_temp['A'] = df_temp['A'].astype(str)

Вы можете найти все столбцы типа float и построить только те.

cols_to_plot=df_temp[df_temp.types=='float']#find not strings

sns.pairplot(df_temp[cols_to_plot[cols_to_plot==1].index]) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...