今回の講義はPandasの操作に関する問題を出されて
それを実際にコードを書いて解いていくという内容です。
特定のテーマに沿った課題に取り組みながら
スキルを向上させていきます。
前準備として、問題に出てくるデータは下記URLから
ダウンロードしておく必要があります。
https://drive.google.com/drive/folders/1oKCLH1D_KXVLJFutxtP1dvzgWNYtoqVi
Pandas 20本ノック
問題その12 欠損値の確認
dfの欠損値を確認してください。
まずはデータを読み込んでdfに代入します。
import pandas as pd
df = pd.read_csv('weather.csv')
df
こうしてデータを見てみると
Nan (非数=Not a Number)がけっこうあることがわかります。
これが欠損値です。
こういったときに使われるメソッドが
isnull() 欠損値 = true 値が入っている = false
だそうです。
実行してみます。
df.isnull()
元々欠損値だった場所は全てTrueになっています。
問題その13 欠損値の補完
dfの欠損値を全て0で補完してください。
さっきの問題の続きです。
欠損値の補完はpandasのfillna()メソッドを使います。
fillnaの()には欠損値を補完したい値をいれます。
0に変えたければ0を入れます。
df.fillna(0).head()
欠損値だった場所に0.0が入っています。
今回は0で補完しましたが、データの整理などで用いる場合
中央値や平均値の統計量で補完することが多いそうです。
問題その14 欠損値の削除
dfの欠損値を列方向で削除してください。
欠損値の削除を行う場合はpandasのdropna()メソッドを使うそうです。
今回なぜ縦方向かというと、
先ほどのdf.isnull()だと、欠損値の場所がわかりましたが
さらにそこにsum関数を組み合わせるとどのカラムに何個
欠損値があるかがわかります。
df.isnull().sum()
年月日 0
平均気温(℃) 0
最高気温(℃) 0
最低気温(℃) 0
降水量の合計(mm) 0
最深積雪(cm) 368
平均雲量(10分比) 368
平均蒸気圧(hPa) 368
平均風速(m/s) 0
日照時間(時間) 0
dtype: int64
出力結果でわかる通り、
最深積雪(cm) 367
平均雲量(10分比) 367
平均蒸気圧(hPa) 367
のカラムに欠損値がかたまっています。
df.shapeで確認してもこのデータフレームは(367,10)で
この参列については列全てが欠損値であるとわかります。
なので今回は列すべてを削除します。
#axis=1 は列方向 axis=0 は行方向
df.dropna(axis=1).head
実行すると最深積雪平均雲量 平均蒸気圧が削除されます。
コメント