7.series缺失值处理

### 目录 ###

[1]Series.isna()    检测缺失值。

[2]Series.notna()   检测现有(非缺失)值。

[3]Series.dropna()  返回删除了缺失值的新Series。

[4]Series.fillna()  使用指定的方法填充NA / NaN值。

 

### 内容 ###

[1]Series.isna()    检测缺失值。

>>> ser = pd.Series([5, 6, np.NaN])

>>> ser.isna()

0 False

1 False

2 True

dtype: bool

 

[2]Series.notna()   检测现有(非缺失)值。

>>> ser = pd.Series([5, 6, np.NaN])

>>> ser.notna()

0 True

1 True

2 False

dtype: bool

>>> s1=ser[ser.notna()]

>>> s1

0 5.0

1 6.0

 

[3]Series.dropna()  返回删除了缺失值的新Series。

1.语法参数

Series.dropna(axis = 0,inplace = False)

axis : {0或'index'},默认为0 , 只有一个轴可以从中删除值。

inplace : bool,默认为False , 如果为True,则执行就地操作并返回None。

 

例子

>>> ser = pd.Series([1., 2., np.nan])

>>> ser

0 1.0

1 2.0

2 NaN

dtype: float64

 

#从系列中删除NA值。

>>> ser.dropna()

0 1.0

1 2.0

dtype: float64

 

#使系列保持同一变量中的有效条目。

>>> ser.dropna(inplace=True)

>>> ser

0 1.0

1 2.0

dtype: float64

 

#空字符串不被视为NA值。None被认为是NA值。

>>> ser = pd.Series([np.NaN, 2, pd.NaT, '', None, 'I stay'])

>>> ser

0 NaN

1 2

2 NaT

3

4 None

5 I stay

dtype: object

>>> ser.dropna()

1 2

3

5 I stay

dtype: object


 

[4]Series.fillna()  使用指定的方法填充NA / NaN值。

1.语法参数

Series.fillna(value = None,method = None,axis = None,inplace = False,limit = None,downcast = None)

value:标量,字典,系列或DataFrame

method : {'backfill','bfill','pad','ffill',None},默认None

axis : {0 or ‘index’}

inplace : boolean, default False , If True, fill in place.

limit : int,默认无 ,注意若指定了method,则这是向前/向后填充的连续NaN值的最大数量。

 

2.例子

>>> df = pd.DataFrame([[np.nan, 2, np.nan, 0],

... [3, 4, np.nan, 1],

... [np.nan, np.nan, np.nan, 5],

... [np.nan, 3, np.nan, 4]],

... columns=list('ABCD'))

>>> df

A B C D

0 NaN 2.0 NaN 0

1 3.0 4.0 NaN 1

2 NaN NaN NaN 5

3 NaN 3.0 NaN 4

 

#用0替换所有NaN元素。

>>> df.fillna(0)

A B C D

0 0.0 2.0 0.0 0

1 3.0 4.0 0.0 1

2 0.0 0.0 0.0 5

3 0.0 3.0 0.0 4

 

#我们还可以向前或向后传播非空值。

>>> df.fillna(method='ffill')

A B C D

0 NaN 2.0 NaN 0

1 3.0 4.0 NaN 1

2 3.0 4.0 NaN 5

3 3.0 3.0 NaN 4

 

#将“A”,“B”,“C”和“D”列中的所有NaN元素分别替换为0,1,2和3。

>>> values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}

>>> df.fillna(value=values)

A B C D

0 0.0 2.0 2.0 0

1 3.0 4.0 2.0 1

2 0.0 1.0 2.0 5

3 0.0 3.0 2.0 4

 

#只替换第一个NaN元素。

>>> df.fillna(value=values, limit=1)

A B C D

0 0.0 2.0 2.0 0

1 3.0 4.0 NaN 1

2 NaN 1.0 NaN 5

3 NaN 3.0 NaN 4

你可能感兴趣的:(python,pandas,series,api)