1.认识缺失值
1.1
pandas中NaN表示缺失值,在使用count()和value_counts()的时候空值不计数(计算重复值的时候会计算在内)
使用value_counts()的时候如果想缺失值也计数,可以括号内写dropna=False
1.2
创造缺失值(1):
from numpy import nan as NA
dat=pd.Series([NA,1,3])
创造缺失值(2):
2.查找缺失值
首先读一个music2的数据表,图片中红色框标注了缺失值
import pandas as pd
music2=pd.read_excel(‘music2.xlsx’)
music2
2.1某列的数值缺失
是否缺失
music2.age.isnull()
缺失值个数
music2.age.isnull().sum()
Out:2
2.2 指定几列缺失
(如果列数比较多 应该有更好的办法)
下面的例子查找age或者gender缺失的
music2[‘age’].isnull()|music2[‘gender’].isnull()
结果:
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 True
11 True
12 False
13 False
14 False
15 True
16 False
17 False
18 False
dtype: bool
2.3任意列缺失
music2.isnull()
3.删除缺失值
用到dataframe的dropna方法
参数如下:
music2.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
#只要有空值 整行删除
music2.dropna(how=‘any’)
#整行为空值 则这一行删除掉
music2.dropna(how=‘all’)
#上面的dropna的找null方式是针对所有列的 如果只针对其中两列 需要用到subset music2.dropna(subset=[‘gender’,‘age’],how=‘all’)
#效果是删除掉了gender和age都是空值的那些行
4.填补缺失值
参数如下:
DataFrame.age.fillna(
value=None,
method=None,
axis=None,
inplace=False,
limit=None,
downcast=None,
)
必有的参数是value ,也就是填补值,这个数值可以只有一个固定的值,比如我们让缺失的年龄全部等于60岁(为了让结果更容易看到,这里设置inplace=True,改变了原表)
music2.age.fillna(value=60,inplace=True)
music2
如果fillna方法用于dataframe,而且value是一个固定的数值,那么这个数据表所有单元格只要空缺,就被填充这个数值。而实际情况下每列填充的数值都不一样,好在value也可以是一个字典,用于指定列填补指定值。
比如我们把gender缺失的全部填充0,把music genre缺失的全部填充为Jazz
music2.fillna({‘gender’:0,‘music genre’:‘Jazz’},inplace=True)