🐍

【Python】欠損値Nullに対してフラグを付与する(セグメント分析の前処理)

2024/12/22に公開

やりたいこと

セグメント分析をするときに、ユーザーの特定のカラムが欠損している場合があります。

例えば、後述のケースにおいて、ユーザーの年収がNUllの場合、fillna()メソッドを使って年収を0で代入してしまうと、それは年収が0万円であるということを意味してしまいます。

やりたいこととしては、年収が0万円ユーザーとそうでないユーザーを分けて分析したいのではなく、年収の入力がある or 年収の入力がないというカテゴリを作って分析したいです。

今回はそのカテゴリを作るための前処理を整理してみます。

実際にやってみる

まずは基本ライブラリをimportします。

import numpy as np
import pandas as pd

説明用に、こんなdatafarameを作ってみます。

df = pd.DataFrame(
    {
        'user_id': [100, 108, 107, 110, 113, 105, 101, 120, 106, 111],
        'age': [25, 34, 56, 22, 32, 45, 38, 28, 30, 31],
        'salary': [500, 1000, 350, np.nan, 680, 400, 900, np.nan, 800, 420],
    })

dfを呼び出すと、こんなdataframeができました。

apply()メソッドの中でpd.isnull()を使うことで、欠損値があるかどうかでフラグを付与することができます。

df['nan_flg'] = df['salary'].apply(lambda x: 1 if pd.isnull(x) else 0)

nan_flgというカラムを付与したdataframeはこんな感じになりました。

あとはユースケースに依りますが、groupby()などを使ってnan_flg==1 or nan_flg==0によってグループ分けをして違いを確認するなどの分析に進みます。

Discussion