🐍
【Python】欠損値Nullに対してフラグを付与する(セグメント分析の前処理)
やりたいこと
セグメント分析をするときに、ユーザーの特定のカラムが欠損している場合があります。
例えば、後述のケースにおいて、ユーザーの年収が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