DataFrame内の列に欠損が多い時の処理方法

今回は、データ分析を行う際のデータ処理方法について考える。

列の中に多くの欠損値がある場合、その列は分析には使えないことがあるその列を特定の条件で削除する方法をメモする。

スポンサーリンク

列に入ってるデータが少なければ削除したい

Pandasを使用して、特定の列にあるデータの数が一定の閾値(この場合は300)以下であればその列を削除する処理は、以下の手順で実行できます。

  1. 各列の非欠損値(NaNでない値)の数を計算します。
  2. その数が指定した閾値以下の列を特定します。
  3. これらの列をデータフレームから削除します。

以下にサンプルコードを示します。

import pandas as pd

# データフレームの作成(例)
df = pd.DataFrame({
    'A': [1, 2, 3, None, None, ...],  # ... は他のデータを表す
    'B': [1, None, None, None, None, ...],
    # 他の列も同様に
})

# 非欠損値の数が300以下の列を削除
threshold = 300
df = df.drop(columns=[col for col in df.columns if df[col].count() <= threshold])

# 結果の確認
print(df)

このコードでは、各列のcount()メソッドを使用して非欠損値の数を計算し、それが300以下の列を特定して削除しています。データフレームdfは、実際のデータに置き換えてください。



パーセントで削除する方法(〇〇%以下しかデータが入ってない場合列削除)

特定の割合以下の非欠損値を持つ列を削除するには、各列の非欠損値の割合を計算し、その割合が指定した閾値(例えば20%)以下の場合にその列を削除します。

以下の手順で実行できます:

  1. 各列の非欠損値の割合を計算します。
  2. その割合が指定した閾値以下の列を特定します。
  3. これらの列をデータフレームから削除します。

サンプルコードは以下のようになります:

import pandas as pd

# データフレームの作成(例)
df = pd.DataFrame({
    'A': [1, 2, 3, None, None, ...],  # ... は他のデータを表す
    'B': [1, None, None, None, None, ...],
    # 他の列も同様に
})

# 非欠損値の割合が特定の閾値以下の列を削除
threshold_percent = 20  # 20%
threshold = threshold_percent / 100
df = df.drop(columns=[col for col in df.columns if df[col].count() / len(df) <= threshold])

# 結果の確認
print(df)

このコードでは、各列の非欠損値の割合を計算し、それが20%以下の列を特定して削除しています。threshold_percentの値を変更することで、異なる割合の閾値を設定できます。データフレームdfは、実際のデータに置き換えてください。

コメント

タイトルとURLをコピーしました