サイトアイコン Amelt.net

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

Amelt

Amelt

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