學習時間:2019/10/25 周五晚上22點半開始。
學習目标:Page188-Page217,共30頁,目标6天學完,每天5頁,預期1029學完。
實際回報:X集中學習1.5小時,學習6頁。實際XXX學完,耗時N天,M小時
資料準備工作:加載、清理、轉換以及重塑,通常會占用分析師80%的時間或更多!!!學會高效的資料清洗和準備,将絕對提升生産力!本章将讨論處理缺失資料、重複資料、字元串操作和其他分析資料轉換的工具。下一章将關注用多種方法合并、重塑資料集。
7.1 處理缺失資料
缺失資料在pandas中呈現的方式有些不完美,但對于大多數使用者可以保證功能正常。
對于數值資料,pandas使用浮點值NaN(Not a Number)表示缺失資料。稱其為哨兵值,可以友善地檢測出來:
在pandas中,将缺失值表示為NA(R語言地慣用法),表示not available。NA資料可能是不存在地資料或雖然存在但沒有觀察到。(進行資料清洗時,為便于分析最好直接對缺失資料進行分析,以判斷資料采集地問題或缺失胡資料可能導緻的偏差。)
Python内置的None值在對象資料中也可以作為NA:
表7-1 一些關于缺失資料處理的函數
7.1.1 濾除缺失資料
過濾缺失資料,用dropna更為實用(也可通過pandas.isnull或布爾索引的手工方法)
對于Series,dropna傳回一個僅含非空資料和索引值的Series:
等價于:
對于DataFrame對象, dropna預設丢棄任何含有缺失值的行:
1)傳入 how = ‘all‘ 将隻丢棄全為NA的行:
2)傳入 axis = 1,将丢棄含有NA的所有列,如果同時傳入 how = ‘all‘ 則會丢棄全為NA的列:
3)另一個濾除DataFrame行的問題涉及時間序列資料。假設需要留下一部分觀測資料,可用 thresh=N 參數實作此目的(丢棄前N行含有NA的行,對于列如何處理???):
7.1.2 填充缺失資料
如果不想濾除缺失資料,而是希望通過其他方式填補哪些缺失資料,則fillna方法是最主要的函數。通過一個常數調用fillna就會将缺失值替換為該常數:
通過一個字典調用fillna,可實作對不同列填充不同的值:
fillna預設會傳回新對象,如果想對現有對象進行就地修改,則可以通過傳入 inplace = True實作:
對reindex(書中為reindexing,是否有誤?)有效的插值方法,同樣适用于fillna:
7.2 資料轉換
7.2.1 移除重複資料
7.2.2 利用函數或映射進行資料轉換
7.2.3 替換值
7.2.4 重命名軸索引
7.2.5 離散化和面元劃分
7.2.6 檢測和過濾異常值
7.2.7 排列和随機采樣
7.2.8 計算名額和啞變量
7.3 字元串操作
7.3.1 字元串對象方法
7.3.2 正規表達式
7.3.3 pandas的矢量化字元串函數
7.4 總結
高效的資料準備,可以為資料分析留出更多時間。下一章,将學習pandas的聚合與分組。