AMT_INCOME_TOTAL欄位畫直方圖問題
f_app_train = os.path.join(dir_data, 'application_train.csv')
app_train = pd.read_csv(f_app_train)
app_train.head(1000).hist(column="AMT_INCOME_TOTAL",bins=100)
app_train.hist(column="AMT_INCOME_TOTAL",bins=100)
您好,想請問一下,我在畫 AMT_INCOME_TOTAL 這個欄位的時候,發現好像有些問題,
如上圖,只取前1000筆資料的時候,直方圖以較正常的方式呈現。
而當我取所有的資料,畫取直方圖時,圖形上看起來只剩一條線。
目前猜測可能是"該欄位的值"分布較廣的原因,想請問如果遇到這種狀況,要如何讓直方圖以較正常的方式顯示呢?
我自己有試了一下之前作業的 np.log1p 函式,看起來有比較正常(如下圖)。請問正常業界也是這樣處理資料的可視化嗎? 還是是否有其他方式可以解決呢?
test = np.log1p(app_train['AMT_INCOME_TOTAL'])
test.hist(bins=100)
回答列表
-
2020/06/14 下午 06:26Yang Wang贊同數:1不贊同數:0留言數:1
簡單來說,數據具有偏態的情況下,都會使用數據變換 (data transformation)。 與正態相對,這種機率分布左右不對稱的情形被稱為偏態 (skewness)。 範例中 AMT_INCOME_TOTAL 的圖稱為右偏 (right-skewed)。 將數據進行 log transform 就可以消除偏態,去除偏態目的在於讓資料更接近常態分布,左右對稱、平均值更具有代表性。
-
2020/06/16 上午 01:12張維元 (WeiYuan)贊同數:1不贊同數:0留言數:1
嗨,
這是個好問題,這裡的原因是因為資料當中有一些「極值」的狀況出現導致圖形效果不佳,建議可以利用 info() 的方式先看一下資料。除了講義的方法之外,也可以利用去除極值的方式來處理。
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃
-
2020/06/19 上午 00:36張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
「謝謝您的回答🙂 針對極值的處理方式, 感覺還是要靠經驗去分析背後的原因🤔, 才能決定資料要留還是要去除~~~」
=> 或是靠實驗結果來反推 ><
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