1. 程式人生 > >《python資料分析與挖掘實戰》筆記-3.1程式碼問題

《python資料分析與挖掘實戰》筆記-3.1程式碼問題

問題

今天看到《python資料分析與挖掘實戰》這本書的第三章的第一份程式碼,照著書上的程式碼敲了一遍,發現在異常值處理的部分會報錯。

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

報錯資訊:

TypeError: 'AxesSubplot' object is not subscriptable

解決方案

解決的方法很簡單,只需在使用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()