gpt4 book ai didi

python - 在pandas中,如何将数字类型转换为类别类型以与seaborn Hue一起使用

转载 作者:行者123 更新时间:2023-12-01 00:01:59 25 4
gpt4 key购买 nike

我陷入了一个看似简单的问题,试图为我正在创建的散点图上的不同组着色。我有以下示例数据框和图表:

test_df = pd.DataFrame({ 'A' : 1.,
'B' : np.array([1, 5, 9, 7, 3], dtype='int32'),
'C' : np.array([6, 7, 8, 9, 3], dtype='int32'),
'D' : np.array([2, 2, 3, 4, 4], dtype='int32'),
'E' : pd.Categorical(["test","train","test","train","train"]),
'F' : 'foo' })

# fix to category
# test_df['D'] = test_df["D"].astype('category')

# and test plot
f, ax = plt.subplots(figsize=(6,6))
ax = sns.scatterplot(x="B", y="C", hue="D", s=100,
data=test_df)

它创建了这个图表:

enter image description here然而,我想要 3 个类别 [2,3,4] 中每一个的分类尺度,而不是连续尺度。取消注释代码行 test_df['D'] = ... 后,将此列更改为类别列类型以在 seaborn 图中进行类别着色,我收到以下错误seaborn 绘图:TypeError:数据类型无法理解

有人知道将此数字列转换为因子/分类列以用于着色的正确方法吗?

谢谢!

最佳答案

我复制/粘贴了您的代码,添加了用于导入的库并删除了注释,因为我认为它看起来不错。我得到了一个带有值 [2,3,4] 的“分类”着色的图,而无需更改任何代码。

尝试使用以下命令更新您的seaborn模块:pip install --upgrade seaborn

这是与您的代码一起使用的工作库的列表。

matplotlib==3.1.2
numpy==1.18.1
seaborn==0.10.0
pandas==0.25.3

...执行了下面的代码。

import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

test_df = pd.DataFrame({ 'A' : 1.,
'B' : np.array([1, 5, 9, 7, 3], dtype='int32'),
'C' : np.array([6, 7, 8, 9, 3], dtype='int32'),
'D' : np.array([2, 2, 3, 4, 4], dtype='int32'),
'E' : pd.Categorical(["test","train","test","train","train"]),
'F' : 'foo' })

# fix to category
test_df['D'] = test_df["D"].astype('category')

# and test plot
f, ax = plt.subplots(figsize=(6,6))
ax = sns.scatterplot(x="B", y="C", hue="D", s=100,
data=test_df)
plt.show()

关于python - 在pandas中,如何将数字类型转换为类别类型以与seaborn Hue一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60271606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com