如何用含百分比的DataFrame绘制分组箱线图?遇‘Series无boxplot属性’报错
问题解决:'Series' object has no attribute 'boxplot'
错误原因
你代码里这一行出了问题:
df = df.astype({'Total': 'float64'}).dtypes
.dtypes会返回一个Series对象,用来显示DataFrame各列的数据类型,你把这个结果赋值给了df,导致原来的DataFrame被覆盖成了Series,而Series没有boxplot方法,所以报错。
修正后的完整代码
import pandas as pd import matplotlib.pyplot as plt # 这里要导入pyplot子模块,不是直接导入matplotlib import numpy as np df = pd.read_csv("cleaned-A1data.csv") # 正确处理Total列:先去掉百分号,再转成float类型 df["Total"] = df["Total"].str.rstrip('%').astype('float64') # 绘制并列箱线图 df.boxplot(column=['Total'], by=['Region']) plt.show() # 加上这行才能显示图形
额外说明
- 原来的
import matplotlib as plt是错误的,matplotlib的绘图功能在matplotlib.pyplot模块里,必须导入这个子模块才能正常显示图形。 - 处理
Total列时,直接对该列进行类型转换即可,不需要覆盖整个df,也不需要调用.dtypes。
内容的提问来源于stack exchange,提问作者Spiral
相关产品推荐
相关产品推荐

