python数据清洗

python数据清洗,第1张

python数据清洗 1.处理缺失
string_data=pd.Series(['aardvark','artichoke',np.nan,'avocado'])
string_data.isnull()

NA 处理方法

dropna过滤nafillna填充na,比如ffill,bfillisnull返回表明哪些值是缺失值的布尔值notnullisnull的反函数

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')

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5720857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存