pandas入門7_「欠損値の扱い」
こんにちは、ワタルです。
さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。
pandas入門第7回目、「欠損値の扱い」です。
今回の学習内容
今回は、欠損値が含まれたデータに対して、様々な対応の方法を学んでいきます。
今回学ぶ関数
今回は、以下の関数について学びます。
series.isnull()(欠損値を見つける) series.dropna()(欠損値を取り除く) dataframe.dropna()(dataframeの欠損値を取り除く) dataframe.drop(how='all')(全てが欠損値の行を落とす) dataframe.dropna(axis=1)(欠損値を含む列を落とす) dframe.dropna(thresh=n)(欠損値でない要素が決めた閾値数以上の行のみ表示する) dframe2.fillna(n)(欠損値を任意の数字で埋める)
- 今回の学習内容
- 今回学ぶ関数
- おまじない
- series.isnull()(欠損値を見つける)
- series.dropna()(欠損値を取り除く)
- dataframe.dropna()(dataframeの欠損値を取り除く)
- dframe2.fillna(n)(欠損値を任意の数字で埋める)
- 終わりに
おまじない
import numpy as np from numpy import nan from pandas import Series,DataFrame import pandas as pd
series.isnull()(欠損値を見つける)
#欠損値の含まれたseriesをつくります data = Series(['one','two', np.nan, 'four']) data >>> 0 one 1 two 2 NaN 3 four dtype: object
#null値を見つけます。 data.isnull() >>> 0 False 1 False 2 True 3 False dtype: bool
series.dropna()(欠損値を取り除く)
data.dropna() #欠損値の含まれていたindexが2の要素がなくなっていることがわかります >>> 0 one 1 two 3 four dtype: object
dataframe.dropna()(dataframeの欠損値を取り除く)
#seriesと同様にdataframeでも同じことができます #まずはdataframeをつくります dframe = DataFrame([[1,2,3],[np.nan,5,6],[7,np.nan,9],[np.nan,np.nan,np.nan]]) dframe >>> 0 1 2 0 1.0 2.0 3.0 1 NaN 5.0 6.0 2 7.0 NaN 9.0 3 NaN NaN NaN
dframe.dropna() #欠損値の含まれていないindexが0の行だけ残っていることがわかります >>> 0 1 2 0 1.0 2.0 3.0
dataframe.drop(how='all')(全てが欠損値の行を落とす)
dframe.dropna(how='all') #引数にhow='all'を指定したことで、全てが欠損値の行だけなくなっていることがわかります >>> 0 1 2 0 1.0 2.0 3.0 1 NaN 5.0 6.0 2 7.0 NaN 9.0
dataframe.dropna(axis=1)(欠損値を含む列を落とす)
dframe.dropna(axis=1) #どの列にも1つは欠損値があるので、すべての列がなくなっていることがわかります >>> 0 1 2 3
dframe.dropna(thresh=n)(欠損値でない要素が決めた閾値数以上の行のみ表示する)
#別のdataframeをつくります dframe2 = DataFrame([[1,2,3,np.nan],[2,np.nan,5,6],[np.nan,7,np.nan,9],[1,np.nan,np.nan,np.nan]]) dframe2 >>> 0 1 2 3 0 1.0 2.0 3.0 NaN 1 2.0 NaN 5.0 6.0 2 NaN 7.0 NaN 9.0 3 1.0 NaN NaN NaN
#nullではない値が2個以上存在する行のみ表示していることがわかります #つまり、index = 3の行がなくなっています dframe2.dropna(thresh=2) >>> 0 1 2 3 0 1.0 2.0 3.0 NaN 1 2.0 NaN 5.0 6.0 2 NaN 7.0 NaN 9.0
dframe2.fillna(n)(欠損値を任意の数字で埋める)
#欠損値を1で埋めてみます dframe2.fillna(1) >>> 0 1 2 3 0 1.0 2.0 3.0 1.0 1 2.0 1.0 5.0 6.0 2 1.0 7.0 1.0 9.0 3 1.0 1.0 1.0 1.0
列ごとに埋める値を決める
#0列目の欠損値には0を、1列目の欠損値には1を、というように埋めてみます dframe2.fillna({0:0,1:1,2:2,3:3}) >>> 0 1 2 3 0 1.0 2.0 3.0 3.0 1 2.0 1.0 5.0 6.0 2 0.0 7.0 2.0 9.0 3 1.0 1.0 2.0 3.0
終わりに
今回は、欠損値が含まれたデータに対して、様々な対応の方法について学びました。
お疲れ様でした!
次回はこちら
それじゃー、また。