2015年7月12日 星期日

[Python] 資料科學家的日常(一) Read Data

enter image description here

        資料科學家這個名字在這兩年紅到發黑,好像透過大數據和資料科學家能夠變成預言家,還可以憑空幫公司賺進數倍利潤,本系列文章將以實例揭露所謂資料科學家平常在做的事情,打破各位對這個職業的幻想XD 這次示範的資料來源來自Pixnet辦的hackthon其中的spam(辨識垃圾文章)的資料.

  • 觀察資料
    拿到資料後SOP的第一步就是看看資料長啥樣.資料科學將和一般統計分析資料的差別在於,通常統計分析的資料在一開始就以結構化的方式去蒐集,而且通常已經將資料格式以及變數範圍定義清楚,但是資料科學面對的data通常很髒(其實問卷也有很髒的例如開放題),而且量太大了<<重點在於量太大了.問卷的開放題通常就是人工下去掃或訂正,好一點的公司還有DP或QA確認資訊,但是資料科學收到的資料是無法靠人工一一訂正的.

    進入正題,觀察資料有幾個方向:
    • 看檔案大小(操作環境是在ipython notebook,使用shell指令)
      enter image description here
      最大的檔案將近兩G,就主辦單位的大大告知這是一個月份的抽樣資料.
    • 看看長啥樣
      通常就用head看看資料是啥格式,有什麼欄位,才能決定都下用什麼方式來讀取處理檔案.
      enter image description here
enter image description here
看起來是個json格式的資料,有po文時間日期標題等資訊,亂七八糟的html碼也包含在裡面.
  • 有多少筆資料
    通常是用wc -l來看比數,但是因為json格式,所以改成數某個欄位出現過幾次.
enter image description here
  • 讀取資料
    雖然寫這個好像有點白癡,但是真的很容易遇到很難讀取的資料格式,或是當資料有編碼問題的時候.讀取資料的時候要注意資料是啥格式Json,csv,還是特殊格式的檔案,接著還要確認資料的分隔符號,前後資料一不一致.如果資料太大,又要用其他的讀取資料方式.
enter image description here
這邊我用的是python的json套件將資料讀取進來,本來想用pandas直接讀的,但是一直有問題,才用這種比較安全的做法.json套件讀進來後,資料是個list+dic檔案,接著轉成pandas的dataframe.
  • 觀察讀取進來的資料
因為每個階段都有可能錯XD 所以都要看一下對不對,我自己會取前中後三段看資料正不正確.(因為可能因為某個奇怪的符號導致分欄位錯誤)
enter image description here
  • 看個統計摘要
    enter image description here
    瞭解一下一些統計值的狀況,作為日後清資料參考.
  • 看一下positive instance
    enter image description here
看一下目前的資料中標示為1的比例,也是作為日後分析參考.
到目前為止都在read data階段,沒有什麼insight,也沒什麼厲害的model,接下是痛苦的clean data.