数据标准化
在数据分析之前,我们通常需要先将数据标准化,利用标准化后的数据进行数据分析。
数据标准化的常用方法有三种“最小-最大标准化”(也叫离差标准化)、“Z-score标准化”和“按最小数定标标准化”
最小-最大标准化
y = ( X − X m i n ) / ( X m a x − X m i n ) y=(X-Xmin)/(Xmax-Xmin) y=(X−Xmin)/(Xmax−Xmin)
优点:有效消除量纲(量纲是指物理量的基本属性),将数据有效的映射到[0,1]区间,能够实现不同数据之间的比较
缺点:当数据明显集中到某个值上时,转换后的数据将会集中到0数据点,数据将无法用于后续比较。
import pandas as pd
def deal(data):
data=(data-data.min())/(data.max()-data.min())
return data
d_f1=pd.Series([1,2,3,4,5,6])
d_f2=pd.Series([7,7,8,9,10,11])
print(deal(d_f1))
print(deal(d_f2))
0 0.0
1 0.2
2 0.4
3 0.6
4 0.8
5 1.0
dtype: float64
0 0.00
1 0.00
2 0.25
3 0.50
4 0.75
5 1.00
dtype: float64
Z-score标准化
又叫“标准差标准化”、“零均值标准化”,Z分数标准化方法,该方法使用表较简单,使用范围较离差标准化更为广泛,具体公式如下:
y
=
(
x
−
x
‾
)
/
δ
y=(x-\overline{x})/\delta
y=(x−x)/δ
分子是(数据-均值),分母是标准差
def std_ch(data):
data=(data-data.mean())/data.std()
return data
print(std_ch(d_f1))
print(std_ch(d_f2))
0 -1.336306
1 -0.801784
2 -0.267261
3 0.267261
4 0.801784
5 1.336306
dtype: float64
0 -1.020621
1 -1.020621
2 -0.408248
3 0.204124
4 0.816497
5 1.428869
dtype: float64
按小数定标标准化
通过移动小数的小数点,将数据映射到[0,1]区间内。
y
=
x
/
1
0
j
y=x/10^j
y=x/10j
x为数值,j为适合的指数参数(能过够将x映射到[0,1]的指数参数)
-------感jio还有可以完善的地方,之后遇到了完善----------------
今天又是夹缝中学习数据分析的一天==!加油!