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

问题

今天看到《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 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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章