《python数据分析与挖掘实战》笔记-3.1代码问题

来源:互联网 发布:刺客信条起源 知乎 编辑:程序博客网 时间:2024/04/27 23:05

问题

今天看到《python数据分析与挖掘实战》这本书的第三章的第一份代码,照着书上的代码敲了一遍,发现在异常值处理的部分会报错。

x = p['fliers'][0].get_xdata()y = p['fliers'][0].get_ydata()
  • 1
  • 2

报错信息:

TypeError: 'AxesSubplot' object is not subscriptable
  • 1

解决方案

解决的方法很简单,只需在使用DataFrame创建箱线图的时候加上return_type= ‘dict’即可。 
具体可见pandas的官方文档 
截图如下 
这里写图片描述

目前只知道这么改可以成功,具体为什么还没仔细看文档。先挖个坑,等有空把文档翻译一下。

最后附上完整代码

# -*- coding:utf-8 -*-import pandas as pdimport matplotlib.pyplot as pltcatering_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'] = Falseplt.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()
阅读全文
0 0
原创粉丝点击