我在使用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完整的错误日志- Error log
发布于 2019-05-06 22:15:20
在成对图的对角线上有直方图。不可能从字符串中绘制历史图形。由于我不确定在这种情况下您想要在对角线上显示什么,我们就省略它,简单地从包含一列字符串的数据帧中绘制一对网格,
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()

如果目标是仅使用数字列,则可以按dtype过滤数据帧。
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()

发布于 2019-05-07 15:37:40
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]) https://stackoverflow.com/questions/56005876
复制相似问题