基于python的数据清洗案例

参考文献:余本国.基于python的大数据分析基础及实战[M].北京:中国水利水电出版社,2018.7:158-159.
目前有数据,如图1所示。处理数据中的重复值、异常值、空值、多余的空格。
图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]

运行结果:

将空数据填充为0的代码:

df2=df1.fillna(0)
df2                                           #查看数据

运行结果:

(4)处理数据中的空格

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列型,否则为objectprint(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中

运行结果:

以0填充军训列非int型数据代码:

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 

运行结果:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部