如何解决seaborn调用countplot函数时出现的FutureWarning警告?
警告触发原因
Seaborn 0.12及以上版本对绘图函数的参数传递规则做了调整:只有data参数支持作为位置参数传入,其余维度类参数(如x、y、hue等)必须显式通过关键字参数指定,否则就会触发该FutureWarning。
你代码中sns.countplot(ex_emp['dept'])这行直接把列数据作为位置参数传入,没有指定x=关键字,是警告的触发来源。
警告原文:
FutureWarning: 请将以下变量作为关键字参数x传入。从0.12版本开始,唯一有效的位置参数将为data,未显式指定关键字就传入其他参数会导致报错或结果解析错误。
修复方法
修改countplot的参数写法即可,有两种兼容写法可选:
- 直接给传入的列数据加
x=关键字前缀:
sns.countplot(x=ex_emp['dept'])
- 采用Seaborn官方推荐的标准写法,先传入数据集,再指定要统计的列名:
sns.countplot(data=ex_emp, x='dept')
这种写法代码可读性更强,也完全兼容后续的Seaborn版本。
额外优化提示
你原有代码中plt.figure(figsize=(10,5))的位置放在了绘图语句之后,会导致新建一个空白画布,最终保存的图片没有统计图表,调整语句顺序后的完整可运行代码如下:
import seaborn as sns import matplotlib.pyplot as plt # 先设置画布尺寸 plt.figure(figsize=(10,5)) # 修复后的绘图语句 sns.countplot(data=ex_emp, x='dept') plt.title('Department of Employees Who Left') plt.savefig('ex_dept.png', bbox_inches='tight') plt.show()
内容的提问来源于stack exchange,提问作者Damilola Omolusi
相关产品推荐
相关产品推荐

