接著上篇繼續。數據獲取之后并不能直接分析或使用,因為里面有很多無效的垃圾數據,所以必須要經過處理才可以。數據處理的主要內容包括數據清洗、數據抽取、數據交換和數據計算等。

數據清洗

數據清洗是數據價值鏈中最關鍵的一步。垃圾數據即使是通過最好的分析也可能會產生錯誤的結果,并造成較大的誤導。

數據清洗就是處理缺失數據以及清除無意義的信息,如刪除原始數據集中的無關數據、重復數據、平滑噪音數據,篩選掉與分析主題無關的數據等等。

重復值的處理

步驟如下:

1 利用DataFrame中的duplicated方法返回一個布爾型的Series,顯示是否有重復行。沒有顯示FALSE,有則從重復的第二行起顯示為TRUE

2 在利用DataFrame中的drop_duplicates方法返回一個移除了重復行的DataFrame

duplicated的格式:

duplicated(subset=None, keep='first')

括號中的參數均為可選,不寫默認判斷全部列

subset用于識別重復的列標簽或列標簽序號,默認是所有的列標簽

keep為first表示除了第一次出現外,其余相同的數據被標記為重復;為last表示除了最后一次外,其余相同的數據被標記為重復;為false表示所有相同的數據都被標記為重復

drop_duplicates的格式:

drop_duplicates()

如果你想指定某個列就在括號里加入列名即可

            from?pandas?import?DataFrame
from?pandas?import?Series

#造數據
df=DataFrame({'age':Series([26,85,85]),'name':Series(['xiaoqiang1','xiaoqiang2','xiaoqiang2'])})
df

#判斷是否有重復行
df.duplicated()

#移除重復行
df.drop_duplicates()
          

缺失值的處理

缺失值的處理一般包括兩個步驟,分別是缺失數據的識別和缺失數據的處理。

缺失數據的識別

pandas使用浮點值NaN表示浮點和非浮點數組里的缺失數據,并使用isnull和notnull函數來判斷缺失情況。


            #缺失數據的識別
from?pandas?import?DataFrame
from?pandas?import?read_excel

#有缺失數據
df=read_excel(r'D:python_workspaceanacondarz.xlsx',?sheetname='Sheet2')
df

#識別缺失數據,NaN的就會顯示True。notnull函數正好相反
df.isnull()
          



rz.xlsx的內容如下

基于python的大數據分析-數據處理(代碼實戰)_第1張圖片

缺失數據的處理

對于缺失數據的處理有數據補齊、刪除對應的行、不處理。這里直接擼代碼解釋

            #接著上面的繼續,進行數據的處理
#去除數據中值為空的數據行
newdf=df.dropna()
newdf

#用其他數值代替NaN
newdf2=df.fillna('--')
newdf2

#用前一個數據值代替NaN
newdf3=df.fillna(method='pad')
newdf3

#用后一個數據值代替NaN
newdf4=df.fillna(method='bfill')
newdf4

#傳入一個字典對不同的列填充不同的值
newdf5=df.fillna({'數分':100,'高代':99})
newdf5

#用平均數來代替NaN。會自動計算有NaN兩列的數據的平均數
newdf6=df.fillna(df.mean())
newdf6

#還可以使用strip()來去除數據左右的指定字符,這個是python的基礎了,這里不做演示了