pandasの「isnull()」「any()」「axis」で欠損値を確認してみる

2020年12月21日

pandasの「isnull()」「any()」で欠損値を確認してみる

欠損値を確認する時に「isnull()」が使えるみたいなので試してみます。


#データ用意
fruits = [
    {'item': 'apple',  'price': 200, 'stock': 20, 'country': 'japan', 'date':202001},
    {'item': 'orange', 'price': 300, 'stock': 30, 'country': 'japan', 'date':202001},
    {'item': 'banana', 'price': 150, 'stock': 40, 'country': 'japan', 'date':202001},
    {'item': 'apple',  'price': 200, 'stock': 20, 'country': 'japan', 'date':202002},
    {'item': 'orange', 'price': 400, 'stock': 28, 'country': 'japan', 'date':202002},
    {'item': 'banana', 'price': 100, 'stock': 45, 'country': 'japan', 'date':202002},
    {'item': 'apple',  'price': 200, 'stock': 20, 'country': 'japan', 'date':202003},
    {'item': 'orange', 'price': 500, 'stock': 22, 'country': 'japan', 'date':202003},
    {'item': 'banana', 'price': 50,  'stock': None, 'country': 'japan', 'date':202003},
]

#データフレーム化
df = pd.DataFrame(fruits)
# print(df)
#      item  price  stock country    date
# 0   apple    200   20.0   japan  202001
# 1  orange    300   30.0   japan  202001
# 2  banana    150   40.0   japan  202001
# 3   apple    200   20.0   japan  202002
# 4  orange    400   28.0   japan  202002
# 5  banana    100   45.0   japan  202002
# 6   apple    200   20.0   japan  202003
# 7  orange    500   22.0   japan  202003
# 8  banana     50    NaN   japan  202003

isnull = df.isnull()
# print(isnull)
# item  price  stock  country   date
# 0  False  False  False    False  False
# 1  False  False  False    False  False
# 2  False  False  False    False  False
# 3  False  False  False    False  False
# 4  False  False  False    False  False
# 5  False  False  False    False  False
# 6  False  False  False    False  False
# 7  False  False  False    False  False
# 8  False  False   True    False  False

isnull_any = df.isnull().any()
# print(isnull_any)
# item       False
# price      False
# stock       True
# country    False
# date       False
# dtype: bool

isnull_any_axis0 = df.isnull().any(axis=0)
# print(isnull_any_axis0)
# item       False
# price      False
# stock       True
# country    False
# date       False
# dtype: bool

isnull_any_axis1 = df.isnull().any(axis=1)
# print(isnull_any_axis1)
# 0    False
# 1    False
# 2    False
# 3    False
# 4    False
# 5    False
# 6    False
# 7    False
# 8     True

「isnull()」で欠損値の確認、「any()」で列に一つでも欠損値があればTrue(デフォルトはaxis=0)、「axis=1」で行に一つでも欠損値があればFalseを返すみたいですね。

2020年12月21日