numpy.ndarray' object has no attribute 'index'錯誤
請問我將'AMT_INCOME_TOTAL'欄位取出後,根據CDF的定義是累積分布函數,因此將此做sort排序,後來發生'numpy.ndarray' object has no attribute 'index'的報錯
另外plt.plot(list(cdf.index), cdf/cdf.max())此行是做百分比的運算嗎
不好意思要麻煩釋疑
回答列表
-
2019/04/26 下午 02:48白學群贊同數:0不贊同數:0留言數:0
您好:
'numpy.ndarray' object has no attribute 'index' 此行報錯的原因是,您取出來的資料型態為ndarray,並非Dataframe or Series,所以沒有 ".index"這個函數
plt.plot(list(cdf.index), cdf/cdf.max())這行代碼第一個參數為X軸,第二個參數為Y軸,所以並非您所說的百分比,Y軸它是在把每一個欄位除上最大值的動作
希望有幫到您!
謝謝
-
2019/04/29 上午 10:21張維元 (WeiYuan)贊同數:1不贊同數:0留言數:1
這邊提供一個使用參考套件實作的範例:
```
import statsmodels.api as sm
cdf = sm.distributions.ECDF(app_train['AMT_INCOME_TOTAL'])
plt.plot(cdf.x, cdf.y)
plt.xlabel('Value')
plt.ylabel('ECDF')
plt.xlim([cdf.x[1], cdf.x[-1] * 1.05]) # 限制顯示圖片的範圍
plt.ylim([-0.05,1.05]) # 限制顯示圖片的範圍
plt.show() ```
```
畫出來的圖會長這樣:
-
2019/05/04 下午 09:02張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
請問此行程式值行為何ECDF會沒有index功能 ## plt.plot(list(cdf.index), cdf/cdf.max()) AttributeError: 'ECDF' object has no attribute 'index'
=> 這個是作業上提供的寫法嗎?那個寫法你必須要自己算出 cdf ,用其中的 index 跟 max 畫圖。那我們這邊建議可以用 statsmodels 套件,改寫方式可以參考上面的寫法。