Python:AttributeError ‘numpy.ndarray’ object has no attribute ‘fillna’

記事公開日:
最終更新日:

This post is also available in: English-US (英語)

Python,Numpy,Pandasあたりを使って、機械学習などのデータ分析をやっている際に欠損値を置き換えたい(fillna)というケースでよく遭遇するエラーかと思います。
よく忘れるので、メモとしてサンプルコードを書き留めています。

基本的にはtrain_yとのデータ数が変わらないようにするために、drop でなく fillna を使うのが楽なのではないかと思います。
ただし、データ分析結果に影響するので、fillna で置き換えるデータには注意する必要はあります。

AttributeError: 'numpy.ndarray' object has no attribute 'fillna'

欠損値を前の値で置き換えたい場合

以下は、欠損値を前の値で置き換えたい場合のサンプルコードです。

# 欠損値を前の値で置き換えたい場合
train_X = train_df.fillna(method='ffill').values

欠損値を前の値で置き換えたい場合

以下は、欠損値を後ろの値で置き換えたい場合のサンプルコードです。

# 欠損値を後ろの値で置き換えたい場合
train_X = train_df.fillna(method='bfill').values

欠損値がある列を削除したい場合

以下は、欠損値がある列を削除したい場合のサンプルコードです。

# 欠損値がある列を削除したい場合
train_X = train_df.drop(train_df.columns[np.isnan(train_df).any()], axis=1).values

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報TwitterLinkedIn、またRSSfeedlyにてお知らせしていますのでフォローよろしくお願い致します。