數據清洗的經驗與教訓 Data Cleaning(二)

上一次寫教訓總結已經是一年前了。最近又浪費了不少時間,所以把原因寫出來,可能有的錯誤比較初級。我看的都是社會科學類數據(最多幾百萬行),使用 R 和 Python。經驗不一定適用於其他場景、其他軟體。

使用各種包的注意事項

  • 包的載入有先後順序。如果兩個包有重名的命令,最後載入的那個會覆蓋前面的。所以推薦最後載入平時最常用、最熟悉的包
  • R 裡面可以用包的名字::命令這個格式只載入某個包的某個命令。這麼做的好處是這個包的其他命令不會載入,也就不可能覆蓋你常用的命令
  • 如果現在的包能用,哪怕有強迫症(我)也不要隨意更新包,否則之前的代碼可能會用不了
  • 使用剛開發或剛更新的包如果出錯,可能不一定是你的問題,而是包的作者寫錯了。這時候可以:
    • 手寫基礎命令,計算一下是不是包的結果錯了
    • 去包的 Github Issues 頁面看看,說不定有人已經指出了問題
    • 真有時間可以去看包的底層代碼
  • 如果包確實有錯,一定記得花點時間告訴包的作者。有的人不僅會回復、修正,還會特別感謝你 =)

有合作者的時候

  • 盡量讓比較會命名的一方來命名新變數。如果有人(我)想了半天也只能想出df_subset這種名字,千萬不要讓他命名新變數
  • 統一說好命名新變數、新文件用什麼格式,例如 vote.sharevote_sharevote-sharevoteShare。不統一的話會非常容易出錯
  • 保持隨手更新項目文檔的習慣,否則時間長了互相都搞不清楚對方做了什麼
  • 上傳 Github 的時候加入 .gitignore 文件,讓它忽略文件修改歷史。不加的話,合作者會知道你(我)畫一張圖畫了二十次

複雜項目

  • 把代碼按照「載入」、「預處理」、「處理方法1」、「處理方法2」等步驟分開放在不同文件里,這樣如果以後需要用新方法處理數據,只需要調用「載入」和「預處理」文件再處理即可。初寫代碼的時候如果偷懶把所有步驟放在一個文件里,最後要換方法處理數據會非常麻煩

讀寫數據

  • 把數據存 .Rdata格式,大小會比.csv.txt 小很多
  • 同樣的內容,.csv不一定比.xlsx
  • 手動錄入數據進 Excel,我的電腦(很老的 Mac)大概在 3,000 行就開始卡。Mac 的 Numbers 快很多,最新版也加入了根據自定義分隔符或固定間距分列

清洗數據

  • 英文世界的常見詞轉換通常都有現成的包,不用手寫(例如文字日期到數字日期,國名、州名到縮寫)
  • 中文和日文有的字看起來一樣,但匹配的時候會匹配不了

現在用 R 的人越來越多,以前我非常想要的兩個功能都有人開發了包(一個是patchwork,可以把很多ggplot圖放在一起;一個是summarytables,可以把描述性統計數據批量做成圖或者輸出成表格)。從 R 輸出到各種格式的工具也越來越多,連 LaTex 都有,希望可以趕緊用上這些包,以後 LaTex 就不需要用一次搜索一次了。


本系列其他文章:

數據清洗的經驗與教訓 Data Cleaning(一)

從哪裡可以免費、低成本獲得靠譜的數據?

推薦閱讀:

首篇數據分析報告出爐
Kaggle 數據清洗挑戰 Day 2 - 數據縮放及標準化處理
給妹子講python-S02E09Pandas引言與Series簡介
朝陽藥店銷售數據分析 python流程圖
數據處理流程個人總結(一)

TAG:數據分析 | 科技 | 數據清洗 | 經濟 |