string_data=pd.Series(['aardvark','artichoke',np.nan,'avocado']) string_data.isnull()
NA 处理方法
1.1过滤缺失值
data=pd.Dataframe([[1.,6.5,3.],[1.,NA,NA],[NA,NA,NA],[1.,NA,NA]]) cleaned=data.dropna() #删除包含有na的行 cleaned=data.dropna(how='all') #删除所有值均为na的行 cleaned=data.dropna(axis=1,how='all') #删除所有值均为na的列 cleaned=data.dropna(how='any') #删除含有na的行 cleaned=data.dropna(axis=1,how='any') #删除含有na的列
1.2补全缺失值
#create data df=pd.Dataframe(np.random.randn(7,3)) df.iloc[:4,1]=NA #fill data df.fillna(0) #用0来补全缺失值 df.fillna({1:0.5,2:0}) #用字典,可以为不同列设定不同的填充值 df.fillna({1:0.5,2:0},inplace=True) #fillna返回的是一个新的对象,加上inplace=True可以修改已经存在的对象 df.fillna(method='ffill') #向前填充 df.fillna(method='bfill') #向后填充2.数据转换
2.1删除重复值
2.2使用函数或映射进行数据转换
#create data data=pd.Dataframe({'food':['bacon','pulled pork','bacon','Pastrami','Corned beef','bacon','pastrami','honey ham','nova lox'],'ounces':[4,3,12,6,7.5,8,3,5,6]}) meat_to_animal={'bacon':'pig','pulled pork':'pig','pastrami':'cow','corned beef':'cow','honey ham':'pig'} #这个字典里全是小写,data里面有些是大写,因此我们需要用str.lower方法把每个值都换成小写 lowered=data['food'].str.lower() #map data['animal']=lowered.map(meat_to_animal)
2.3替代值
data=pd.Series([1.,-999.,2.,-999.,-1000.,3.]) data.replace(-999,np.nan)
数据清洗的过程中,很多时候还有?¥等等符号作为乱码,pandas只有处理na的方法,因此可以用replace()将这些符号转换成na(np.nan)
data['horsepower']=data['horsepower'].apply(lambda x: x.replace('?', '0')).astype('float64')
清洗处理好数据之后,希望能替换掉原来的csv文件,这里可以用to_csv
data.to_csv('auto-mpg.csv', encoding='utf-8')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)