データ分析とマイニングのデータ洗浄(欠落値、異常値)


一般的にPIPにReadTimeoutErrorが現れるのはGFWに壁を与えられたためで、一般的にこのような問題に遭遇して、私たちは国内のミラーを選んで問題を解決することができます.
Windowsの下:C:Usersの下にpipフォルダを新規作成し、pipを作成します.iniファイルは、次のコードをコピーして保存します.
 [global]
 index-url = https://pypi.tuna.tsinghua.edu.cn/simple

実はpythonのソースを清華のソースに変えて、問題を解決することができるはずです.
pymysqlとphpStudioのインストールを推奨
今からデータ洗浄実戦
#    
import pymysql
import numpy as npy
import pandas as pda
import matplotlib.pylab as pyl
conn=pymysql.connect(host="127.0.0.1",user="root",password="root",db="csdn")
sql="select * from hexun"
data=pda.read_sql(sql,conn)
print(data.describe())
#    

'''''''''     '''''''''''
#      ①(   )
data.isnull().sum()  #             
data.dropna()#           
data.dropna(axis = 1)#           
data.dropna(how = 'all')#          
data.dropna(thresh = 4)#     4      
data.dropna(subset = ['C'])#            
#      ②(   )  data.fillna(0, inplace = True)    DataFrame   
data.fillna(0): 0  
data.fillna(method='pad'):        
data.fillna(df2.mean()):       
#2.1  Imputer       
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)#       
imr = imr.fit(df)
imputed_data = imr.transform(df.values)

#      ③  0      
print(len(data)) #        ,count     
#  →      
x=0
data["hits"][(data["hits"]==0)]=None  #hits 0     
for i in data.columns:  #   
                for j in range(len(data)):
                                if(data[i].isnull())[j]:
                                                data[i][j]="2"  #        
                                                x+=1
print(x)  #     


'''''''''     '''''''''''
pyl.rcParams['font.sans-serif']=['SimHei']  #             
pyl.rcParams['axes.unicode_minus']=False  #         
#   (      ,      )
data2=data.T
hits=data2.values[3]  #     
comt=data2.values[4]#     
pyl.plot(hits,comt,'*r')
pyl.title("   ")
pyl.xlabel("   ")
pyl.ylabel("   ")
pyl.show()
#     >30000,     >230
line=len(data.values)
columns=len(data.values[0])
da=data.values
for i in range(0,line):
                for j in range(0,columns):
                                if(da[i][3]>30000):  #       
                                                print(da[i][j])   #        
                                                da[i][j]=36   #         /   
                                if(da[i][4]>230):  #       
                                                print(da[i][j])   #        
                                                da[i][j]=2   #        
                
da2=da.T  #     
hits=da2[3]
comt=da2[4]
pyl.plot(hits,comt,'*c')
pyl.show



''''''''''''    ''''''''''''
hitsmax=da2[3].max()
hitsmin=da2[3].min()
comtmax=da2[4].max()
comtmin=da2[4].min()
#  :  -  
hitsrg=hitsmax-hitsmin
comtrg=comtmax-comtmin
#  :  /  
hitsdst=hitsrg/12
comtdst=comtrg/12
#         
hitssty=npy.arange(hitsmin,hitsmax,hitsdst)  #  ,  ,  
pyl.hist(da2[3],hitssty)
pyl.show()
#        
comtsty=npy.arange(comtmin,comtmax,comtdst)  #  ,  ,  
pyl.hist(da2[4],comtsty)
pyl.show()