2017-10-20 55 views
0

目前我正在機器學習的jupyter當然從大熊貓數據框中似乎沒有「分比化」的方法

https://github.com/ageron/handson-ml

在chapter02,大熊貓數據幀「housing_cat」應該由熊貓方法被因式分解「比化「

housing_cat.factorize() 

然而,蟒蛇告訴我

'DataFrame' object has no attribute 'factorize' 

當我輸入「housing_cat」。並使用TAB進行方法選擇,我也無法找到「因式分解」。熊貓由「進口熊貓」進口,類型(housing_cat)也告訴我這是一個熊貓數據框。我使用熊貓v0.20.3 那麼這裏有什麼問題?

+1

因式分解法適用於1-D類型,而DataFrames則是2-D。如果您可以將'housing_cat'投射到熊貓系列,您可以使用'housing_cat.factorize()' – Sumido

+0

筆記本電腦剛剛修復,現在工作正常。 – MiniQuark

回答

1

有雙向此。

df.apply(lambda x : pd.factorize(x)[0])

df.apply(lambda x : x.astype('category').cat.codes)

爲什麼會導致您的問題:做下面的工作

from pandas import factorize 

housing_cat.factorize() 
+0

謝謝我會嘗試以這種方式修改代碼 – Rockbar

+0

@Rockbar,或者你可以調用sklearn,有一個'LabelEncoder',http://scikit-learn.org/stable /modules/generated/sklearn.preprocessing.LabelEncoder.html – Wen

+0

是的,我知道。但是,這本書/ jupyter筆記本的作者最近從LabelEncoder變成因式分解 – Rockbar

1

您可能希望確保housing_cat是一系列類型,而不是一個在應用housing_cat.factorize()之前的DataFrame。

+0

這就是合理的 – Rockbar