閱讀910 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《數據分析實戰 基於EXCEL和SPSS係列工具的實踐》一3.3 耗時耗力的數據整理過程

本節書摘來自華章出版社《數據分析實戰
基於EXCEL和SPSS係列工具的實踐》一書中的第3章,第3.3節,紀賀元 著,更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

3.3 耗時耗力的數據整理過程

數據的整理往往是一個痛苦的耗時耗力的過程,有人曾經以做飯菜來打比方:做過飯菜的人都知道,下油鍋炒菜的時間其實並不長,幾分鍾就夠了,而做菜之前的買菜、泡菜(用水浸泡菜去除農藥)、洗菜、切菜、配菜等會消耗2~3小時。這和做數據分析很類似,做一個聚類分析,如果選擇的模型得當並且電腦運行很快的話,幾分鍾甚至幾秒鍾就做完了,但是要把聚類的數據全部收集完畢,很可能要花幾天甚至幾個月的時間。
數據分析之前的數據整理工作要做哪些事情呢?我們看看以下邏輯。
(1)盡可能保證數據是對的
在錯誤的數據上分析得出的結論往往是錯誤的,因此要盡量保證數據的準確性,重複數據以及空行、空列、異常值、不符合邏輯關係的數據都會造成數據質量的降低,要想辦法剔除這些數據。至少也要對這些數據有所警醒!
(2)盡可能保證數據能用得上
通常情況下,數據中都會有很多缺失值,麵對這種情況,刪除肯定是個簡單的處理方法,但問題是,這樣操作會丟失很多數據和信息。我曾經對某個項目進行測算,如果用“簡單粗暴”的方法去刪除包含缺失值的數據,那麼大概要損失70%左右的數據,這樣一來,根據30%左右的數據分析得出來的結論肯定是不準確的。
(3)要保證數據的格式能夠直接用於分析
數據有多種組織方式,統計和挖掘中的很多算法模型都需要針對固定格式來做,比如對應分析、關聯分析等,因此免不了要做格式轉換,有時,為了實現對大數據量的分析,還需要進行編程。
3.3.1 重複、空行、空列數據刪除
以案例文件3.1為例,如何對數據進行重複值的排查呢?可綜合運用三種方法進行刪除,其中,EXCEL提供了兩種方法,不過都是直接刪除,而SPSS中的重複值處理可以先標識然後再刪除,相對更合理一點。下麵分別講講這三種方法。
(1)EXCEL中的“刪除重複項”
首先,選擇“數據”中的“刪除重複項”,如圖3-2所示。

3_2


然後選擇判斷是否重複的項,如圖3-3所示。

3_3


請注意,圖3-3中的“編號”、“成績”之前的勾選就是重複值的判斷條件,意思就是如果編號和成績都相同,那麼就是重複值。我們可以用是否勾選來靈活決定判斷重複值的條件。
點擊“確定”後會彈出圖3-4所示的對話框。

3_4


刪除重複項的操作簡單易行,但是有一個重大缺陷,就是它會直接將重複值刪除,這有點“簡單粗暴”,更理想的方法是先標注一下,待操作人員查看確認之後,再刪除比較好。因此在做這個操作之前最好先進行數據備份。
(2)高級篩選
很多人都知道高級篩選是用來做多條件的複雜篩選的,但是知道用高級篩選來刪除數據的人卻不多,下麵會介紹這個方法。首先進入高級篩選界麵,如圖3-5所示。

3_5


在高級篩選界麵中,選擇源數據區域和將要複製的數據塊位置,如圖3-6所示。
特別要注意的是,圖3-6左下角的“選擇不重複的記錄”一定要勾選,然後點擊確定,操作即完成。
相對於刪除重複項,高級篩選連個輸出提示都沒有,這讓初次使用的人往往感到有點沒頭沒腦,起碼應該有一個操作告訴我處理了多少數據、刪除了多少數據吧。因此,高級篩選這個操作也需要謹慎,要事先做好數據備份。
(3)SPSS中的處理重複值
在SPSS中有專門處理重複值的模塊,請見圖3-7。

3_6_7

進入“標識重複個案”模塊後,會彈出如圖3-8所示的界麵。

3_8

如同EXCEL中的“刪除重複項”,SPSS中也需要選擇若幹字段作為判斷是否重複的依據,圖3-8中選擇了手機號碼和ARPU,代表手機號碼和ARPU都相同才表示數據重複。“基本個案指示符”中的1表示唯一值,0表示重複值。勾選左下角的“將匹配個案移至文件頂端”表示會將有重複的數據移到文件最上端。
最後的輸出結果如圖3-9所示。這樣的輸出結果是比較合理的,可以先觀察再刪除,比直接刪除要安全。

3_9

(4)刪除空行
以案例文件3.3為例,為了刪除空行,先用EXCEL進行排序,如圖3-10所示。

3_10


排序結束後,刪除空行即可,如圖3-11所示。
以上刪除空行的方法打亂了數據的順序,若想不打亂數據的順序,可采用輔助列的方法,如圖3-12所示。

3_11_12


也就是先按照編號進行排序,刪除空行後,再按照“次序”進行排序,最後刪除“次序”輔助列。

3.3.2 缺失值的填充和分析

