pandas——数据清洗之缺失

数据缺失处理函数

使用**df.isnull()**确定缺失的数据,缺失时返回true

import pandas as pd
import numpy as np 

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',\
	na_values=['null','None'],\
	dtype={'电话':str,})
print (df[['数据','重数','价格']])
print(np.sum(df[['数据','重数','价格']].isnull(),axis=1))
print(np.sum(df[['数据','重数','价格']].isnull(),axis=0))
print(df.apply(lambda x:sum(x.isnull())/len(x),axis=0))

在这里插入图片描述

删除有缺失值的行df.dropna(how=’’,axis=, )

参数:
axis:0表示删除缺失值的一整行;1表示删除缺失值的一整列
how:’all‘表示(行或列)全部无数据,才删除整(行或列);’any‘:只要有一个缺失就删除整(行或列)
该函数只能返回一个删除后的数据集,但并不改变原来的数据,
inplace:是否取代原来的数据,但数据必须是一类对象,下面的**print (df[[‘数据’,‘重数’,‘价格’]].dropna())不能使用该参数,因为它是切片,而想要改变的是整体数据,但df.dropna()**可以使用该参数

import pandas as pd
import numpy as np 

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',\
	na_values=['null','None'],\
	dtype={'电话':str,})
print (df[['数据','重数','价格']])
print (df[['数据','重数','价格']].dropna())

在这里插入图片描述

填补缺失数据df[’’].fillna(value={},inplace=’ ',mthod=" ")

参数:
== value==:使用字典赋值,可以对应多列填充,例如,value={}
填充的方式有很多,可以直接写入数值,这里使用了和值的填充,也可使用众数(df[‘重数’].fillna(df[‘重数’].head(5).mode()[0],inplace=True))进行填充修改

使用直接赋值

import pandas as pd
import numpy as np 

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',	na_values=['null','None'],	dtype={'电话':str,})
print(df['重量'].head(5))
df['重量'].fillna(df['重量'].head(5)sum(),inplace=True)
print(df['重量'].head(5))

在这里插入图片描述

使用字典对value赋值

import pandas as pd
import numpy as np 

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',na_values=['null','None'],dtype={'电话':str,})
print(df[['重数','重量','价格']])
df.fillna(value={'重数':df['重数'].mode()[0],'重量':df['重量'].sum(),'价格':df['价格'].mode()[0]},inplace=True)
print(df[['重数','重量','价格']])

在这里插入图片描述

使用fillna()方法中的method参数填充

method的值是ffill时,表示的是前项填充;是bfill时表示后项填充

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',	na_values=['null','None'],dtype={'电话':str,})
print(df[['重数','重量','价格']])
df.fillna(method='ffill',inplace=True)
print(df[['重数','重量','价格']])

在这里插入图片描述

发布了70 篇原创文章 · 获赞 1 · 访问量 2421

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/104970207