In [ ]:
'''
series:
isnull
dropna
dataframes:
isnull
dropna
dropna(how='all')
dropna(axis=1)
dropna(thresh=2)
fillna(1)
fillna(0, inplace=True)
'''

In [1]:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame

In [2]:
data = Series(['one','two',np.nan,'four'])

In [3]:
data


Out[3]:
0     one
1     two
2     NaN
3    four
dtype: object

In [4]:
# finding missing values
data.isnull()


Out[4]:
0    False
1    False
2     True
3    False
dtype: bool

In [5]:
# drop null values
data.dropna()


Out[5]:
0     one
1     two
3    four
dtype: object

In [6]:
df = DataFrame([[1,2,3],[np.nan,5,6],[7,np.nan,9],[np.nan,np.nan,np.nan]])

In [7]:
df


Out[7]:
0 1 2
0 1.0 2.0 3.0
1 NaN 5.0 6.0
2 7.0 NaN 9.0
3 NaN NaN NaN

In [10]:
#  by default drop all rows from dataframe with missing values
clean_df = df.dropna()

clean_df


Out[10]:
0 1 2
0 1.0 2.0 3.0

In [11]:
# specify dropping rows that all values are missing only
df.dropna(how='all')


Out[11]:
0 1 2
0 1.0 2.0 3.0
1 NaN 5.0 6.0
2 7.0 NaN 9.0

In [12]:
# drop columns
df.dropna(axis=1)


Out[12]:
0
1
2
3

In [13]:
npn = np.nan

df2 = DataFrame([[1,2,3,npn],[2,npn,5,6],[npn,7,npn,9],[1,npn,npn,npn]])

df2


Out[13]:
0 1 2 3
0 1.0 2.0 3.0 NaN
1 2.0 NaN 5.0 6.0
2 NaN 7.0 NaN 9.0
3 1.0 NaN NaN NaN

In [16]:
# keep rows that has at least 2 datapoints
df2.dropna(thresh=2)


Out[16]:
0 1 2 3
0 1.0 2.0 3.0 NaN
1 2.0 NaN 5.0 6.0
2 NaN 7.0 NaN 9.0

In [17]:
df2.dropna(thresh=3)


Out[17]:
0 1 2 3
0 1.0 2.0 3.0 NaN
1 2.0 NaN 5.0 6.0

In [18]:
df2


Out[18]:
0 1 2 3
0 1.0 2.0 3.0 NaN
1 2.0 NaN 5.0 6.0
2 NaN 7.0 NaN 9.0
3 1.0 NaN NaN NaN

In [20]:
# fill null values
df2.fillna(1)


Out[20]:
0 1 2 3
0 1.0 2.0 3.0 1.0
1 2.0 1.0 5.0 6.0
2 1.0 7.0 1.0 9.0
3 1.0 1.0 1.0 1.0

In [23]:
# fill different values for each column
df2.fillna({0:0,1:1,2:2,3:3})


Out[23]:
0 1 2 3
0 1.0 2.0 3.0 3.0
1 2.0 1.0 5.0 6.0
2 0.0 7.0 2.0 9.0
3 1.0 1.0 2.0 3.0

In [24]:
# modify existing object
# df2 = df2.fillna()
# or
df2.fillna(0, inplace=True)

In [27]:
df2


Out[27]:
0 1 2 3
0 1.0 2.0 3.0 0.0
1 2.0 0.0 5.0 6.0
2 0.0 7.0 0.0 9.0
3 1.0 0.0 0.0 0.0