今回はかなり小ネタだけど pandas の DataFrame オブジェクト内に欠損値を含むカラムがあるか調べる方法について。
使った環境は次の通り。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.13.3 BuildVersion: 17D102 $ python -V Python 3.6.4 $ pip list --format=columns | grep pandas pandas 0.22.0
ひとまず環境には pandas と numpy をインストールしておく。
$ pip install pandas numpy
サンプルとなる DataFrame を次のように用意する。
Python が標準で持っている None や pandas の NaT と numpy の NaN を織り交ぜてみた。
ちなみに NaT は "Not a Time" で、NaN は "Not a Number" を表している。
>>> import pandas as pd >>> import numpy as np >>> from datetime import date >>> columns = ['id', 'name', 'gender', 'birth'] >>> data = [ ... (1, 'Alice', None, date(1980, 1, 1)), ... (2, 'Bob', 'M', pd.NaT), ... (np.NaN, None, None, date(1990, 2, 2)), ... ] >>> df = pd.DataFrame(data, columns=columns)
上記で作った DataFrame は、次のような感じで欠損値が所々にある。
>>> df
id name gender birth
0 1.0 Alice None 1980-01-01
1 2.0 Bob M NaT
2 NaN None None 1990-02-02
その上で欠損値になっているところを調べるには DataFrame#isnull() メソッドを使うと良い。
上記のそれぞれの欠損値があるところが真偽値の True として表される。
>>> df.isnull()
id name gender birth
0 False False True False
1 False False False True
2 True True True False
各カラムにどれだけ欠損値が含まれているかを確認するには DataFrame#sum() メソッドを使うと良い。
>>> df.isnull().sum() id 1 name 1 gender 2 birth 1 dtype: int64
カラムに欠損値があることが分かったら、欠損している行について取り除くなり適切に穴埋めすることになる。
いじょう。
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (19件) を見る
- 作者: もみじあめ
- 発売日: 2016/03/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る