1. 程式人生 > 其它 >資料分析中的'疑難雜症'小結(二)

資料分析中的'疑難雜症'小結(二)

資料分析中的'疑難雜症'小結(二)

1. 如何對整個DataFrame資料的缺失值進行處理

  • 使用dropna()直接刪除含有缺失值的行

  • 使用fillna(num)進行缺失值的替換填充

    例如:df.dropna().head(3) / df.fillna(0).head(3)

2. 資料中重複值的檢視

  • 使用duplicated()判斷重複數值,說明:duplicated()是對整行進行查重,return 重複了的資料,且只現實n-1條重複的資料(n是重複的次數)

    例如:df[df.duplicate()]

  • drop_duplicates()

    函式是將所有重複的資料都去掉了,且預設保留重複資料的第一條。

    例如:frame.drop_duplicates()

3. 資料預處理的分箱操作

在建立模型前一般需要對特徵變數進行離散化。特徵離散化後,模型會更穩定,降低模型過擬合的風險。而特徵離散化處理通常採用的就是分享法。資料分箱又分為有監督分箱和無監督分箱,石佛使用標籤決定是有監督還是無監督。

簡單的數值分距使用pd.cut,按頻率分距使用pd.qcut

具體分箱細節:https://blog.csdn.net/qq_22172133/article/details/118883524

4. 檢視文字變數的三種方式

  • value_counts

顯示變數名及其對應數量。例如:df['Sex'].value_counts()

  • unique

顯示變數名。例如:df['Sex'].unique()

  • nunique

顯示變數名種類數。例如:df['Sex'].nunique()

5. 類別文字的轉換

  • replace來實現

例如:df['Sex_num'] = df['Sex'].replace(['male','female'],[1,2])

  • map實現

例如:df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})

  • sklearn preprocessing中的LabelEncoder實現
from sklearn.preprocessing import LabelEncoder
for feat in ['Cabin', 'Ticket']:
    lbl = LabelEncoder()  
    label_dict = dict(zip(df[feat].unique(), range(df[feat].nunique())))
    df[feat + "_labelEncode"] = df[feat].map(label_dict)
    df[feat + "_labelEncode"] = lbl.fit_transform(df[feat].astype(str))

df.head()

6. 類別文字轉one-hot編碼

  • pd.get_dummies進行編碼轉化
x = pd.get_dummies(df[feat], prefix=feat)

具體用法:https://blog.csdn.net/maymay_/article/details/80198468

7. 文字特徵提出

  • str.extract實現正則表示式抽取
df['Title'] = df.Name.str.extract('([A-Za-z]+)\.', expand=False)