今天看到《python数据分析与挖掘实战》这本书的第三章的第一份代码,照着书上的代码敲了一遍,发现在异常值处理的部分会报错。
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
报错信息:
TypeError:'AxesSubplot'objectisnot subscriptable
解决的方法很简单,只需在使用DataFrame创建箱线图的时候加上return_type= ‘dict’即可。
具体可见pandas的官方文档
截图如下
import pandas as pd import matplotlib.pyplot as plt
catering_sale = '../data_learn/catering_sale.xls'
data = pd.read_excel(catering_sale, index_col='日期') #
print(data.describe()) plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False plt.figure() #
p = data.boxplot() # 书上的版本 p = data.boxplot(return_type='dict')
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
y.sort()
for i in range(len(x)):
if i > 0:
plt.annotate(y[i], xy=(x[i], y[i]), xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]), y[i]))
else: plt.annotate(y[i], xy=(x[i], y[i]), xytext=(x[i]+0.08, y[i]))
plt.show()