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