'DataFrame' object has no attribute 'ix'の解決法


はじめに

オライリージャパンの「Pythonではじめる機械学習」の4章のp.210の以下のコードを打ち込んだ時,エラーが発生しました.

features = data_dummies.ix[:,"age":"occupation_ Transport-moving"]
#NumPy配列を取り出す
X = features.values
y = data_dummies["income_ >50K"].values
print("X.shape: {} y.shape: {}".format(X.shape,y.shape))

エラー内容

'DataFrame' object has no attribute 'ix'

解決法

調べてみると,2020年2月に導入されたpandas-1.0.0で,以前バージョン0.7.3まで使用できたDataFrameの.ixが廃止されたそうです.
しかし,代わりにlocを用いることで解決できます.

features = data_dummies.loc[:,"age":"occupation_ Transport-moving"]
#NumPy配列を取り出す
X = features.values
y = data_dummies["income_ >50K"].values
print("X.shape: {} y.shape: {}".format(X.shape,y.shape))

loc使用後

X.shape: (32561, 44) y.shape: (32561,)

エラーが消えました.

参考

https://ebcrpa.jamstec.go.jp/~yyousuke/matplotlib/info.html ,2021/2/25参照