参考文献:余本国.基于python的大数据分析基础及实战[M].北京:中国水利水电出版社,2018.7:158-159.
目前有数据,如图1所示。处理数据中的重复值、异常值、空值、多余的空格。
处理过程:
(1)数据导入
数据导入代码:
import pandas as pd
df = pd.read_excel(r'C:\Users\Administrator\Desktop\rz.xlsx')
df.shape # 查看数据“形状”
运行结果:
(2)查找数据中的重复行,并将其删除
查找重复行代码:
df.duplicated()
df[df.duplicated()]
df1=df.drop_duplicates()
df1.shape
运行结果:
(3)查看空数据,并以0填充
查看空数据所在列代码:
df1.isnull().any() #判断哪些列存在缺失值
df1[df1.isnull().values==Ture]
df2=df1.fillna(0)
df2 #查看数据
df0=df2.copy() #为了数据安全,先copy一份
df0['解几']=df2['解几'].astype(str).map(str.strip)
(5)查看列数据类型
查看列数据类型代码:
for i in list(df0.columns):
if df0[i].dtype=='O': #若某列全部是int,则显示该列为Int列型,否则为object
print(i)
df0['解几'].dtype
运行结果:
将其转换为int 类型代码:
df0['解几']=df2['解几'].astype(int)
df0['解几'].dtype
运行结果:
(6)用0填充非int 型数据
以0填充体育列非int型数据代码:
ty=list(df0.体育)
j=0
for i in ty:
if type(i) !=int: #判断“体育”列中的数据是否均为int类型
print('第'+str(ty.index(i))+'行有非int数据:',i) #若不是,则打印非int值及其所在的行号
ty[j]=0 #用0替换该非int格式的值
j=j+1
ty
df0['体育'] = ty #将替换过的List放回原df0中
jx=list(df0.军训)
k=0
for i in jx:
if type(i) != int:
print('第'+str(jx.index(i))+'行有非 int 数据:',i)
jx[k]=0
k =k+1
df0['军训'] = jx
df0