DataFrameの値の取り扱い方法 データを置き換える
DataFrameのデータの中で、欠損値ではないけど
あきらかにデータに変な値が入っている・・・。
そんなことがあった場合の処理について、今回はまとめていきたいと思います。
まずは下準備
前回と同じテストデータを使いたいと思います。
国語や英語などのテスト結果をイメージしてみてください。
-999という値は欠損値ではないけれど、おかしな点数ですよね。
こういったあきらかにおかしな値を置き換える処理を行っていきたいと思います。
Japanese | English | math | Science | social studies |
---|---|---|---|---|
100 | -999 | 90 | -999 | 90 |
-999 | 80 | 85 | -999 | 80 |
80 | 92 | 90 | 90 | 85 |
-999 | 90 | 88 | 100 | -999 |
90 | 88 | -999 | 90 | -999 |
まずは実際にデータをDataFrameにいれてみよう
import pandas as pd data = {"Japanese":[100,-999,80,-999,90],"English":[-999,80,92,90,88],"math":[90,85,90,88,-999],"Science":[-999,-999,90,100,90],"social studies":[90,80,85,-999,-999]} df = pd.DataFrame(data) print(df)
dfの結果:
Japanese | English | math | Science | social studies | |
---|---|---|---|---|---|
0 | 100 | -999 | 90 | -999 | 90 |
1 | -999 | 80 | 85 | -999 | 80 |
2 | 80 | 92 | 90 | 90 | 85 |
3 | -999 | 90 | 88 | 100 | -999 |
4 | 90 | 88 | -999 | 90 | -999 |
-999点を修正していこう!
-999点を0点に修正していきたいと思います。
df2 = df.replace(-999,0) print(df2)
df2の結果:
Japanese | English | math | Science | social studies | |
---|---|---|---|---|---|
0 | 100 | 0 | 90 | 0 | 90 |
1 | 0 | 80 | 85 | 0 | 80 |
2 | 80 | 92 | 90 | 90 | 85 |
3 | 0 | 90 | 88 | 100 | 0 |
4 | 90 | 88 | 0 | 90 | 0 |
これで-999点が0点に変更されました。
今回は-999点のみが置き換え用のデータでしたが、 1つの処理で複数のデータを置き換えることも可能です。
例えば
df3 = df.replace([92,100],"合格")
とすれば、92点と100点のところが「合格」という言葉に置き換えられます。
Japanese | English | math | Science | social studies | |
---|---|---|---|---|---|
0 | 合格 | -999 | 90 | -999 | 90 |
1 | -999 | 80 | 85 | -999 | 80 |
2 | 80 | 合格 | 90 | 90 | 85 |
3 | -999 | 90 | 88 | 合格 | -999 |
4 | 90 | 88 | -999 | 90 | -999 |
また、以下のように-999点を0点、100点と合格という置き換えを同時に行うことも可能です。
df4 = df.replace([-999,100],[0,"合格"]) #このように書くことも可能です。←こっちのほうが見やすいかな? df5 = df.replace({-999:0,100:"合格"})
df4とdf5の結果
Japanese | English | math | Science | social studies | |
---|---|---|---|---|---|
0 | 合格 | 0 | 90 | 0 | 90 |
1 | 0 | 80 | 85 | 0 | 80 |
2 | 80 | 合格 | 90 | 90 | 85 |
3 | 0 | 90 | 88 | 合格 | 0 |
4 | 90 | 88 | 0 | 90 | 0 |
このように、一度に複数のデータを同時に置き換えることも可能です。
<最終更新日:2021/10/08>
2021/10/08 投稿