-1や999など欠損値として格納されているデータをpandasのreplaceを使ってNaNに変換する方法を書く。
サンプルデータフレームの作成
まずはサンプルのために簡単なデータフレームを作成する。
欠損値は、-1, 999, 1000とする。
import pandas as pd df = pd.DataFrame([[1,2,-1,4,5],[1000,5,6,999,8]],['a','b'])
dfは以下のようになる。
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
a | 1 | 2 | -1 | 4 | 5 |
b | 1000 | 5 | 6 | 999 | 8 |
欠損値をNaNに変換する
pandasのreplaceメソッドを利用して変換できる。
df2 = df.replace([-1, 999, 1000], np.nan)
df2は以下のようになる。
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
a | 1 | 2 | NaN | 4 | 5 |
b | NaN | 5 | 6 | NaN | 8 |
文法は
df.replace(変換したい対象, 変換後のデータ)
と書き、変換したい対象はリストを指定することも可能。
他に例えば0に統一したい場合は、
df2 = df.replace([-1, 999, 1000], 0)
とするだけ。
元のデータフレームを変更してしまう
先ほどのようにdf2をわざわざ作成せずに、元のdfを書き換えてしまうにはオプションとしてreplaceをつけるだけ。
df.replace([-1, 999, 1000], np.nan, inplace=True)
これでdfが直接変換される。