'''''''''
name:chuxy
keyword: python-pandas学习(三)Pandas缺失值处理
version:1.0
date:20190101
reference:小象社区
'''
importnumpyasnp
importpandasaspd
# example dataset
index=pd.Index(data=['Tom','Bob','Mary','James','Andy','Alice'],name='name')
data={
'age':[18,30,np.nan,40,np.nan,30],
'city':['BeiJing','Shanghai','Guangzhou','Shenzhen',np.nan,''],
'sex':[None,'male','female','male',np.nan,'unknown'],
'birth':['2000-02-10','1988-10-17',None,'1978-08-08',np.nan,'1988-10-17']
}
user_info=pd.DataFrame(data=data,index=index)
#将出生日期转换为时间戳
user_info['birth']=pd.to_datetime(user_info.birth)
print('示例数据集')
print(user_info)
print()
'''3.1什么是缺失值'''
# .isnull()找出缺失值
user_info.isnull()
print('3.1找出缺失值')
print(user_info)
print()
#过滤缺失值
user_info[user_info.age.notnull()]
print('3.1过滤缺失值')
print(user_info)
print()
'''3.2丢失缺失值'''
# dropna()丢失缺失值;可以设置更多的参数
user_info.age.dropna()
print('3.2丢失缺失值')
print(user_info)
print()
'''3.3填充缺失值'''
# fillna()
#使用一个标量填充:将所有缺失值填充为
user_info.age.fillna()
print('3.3填充缺失值fillna()')
print(user_info)
print()
# interpolate()
#默认使用线性插值
user_info.age.interpolate()
print('3.3填充缺失值interpolate()')
print(user_info)
print()
'''3.4替换缺失值'''
# replace
user_info.age.replace(40,np.nan)
print('3.4替换缺失值replace()')
print(user_info)
print()
#指定每列要替换的值
user_info.age.replace({'age':40,'birth':pd.Timestamp('1978-08-08')}, np.nan)
print('3.4替换缺失值replace() (2)')
print(user_info)
print()
'''3.5使用其他对象填充'''
age_new=user_info.age.copy()
age_new.fillna(20,inplace=True)
user_info.age.combine_first(age_new)
print('3.5使用其他对象填充')
print(user_info)
print()
output:
领取专属 10元无门槛券
私享最新 技术干货