删除数据
删除空值
如果文件的单元格中没有值时,在使用pandas读取后就会用NaN
表示,也就是我们常说的空值。
# 在NumPy模块中提供了nan的值,如果你想要创建一个空值,可以使用下方代码:
from numpy import nan as NaN
需要注意的是,NaN
比较特殊点就是其本身是一种float类型数据。当NaN
参与到数据计算中,最终的结果永远都是NaN
。
对于大批量的Series数据,使用肉眼很难判断空值的存在,这时我们可以先对空值进行过滤。
from numpy import nan as NaN
import pandas as pd
se=pd.Series([4,NaN,8,NaN,5])
print(se.notnull()) # 判断是否是空值
print(se[se.notnull()]) # 将空值过滤掉
0 True
1 False
2 True
3 False
4 True
dtype: bool
0 4.0
2 8.0
4 5.0
dtype: float64
在DataFrame类型数据中,一般我们会将存在NaN
的数据使用dropna()
方法全部删掉:
df1 = df.dropna()
dropna()
是删除空值数据的方法,默认将只要含有NaN
的数据整行删掉;如果想要删除整行都是空值的数据需要添加how='all'
参数。如果想要对列做删除操作,需要添加axis
参数,axis=1
表示列,axis=0
表示行。也可以使用thresh
参数筛选想要删除的数据,thresh=n
意思是若这一行非NaN
数据至少有n个,则保留该行。
from numpy import nan as Nah
import pandas as pd
df_dict = {
'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
'age':['18','20',Nah,'22'],
'weight':[Nah,'55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
print(df)
name age weight
001 ZhangSan 18 NaN
002 LiSi 20 55
003 WangWu NaN 60
004 ZhaoLiu 22 80
df1=df.dropna()
d