動手學習資料分析 第2章

人间烟火天上星發表於2024-03-15

動手學習資料分析 第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 特徵觀察與處理

可以將特徵值分為兩類,即數值型特徵和文字型特徵。

數值型特徵一般可以直接用於模型的訓練,但有時候為了模型的穩定性及魯棒性會對連續變數進行離散化。

文字型特徵往往需要轉換成數值型特徵才能用於建模分析。

相關文章