數據中的缺失值產生的原因很多,有的是原始數據中就沒有,有的是漏了,有的則是因種種原因沒有收集;還有填寫者故意不填的,例如市場調查的問卷中,涉及收入、對競爭對手如何看待等敏感性問題時,就經常會出現缺漏的情況。還有一種比較特殊的情況是,最近的數據還沒有統計出來,例如現在是2017年,可能2017年的Q1的數據還沒有出現,甚至有可能2016年的Q4的數據都還沒有出來。
之前已經說過,對於缺失值數據,一般不能采用“簡單粗暴”的刪除方法,而應盡可能地進行填充,下麵就介紹一些填充的方法。
(1)手工填充
以案例文件3.4為例,2011年和2012年的數據都是完整的,2013年的數據有一些缺漏,這個時候有幾種填充思路:
1)按照2013年銷量的平均值做填充,這是比較簡單的做法。
2)用曆年同月的平均值做填充,例如2013/12/21的數據是空缺的,就拿2011年和2012年銷量的平均值來填充,這是比較精準的做法。
以上的填充技術非常簡單,不再贅述,直接用average函數即可。
(2)利用SPSS“替換缺失值”進行填充
案例文件3.5,SPSS中有兩處菜單功能涉及缺失值,一是“轉換”中的“替換缺失值”,二是“分析”中的“缺失值分析”。“替換缺失值”中可以用多種替換方法,以案例文件3.5為例來看一下,先在圖3-13所示的菜單找到“替換缺失值”。

3_13


然後,進入“替換缺失值”界麵,如圖3-14所示。

3_14


在替換的方法中,有序列均值、臨近點的均值、臨近點的中位數等多種方法可以選擇,一般選擇“序列均值”和“臨近點的均值”比較多一些。
(3) 利用SPSS“缺失值分析”進行填充
對於案例文件3.6,在分析分組和年齡這兩個因素對分析指標的影響時,可采用SPSS的線性回歸來處理,如圖3-15所示。

3_15


然後進入線性回歸的界麵進行設置,如圖3-16所示。

3_16


得到的結論如圖3-17所示。

3_17


由於體重組和年齡的檢驗p值都小於0.05,因此得到結論:體重組和年齡對於分析指標都有著顯著的影響。
若對案例文件3.7(該案例有缺失值)執行同樣的操作,得到的輸出結果如圖3-18所示。

3_18


從圖3-18所示的輸出可以看出,在有缺失值的情況下,體重組的sig是0.076>0.05,因此得到結論:體重組對於分析指標的影響不顯著,而年齡對於分析指標的影響顯著。
現在考慮如何填充數據,在圖3-19所示的界麵選擇“缺失值分析”。

3_19


SPSS的缺失值分析中,常用的有EM和回歸這兩種方式。下麵首先展示EM方式填充缺失值的方法,如圖3-20所示。

3_20


在圖3-20所示的界麵中,點擊“EM...”,進入如圖3-21所示的界麵。

3_21


將填充好的缺失值放到數據集a中,就完成了相應的操作。
同樣也可以用回歸方法實現缺失值的填充,如圖3-22所示。

3_22


為了比較EM和回歸這兩種填充方法的優劣,仍舊做數據回歸來比較EM和回歸這兩種填充方式的差異,請注意,這裏出現了兩個“回歸”,前麵一個“回歸”是數據分析的回歸方法,後麵一個“回歸”是SPSS裏麵的一種填充算法。

3_23_24


圖3-23是采用EM方法填充數據後進行回歸分析的輸出結果,圖3-24是采用“回歸”方法填充數據後進行回歸分析的輸出結果。可以看到,EM回歸的兩個檢驗P值0.008和0.004,分別小於0.023和0.012,這說明EM填充缺失值的質量要高於回歸填充缺失值。

3.3.3 數據間邏輯的排查

重複值、空行(列)、缺失值這些都是比較明顯的錯誤,而數據之間的邏輯關係則是比較隱蔽的問題。案例文件3.9給出了對啤酒飲用習慣進行調查後所記錄的數據,先來看看年齡和學曆這兩組數據,單獨看這兩組數據並無可疑之處,但是考慮到邏輯關係就不盡然了。

3_25


從目前我國大學的情況看,一般本科生畢業在21~23歲,碩士生畢業在25~27歲,如果考慮學曆和年齡之間的邏輯關係,再對案例文件3.9進行排查,看看情況如何。這裏使用條件格式進行排查,如圖3-25所示。
進行條件格式後的界麵如圖3-26所示。

3_26


在圖3-26中,選擇自定義公式,在公示欄中輸入公式:=AND(C2<=25, D2>=5),也就是當C2(年齡)小於等於25,並且學曆大於等於5(5是碩士,6是博士)的時候,將編號填充為紅色,結果如圖3-27所示。

3_27


從圖3-27可以看出,編號為11和18的,其學曆和年齡之間的邏輯關係不正常,需要重點關注和糾正。
根據業務關係來排查數據的例子還很多,這需要讀者結合自己的業務邏輯努力去排查判斷。
此外,數據合並也是數據準備的重要內容,這將在4.1節中詳細敘述,在此不再重複。

最後更新:2017-05-27 11:31:21

  上一篇:go  Django 博客開發教程 1 - 搭建開發環境
  下一篇:go  《Python極客項目編程 》——1.2 所需模塊