iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0
AI & Data

時間管理大師-時間序列分析終極密技系列 第 24

[Day24]踏破千世笑紅塵-教你當緝毒犬,異常檢測

  • 分享至 

  • xImage
  •  

今天來教學異常檢測,一張表要是有異常值的話,分析出來的數值可能也會是異常的,所以一定要去除異常值
我們先把昨天的過濾出的資料匯出成CSV檔,我們一共保留了4個欄位午仔魚,白蝦,腩肉_冷凍牛肉,鴨_土番鴨

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt 

if __name__ == "__main__":
    data = pd.read_csv("./OK.csv")
    mask = data["市場名稱"] == "豐原第一市場"
    data = data[mask].copy()


    data["訪價日期"] = pd.to_datetime(data["訪價日期"])

    data = data.set_index("訪價日期")

    for i in data.columns[1:]:
        if data[i].mean() < 200:
            data = data.drop([i], axis = 1)

    data.to_csv("./OK.csv")

讀取進來

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt 

if __name__ == "__main__":
    data = pd.read_csv("./OK.csv")

    data["訪價日期"] = pd.to_datetime(data["訪價日期"])
    data = data.set_index("訪價日期")

    print(data)

我們直接看圖

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt 

if __name__ == "__main__":
    data = pd.read_csv("./OK.csv")

    data["訪價日期"] = pd.to_datetime(data["訪價日期"])
    data = data.set_index("訪價日期")

    for i in range(1, data.columns.shape[0]):
        plt.subplot(2,2,i)
        plt.title(data.columns[i])
        plt.plot(data[data.columns[i]])

    plt.show()

我們可以好直觀的看出,這些資料真是慘不忍睹,這張圖有三個主要毛病

  • 時間是混亂的,甚至出現同時間有兩個數值的情況
  • 有極端值出現
  • 中文顯示的問題

我們一個一個問題來解決,首先先解決時間問題

我們發現有些月份日期居然相反了(標紅字),我們觀察這張表,時間大概是3月到9月,我這裡一一去檢查每筆資料,只要在月份的字元不是在03~09,就交換

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt 

if __name__ == "__main__":
    data = pd.read_csv("./OK.csv")

    month = ["03", "04", "05", "06", "07", "08", "09"]
    for i in range(data.shape[0]):
        if data["訪價日期"][i].split("-")[1] not in month:
            year = data["訪價日期"][i].split("-")[0]
            month = data["訪價日期"][i].split("-")[2]
            day = data["訪價日期"][i].split("-")[1]
            data["訪價日期"][i] = year + "-" + month + "-" + day

    data.to_csv("./OK1.csv", index = 0)


好多了,至少解決了同時間出現多值的情況了


上一篇
[Day23]一肩擔盡古今愁-時間序列分析開始,資料清理實戰
下一篇
[Day25]歲月不待人-異常值檢測之柴比雪夫不等式
系列文
時間管理大師-時間序列分析終極密技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言