import pandas as pd
#生成異常數據
df=pd.DataFrame({'col1':[1,120,3,5,2,12,13],
'col2':[12,17,31,53,22,32,43]})
print(df)
col1 col2
0 1 12
1 120 17
2 3 31
3 5 53
4 2 22
5 12 32
6 13 43
df_zscore=df.copy() #復制一個用來存儲Z-score得分的數據框
cols=df.columns
for col in cols:
df_col=df[col]
z_score=(df_col - df_col.mean()) / df_col.std() #計算每列的Z-score得分
df_zscore[col] = z_score.abs() > 2.2 #判斷Z-score得分是否大於2.2,如果是則為True,否則為False
#打印,為True即異常值
print(df_zscore)
col1 col2
0 False False
1 True False
2 False False
3 False False
4 False False
5 False False
6 False False
#獲取無異常值的數據
df_drop_outlier=df[df_zscore['col1']==False]
#打印
print(df_drop_outlier)
col1 col2
0 1 12
2 3 31
3 5 53
4 2 22
5 12 32
6 13 43