问题
今天看到《python数据分析与挖掘实战》这本书的第三章的第一份代码,照着书上的代码敲了一遍,发现在异常值处理的部分会报错。
x = p['fliers'][0].get_xdata() y = p['fliers'][0].get_ydata() [/code] 报错信息: ```code TypeError: 'AxesSubplot' object is not subscriptable [/code] # 解决方案 解决的方法很简单,只需在使用DataFrame创建箱线图的时候加上 **return_type= ‘dict’** 即可。 具体可见 [ pandas的官方文档 ](http://pandas.pydata.org/pandas- docs/stable/generated/pandas.DataFrame.boxplot.html) 截图如下  目前只知道这么改可以成功,具体为什么还没仔细看文档。先挖个坑,等有空把文档翻译一下。 最后附上完整代码 ```code # -*- coding:utf-8 -*- 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()