首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将整型列转换为字符串后的seaborn pairplot

将整型列转换为字符串后的seaborn pairplot
EN

Stack Overflow用户
提问于 2019-05-06 21:06:08
回答 2查看 1K关注 0票数 0

我在使用seaborn.pairplot()时遇到了一个问题,使用下面的代码

我有一个数据帧,在一种情况下,我必须将其中一列转换为字符串;在转换为字符串之后。Pairplot()不能正常工作。如何解决这个问题。

下面是代码,

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-06 22:15:20

在成对图的对角线上有直方图。不可能从字符串中绘制历史图形。由于我不确定在这种情况下您想要在对角线上显示什么,我们就省略它,简单地从包含一列字符串的数据帧中绘制一对网格,

代码语言:javascript
复制
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过滤数据帧。

代码语言:javascript
复制
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()

票数 2
EN

Stack Overflow用户

发布于 2019-05-07 15:37:40

代码语言:javascript
复制
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的列,并仅绘制这些列。

代码语言:javascript
复制
cols_to_plot=df_temp[df_temp.types=='float']#find not strings

sns.pairplot(df_temp[cols_to_plot[cols_to_plot==1].index]) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56005876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档