给定一些分类数据,如:
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来创建计数图。
3条答案
按热度按时间jxct1oxe1#
将
catplot
与Series
一起使用实际上没有什么意义,因为当存在多个具有类别的列时,这个更高级别的函数才能自动生成FacetGrid
。无论如何,如果你真的想使用
catplot
,你必须转换成DataFrame
,并将数据传递给data
,而不是x
(这是针对data
中的列名):输出:
gcuhipw92#
您应该使用
sns.countplot
:jdgnovmf3#
我想出来了。谢谢你们。
问题是,猫图需要(至少对于DataFrame)显式需要参数“data”,给定DataFrame,然后是“x”的参数,但只有列名。使用参数“x=df[“column_name”]"是不够的。