Python 無料で独習 【超特訓】Pandas20本ノック 06

Python
この記事は約3分で読めます。

今回の講義は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

実行すると最深積雪平均雲量 平均蒸気圧が削除されます。

コメント

タイトルとURLをコピーしました