使用Seaborn flights数据集时遇TypeError:category类型不支持求和操作
解决Flights数据集sum操作及绘图的TypeError问题
错误原因
Seaborn自带的flights数据集中,month字段是category类型。当执行groupby(['year']).sum()时,Pandas会默认对所有列执行求和操作,但category类型不支持sum运算,因此抛出TypeError: category type does not support sum operations。clustermap和lineplot出现问题也是同理——这类绘图函数在处理数据时会隐含数值计算,category列的存在干扰了计算逻辑。
解决办法
1. 仅对数值列执行聚合操作
直接指定只对passengers(唯一数值列)求和,避免触发对category列的运算:
import seaborn as sns flights = sns.load_dataset('flights') flights.groupby(['year'])['passengers'].sum()
2. 转换category列类型(需保留month列时)
如果后续需要用到month列进行分析或绘图,可将其转为字符串类型,消除类型限制:
import seaborn as sns flights = sns.load_dataset('flights') flights['month'] = flights['month'].astype(str) # 此时再执行groupby求和就不会报错 flights.groupby(['year']).sum()
3. 针对绘图函数的适配方案
- lineplot:明确指定x、y轴对应的字段,避免函数自动识别错误列:
sns.lineplot(data=flights, x='year', y='passengers') - clustermap:先将数据转为透视表,只保留数值型的乘客数关系,再传入绘图函数:
flight_pivot = flights.pivot(index='month', columns='year', values='passengers') sns.clustermap(flight_pivot)
内容的提问来源于stack exchange,提问作者wonder_prit
相关产品推荐
相关产品推荐

