使用pandas模塊實現數據的標準化

目錄

1.3σ原則

2.離差標準化

3.標準差標準化

4.小數定標標準化


3σ 原則 (u-3*σ ,u+3*σ )
離差標準化 (x-min)/(max-min)
標準差標準化 (x-u)/σ
小數定標標準化

x/10**k

k=np.ceil(log10(max(|x|)))

1.3σ原則

u  均值

σ 標準差

正太分佈的數據基本都分佈在(u-3σ,u+3σ)範圍內

其他的數據

import pandas as pd
import numpy as np
def three_sigma(se):
    """
    自實現3σ原則,進行數據過濾
    :param se:傳進來的series結構數據
    :return:去除異常值之後的series數據
    """
    bool_id=((se.mean()-3*se.std())<se) & (se<(se.mean()+3*se.std()))
    print(bool_id)
    return se[bool_id]

#加載數據
detail=pd.read_excel('./meal_order_detail.xlsx')
#進行異常值處理
res=three_sigma(detail['amounts'])
print(detail.shape)
print(res.shape)

2.離差標準化

(x-min)/(max-min)

import pandas as pd
import numpy as np

def minmax_sca(data):
    """
    離差標準化
    param data:傳入的數據
    return:標準化之後的數據
    """
    new_data=(data-data.min())/(data.max()-data.min())
    return new_data

#加載數據
detail=pd.read_excel('./meal_order_detail.xlsx')
res=minmax_sca(detail[['amounts','counts']])
print(res)
data=res
bool_id=data.loc[:,'count']==1
print(data.loc[bool_id],'counts')

3.標準差標準化

(x-u)/σ

異常值對標準差標準化的影響不大

轉化之後的數據--->均值0   標準差1

import pandas as pd
import numpy as np
def stand_sca(data):
    """
    標準差標準化
    :param data:傳入的數據
    :return:標準化之後的數據
    """
    new_data=(data-data.mean())/data.std()
    return new_data

#加載數據
detail=pd.read_excel('./meal_order_detail.xlsx')
res=stand_sca(detail[['amounts','counts']])
print(res)
print('res的均值:',res.mean())
print('res的標準差:',res.std())

4.小數定標標準化

x/(10^k)

k=math.ceil(log10(max(|x|)))

以10爲底,x的絕對值的最大值的對數 最後進行向上取整

import pandas as pd
import numpy as np
def deci_sca(data):
    """
    自實現小數定標標準化
    :param data: 傳入的數據
    :return: 標準化之後的數據
    """
    new_data=data/(10**(np.ceil(np.log10(data.abs().max()))))
    return new_data
#加載數據
detail = pd.read_excel('./meal_order_detail.xlsx')
res = deci_sca(detail[['amounts', 'counts']])
print(res)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章