《python資料分析與挖掘實戰》筆記-3.1程式碼問題
阿新 • • 發佈:2019-02-11
問題
今天看到《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()