動手學習資料分析 第2章
本文是Datawhale的組隊學習動手學習資料分析的學習筆記,課件內容來源於Datawhale的團隊;程式碼部分參考了b站up主橘子冰的一隅角落的系列影片
第一節 資料清洗及特徵處理
剛拿到的資料通常是不乾淨的,即資料中存在缺失值、重複值、異常點等,需要經過處理後再進行分析和建模。
2.1 缺失值觀察與處理
2.1.1 任務一:缺失值觀察
#方法一
df.info()
#方法二
df.isnull().sum()
#方法三
df[['Age','Cabin','Embarked']].head(3)
2.1.2 任務二:對缺失值進行處理
使用dropna函式與fillna函式來實現對缺失值的處理。
dropn函式的用法: 用於刪除空值
dropna(axis,how,thresh,subset,inplace)
- axis:預設為0,0代表行,代表列
- how:預設為any,刪除空值所在的行或者列(取決於axis的取值);引數為all時,只刪除全為空值的行或列,若不全為空值則不起作用
- thresh:當引數為x時,表示保留空值的數量小於x的每一行或者是每一列(取決於axis的取值)
- subset:指定刪除特定行或列的空值所在的列或行,如果axis=0,表示如果指定行x中有空值,則刪除所在的列;如果axis=1,表示如果指定列x有空值,則刪除空值所在的行
- inplace:預設為False,即原資料不受影響;引數為True時,表示改變原資料
fillna函式的用法: 用於填充空值
fillna(axis,mthod,limit,inplace)
- axis:預設為0,取0為按照列填充,取1為按照行填充
- method:表示填充的方式,如果為‘ffill’,使用前一個資料填充;如果為‘bfill’,使用後一個資料填充。可省略
- limit:限制填充的空值的個數
- inplace:預設為False,即原資料不受影響;引數為True時,表示改變原資料
2.2 重複值觀察與處理
2.2.1 任務一:請檢視資料中的重複值
使用duplicated檢測資料是否重複。
duplicated函式的用法:
DataFrame.duplicated(subsete, keep)
-
subset:預設為None,即檢測所有的列。若subset指定部分列則只檢測這些列
-
keep:可選的集合 {'first', 'last', False},預設是 ‘first’。這個域決定了如何去標識重複行。
first:將除第一次出現以外的重複資料標記為True
last:將除最後一次出現以外的重複資料標記為True
False:將所有重複的項都標記為True(不管是不是第一次出現)
-
inplace:同上
2.2.2 任務二:對重複值進行處理
使用drop_duplicates處理重複值。
drop_duplicates函式的用法:
DataFrame.drop_duplicates(subsete, keep)
所有的引數用法與duplicated函式相同
2.2.3 任務三:將前面清洗的資料儲存為csv格式
DataFrame.to_csv(檔名)
2.3 特徵觀察與處理
可以將特徵值分為兩類,即數值型特徵和文字型特徵。
數值型特徵一般可以直接用於模型的訓練,但有時候為了模型的穩定性及魯棒性會對連續變數進行離散化。
文字型特徵往往需要轉換成數值型特徵才能用於建模分析。