2014年1月28日 星期二

資料分析鍊金術(一)--認識手上的資料庫

     

         因為剛換工作,想趁記憶猶新的時候,把所有接觸資料庫到分析流程記錄下來,作為將來自己或是其他人的參考。

         (一) Read Database Schema
        作為新成立的資料分析部門,硬碟裡沒有半個DATA也是很合理的事情,於是只好請資料分析的好朋友--IT部門撈資料。因為行業關係,我們公司除了會員資料庫之外,也有自己的POS DATA和生產資料(這都是慢慢才知道的),每個資料庫因為資料結構不同,所以都儲存在不同的TABLE中。例如會員資料庫就會有會員代號、姓名、生日、電話、消費次數等以"會員"為分析單位的資料;而POS DATA就是以每筆消費為單位,儲存內容包括銷貨日期、單據金額、原訂價、實際售價等等,要依當初設定的SPEC(或Schema)而定。因此第一步就是像IT申請所有資料庫表格的Schema、代號對照表,才能了解目前公司有多少個資料庫表格、欄位內容、以及不同資料庫之間的串連方式。Schema包含了資料庫的變項內容,是了解資料庫最基礎也最重要的步驟,從schema觀察每個資料庫的內容資料,變項之間的關係或定義最好也能先有初步認識

         (二)Read the Data
         接著請IT撈每個資料庫的DATA,這裡建議是每個SCHEMA都撈,也不要設任何篩選變項,直接觀察最原始的資料。觀察資料的方式先取第一筆或前十筆,從實際的DATA中了解變項的(A)資料格式以及(B)變項之間的關係。

         (A)使用資料分析軟體讀資料時,一開始都建議先用文字變項讀取每一個欄位,避免有些假數值的欄位讀取錯誤(例如電話號碼,開頭是0,如果一開始用數字格式讀取,之後難以處理);或是資料會有其他莫名的格式錯誤(例如全形半形),用文字變項讀取會較為安全。

         (B)變項之間的關係是最複雜的部分。因為當初設計資料庫的人第一可能不在,也沒留下紀錄,有些關係無從了解。或是其他人不習慣使用的變項,找不到變項與其他變項之間的關聯,都會對我們未來的分析有所影響。

         (C)除了單一資料庫內變項之間的關係外,也要了解不同資料庫間相關變項的關係。例如會員資料庫中通常會有消費次數和累積消費金額,這兩個值可以由POS系統中的會員歷次消費紀錄得出。資料庫之間的了解也有助於將來分析跨資料庫變項。
        
        (三)Clean the Data
        這邊會花超級多時間,而且狀況千奇百怪。檢查步驟很基本也很原始,將變項讀入後,使用次數分配或SUMMARY觀察每個變相的分配、最大最小值、看有沒有異常的情況(這邊的異常指的是資料"格式"上的異常,內容上的異常目前先不處理。以這次遇到的例子:

        (A) 資料換行:第一次讀資料發現很多奇怪的資料位移狀況,某個人的消費次數變成日期、其他數值也超級怪。進去RAW DATA看(直接觀察TXT檔)發現是一些開放題(像是地址)出現了看不見的換行符號,所以將資料撈出時碰到該換行符號資料會自動換行,造成部分觀察值得異常情況。
     
         (B) 資料跳格:接著我們又發現變項數目超過原始的Schema,有些觀察值多了一些變項,也是發生資料位移的情況。回到raw data一看,發現原來又是開放提搞得鬼,有些開放題使用了csv檔的分欄符號",",造成資料讀取錯誤(例如地址欄填了台北市,北區,信義路)。

        (四) Check the Value
        如果公司沒有直接的資料分析部門,通常都會透過ERP系統來撈取資料庫資料,但是每個功能或資料結果背後連結的資料庫變項就不一定有人那麼清楚。在計算一些重要變項時,建議交叉比對自己使用統計軟體以及ERP系統的資料,以確保資料的一致性和正確性。有些很基本的統計數值ERP系統其實也跑得出來,像是會員人數,年度消費金額等。一定要確定自己的變項抓對,才能進行後續的分析。

圖片來源:http://jss.uk.com/IT-Services/web-database-forums-blogs