ตัวอย่างเต็มรูปแบบที่มีข้อมูลและ 2 กลุ่มดังต่อไปนี้:
การนำเข้า:
from StringIO import StringIO
import pandas as pd
#pandas config
pd.set_option('display.max_rows', 20)
ตัวอย่างข้อมูลที่มี 2 กลุ่ม: G1: กลุ่ม 1 G2: กลุ่ม 2:
TESTDATA = StringIO("""G1;G2;Value
1;A;1.6
1;A;5.1
1;A;7.1
1;A;8.1
1;B;21.1
1;B;22.1
1;B;24.1
1;B;30.6
2;A;40.6
2;A;51.1
2;A;52.1
2;A;60.6
2;B;80.1
2;B;70.6
2;B;90.6
2;B;85.1
""")
อ่านข้อมูลข้อความไปยังดาต้าดาต้าแพนด้า:
df = pd.read_csv(TESTDATA, sep=";")
กำหนดค่าผิดปกติโดยใช้ค่าเบี่ยงเบนมาตรฐาน
stds = 1.0
outliers = df[['G1', 'G2', 'Value']].groupby(['G1','G2']).transform(
lambda group: (group - group.mean()).abs().div(group.std())) > stds
กำหนดค่าข้อมูลที่กรองและค่าผิดปกติ:
dfv = df[outliers.Value == False]
dfo = df[outliers.Value == True]
พิมพ์ผลลัพธ์:
print '\n'*5, 'All values with decimal 1 are non-outliers. In the other hand, all values with 6 in the decimal are.'
print '\nDef DATA:\n%s\n\nFiltred Values with %s stds:\n%s\n\nOutliers:\n%s' %(df, stds, dfv, dfo)