2017-10-20 105 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