pandas Python海运Catplot中的错误:对象没有len()

8fq7wneg  于 2023-01-24  发布在  Python
关注(0)|答案(3)|浏览(134)

给定一些分类数据,如:

import pandas as pd

data = pd.Series(["NY", "NY", "CL", "TX", "CL", "FL", "NY", "FL"])

在原始数据中,这是DataFrame中的一列,我想通过sns.catplot()将其绘制为:

import seaborn as sns
import matplotlib.pyplot as plt

sns.catplot(x=data, kind="count")

但我得到这个错误:

Traceback (most recent call last):
  File "C:\Users\%USERNAME%\PycharmProjects\Troubleshooting\temp.py", line 6, in <module>
    sns.catplot(x=my_data, kind="count")
  File "C:\Users\%USERNAME%\Troubleshooting\lib\site-packages\seaborn\categorical.py", line 3241, in catplot
    g = FacetGrid(**facet_kws)
  File "C:\Users\%USERNAME%\Troubleshooting\lib\site-packages\seaborn\axisgrid.py", line 403, in __init__
    none_na = np.zeros(len(data), bool)
TypeError: object of type 'NoneType' has no len()

Series/Data Frame有形状,长度等,所以我不知道错误消息从何而来。什么是错误,我该如何修复它?
我知道sns.countplot()可以处理这个输入,但是我需要使用catplot来创建计数图。

jxct1oxe

jxct1oxe1#

catplotSeries一起使用实际上没有什么意义,因为当存在多个具有类别的列时,这个更高级别的函数才能自动生成FacetGrid
无论如何,如果你真的想使用catplot,你必须转换成DataFrame,并将数据传递给data,而不是x(这是针对data中的列名):

sns.catplot(data=data.to_frame('x-label'), x='x-label', kind="count")

输出:

gcuhipw9

gcuhipw92#

您应该使用sns.countplot

data = pd.Series(["NY", "NY", "CL", "TX", "CL", "FL", "NY", "FL"])

sns.countplot(x=data)
jdgnovmf

jdgnovmf3#

我想出来了。谢谢你们。
问题是,猫图需要(至少对于DataFrame)显式需要参数“data”,给定DataFrame,然后是“x”的参数,但只有列名。使用参数“x=df[“column_name”]"是不够的。

import seaborn as sns
import pandas as pd

my_data #any dataframe you have

sns.countplot(data=my_data, x="Column 1", kind="count")

相关问题