代碼演示
1 生成一個 df
1 import pandas as pd # 導入pandas庫 2 # 生成異常數據 3 df = pd.DataFrame({'col1': [1, 120, 3, 5, 2, 12, 13], 4 'col2': [12, 17, 31, 53, 22, 32, 43]})
2 通過Z-Score方法判斷異常值
1 df_zscore = df.copy() # 復制一個用來存儲Z-score得分的數據框 2 cols = df.columns # 獲得數據框的列名 3 4 for col in cols: # 循環讀取每列 5 df_col = df[col] # 得到每列的值 6 z_score = (df_col - df_col.mean()) / df_col.std() # 計算每列的Z-score得分 7 # 判斷Z-score得分是否大於2.2,(此處2.2代表一個經驗值),如果是則是True,否則為False 8 df_zscore[col] = z_score.abs() > 2.2 9 10 print(df_zscore) # 打印輸出
3 刪除異常值所在的行
留下==False的,df_zscore['col1'] == True 的就能丟掉了
1 df_drop_outlier = df[df_zscore['col1'] == False] 2 print(df_drop_outlier)