今天看到《python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》這本書(shū)的第三章的第一份代碼,照著書(shū)上的代碼敲了一遍,發(fā)現(xiàn)在異常值處理的部分會(huì)報(bào)錯(cuò)。
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
報(bào)錯(cuò)信息:
TypeError:'AxesSubplot'objectisnot subscriptable
解決的方法很簡(jiǎn)單,只需在使用DataFrame創(chuàng)建箱線圖的時(shí)候加上return_type= ‘dict’即可。
具體可見(jiàn)pandas的官方文檔
截圖如下
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() # 書(shū)上的版本 ? ? ? ? ? ?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()