資料分析中的'疑難雜症'小結(二)
阿新 • • 發佈:2021-08-01
資料分析中的'疑難雜症'小結(二)
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)