基于python的数据清洗案例

参考文献:余本国.基于python的大数据分析基础及实战[M].北京:中国水利水电出版社,2018.7:158-159.
目前有数据,如图1所示。处理数据中的重复值、异常值、空值、多余的空格。
基于python的数据清洗案例_第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()                                    #判断哪些列存在缺失值

运行结果:
基于python的数据清洗案例_第2张图片
显示存在缺失值行的代码:

df1[df1.isnull().values==Ture]

运行结果:

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

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

运行结果:
基于python的数据清洗案例_第3张图片
(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列型,否则为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中

运行结果:

以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 

运行结果:
基于python的数据清洗案例_第4张图片

你可能感兴趣的:(基于python的数据清洗案例)