Skip to content

Open In Colab

Handle Nulls

Load Titanic Dataset

import seaborn as sns

titanic = sns.load_dataset('titanic')
titanic.head()
survived pclass sex age sibsp parch fare embarked class who adult_male deck embark_town alive alone
0 0 3 male 22.0 1 0 7.2500 S Third man True NaN Southampton no False
1 1 1 female 38.0 1 0 71.2833 C First woman False C Cherbourg yes False
2 1 3 female 26.0 0 0 7.9250 S Third woman False NaN Southampton yes True
3 1 1 female 35.0 1 0 53.1000 S First woman False C Southampton yes False
4 0 3 male 35.0 0 0 8.0500 S Third man True NaN Southampton no True

Count Nulls For Each Column

titanic.isnull().sum()
survived         0
pclass           0
sex              0
age            177
sibsp            0
parch            0
fare             0
embarked         2
class            0
who              0
adult_male       0
deck           688
embark_town      2
alive            0
alone            0
dtype: int64

Visualize Rows With Nulls

titanic[titanic.isnull().any(axis=1)]
survived pclass sex age sibsp parch fare embarked class who adult_male deck embark_town alive alone
0 0 3 male 22.0 1 0 7.2500 S Third man True NaN Southampton no False
2 1 3 female 26.0 0 0 7.9250 S Third woman False NaN Southampton yes True
4 0 3 male 35.0 0 0 8.0500 S Third man True NaN Southampton no True
5 0 3 male NaN 0 0 8.4583 Q Third man True NaN Queenstown no True
7 0 3 male 2.0 3 1 21.0750 S Third child False NaN Southampton no False
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
884 0 3 male 25.0 0 0 7.0500 S Third man True NaN Southampton no True
885 0 3 female 39.0 0 5 29.1250 Q Third woman False NaN Queenstown no False
886 0 2 male 27.0 0 0 13.0000 S Second man True NaN Southampton no True
888 0 3 female NaN 1 2 23.4500 S Third woman False NaN Southampton no False
890 0 3 male 32.0 0 0 7.7500 Q Third man True NaN Queenstown no True

709 rows × 15 columns

Impute Replacement Values

Use mean to replace numeric values.

titanic.age = titanic.age.fillna(titanic.age.mean())
titanic
survived pclass sex age sibsp parch fare embarked class who adult_male deck embark_town alive alone
0 0 3 male 22.000000 1 0 7.2500 S Third man True NaN Southampton no False
1 1 1 female 38.000000 1 0 71.2833 C First woman False C Cherbourg yes False
2 1 3 female 26.000000 0 0 7.9250 S Third woman False NaN Southampton yes True
3 1 1 female 35.000000 1 0 53.1000 S First woman False C Southampton yes False
4 0 3 male 35.000000 0 0 8.0500 S Third man True NaN Southampton no True
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
886 0 2 male 27.000000 0 0 13.0000 S Second man True NaN Southampton no True
887 1 1 female 19.000000 0 0 30.0000 S First woman False B Southampton yes True
888 0 3 female 29.699118 1 2 23.4500 S Third woman False NaN Southampton no False
889 1 1 male 26.000000 0 0 30.0000 C First man True C Cherbourg yes True
890 0 3 male 32.000000 0 0 7.7500 Q Third man True NaN Queenstown no True

891 rows × 15 columns

titanic.isnull().sum()
survived         0
pclass           0
sex              0
age              0
sibsp            0
parch            0
fare             0
embarked         2
class            0
who              0
adult_male       0
deck           688
embark_town      2
alive            0
alone            0
dtype: int64

Drop Rows with Nulls

titanic = titanic.dropna(how='any', axis=0)
titanic.isnull().sum()
survived       0
pclass         0
sex            0
age            0
sibsp          0
parch          0
fare           0
embarked       0
class          0
who            0
adult_male     0
deck           0
embark_town    0
alive          0
alone          0
dtype: int64
titanic
survived pclass sex age sibsp parch fare embarked class who adult_male deck embark_town alive alone
1 1 1 female 38.0 1 0 71.2833 C First woman False C Cherbourg yes False
3 1 1 female 35.0 1 0 53.1000 S First woman False C Southampton yes False
6 0 1 male 54.0 0 0 51.8625 S First man True E Southampton no True
10 1 3 female 4.0 1 1 16.7000 S Third child False G Southampton yes False
11 1 1 female 58.0 0 0 26.5500 S First woman False C Southampton yes True
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
871 1 1 female 47.0 1 1 52.5542 S First woman False D Southampton yes False
872 0 1 male 33.0 0 0 5.0000 S First man True B Southampton no True
879 1 1 female 56.0 0 1 83.1583 C First woman False C Cherbourg yes False
887 1 1 female 19.0 0 0 30.0000 S First woman False B Southampton yes True
889 1 1 male 26.0 0 0 30.0000 C First man True C Cherbourg yes True

201 rows × 15 columns