歡迎加入python學習*** 667279387
pandas學習(一)–資料的匯入
pandas學習(二)–雙色球資料分析
pandas學習(三)–nab球員薪資分析
pandas學習(四)–資料的歸一化
歸一化方法有兩種形式,一種是把數變為(0,1)之間的小數,一種是把有量綱表示式變為無量綱表示式。主要是為了資料處理方便提出來的,把資料對映到0~1範圍之內處理。
也稱為離差標準化,是對原始資料的線性變換,使結果值對映到[0 - 1]之間。轉換函式如下:x^
=x−x
minx
max−
xmin
' role="presentation">x^=
x−xm
inxm
ax−x
minx
^=x−
xmin
xmax
−xmi
n其中max為樣本資料的最大值,min為樣本資料的最小值。這種方法有個缺陷就是當有新資料加入時,可能導致max和min的變化,需要重新定義。
這種方法給予原始資料的均值(mean)和標準差(standard deviation)進行資料的標準化。經過處理的資料符合標準正態分佈,即均值為0,標準差為1,轉化函式為:x^
=x−μ
σ' role="presentation">x^=
x−μσ
x^=x
−μσ
其中為μ
' role="presentation" style="position: relative">μ
μ所有樣本資料的均值,
σ' role="presentation" style="position: relative">σ
σ為所有樣本資料的標準差。該種歸一化方式要求原始資料的分布可以近似為高斯分布,否則處理的效果會變差。
import numpy as np
import pandas as pd
np.random.seed(1)
df = pd.dataframe(np.random.randn(4, 4) * 4 + 3)
print(df)
""" 0 1 2 3
0 9.497381 0.552974 0.887313 -1.291874
1 6.461631 -6.206155 9.979247 -0.044828
2 4.276156 2.002518 8.848432 -5.240563
3 1.710331 1.463783 7.535078 -1.399565
"""df_norm = (df - df.min()) / (df.max() - df.min())
print(df_norm)
""" 0 1 2 3
0 1.000000 0.823413 0.000000 0.759986
1 0.610154 0.000000 1.000000 1.000000
2 0.329499 1.000000 0.875624 0.000000
3 0.000000 0.934370 0.731172 0.739260
"""print(df_norm2)
""" 0 1 2 3
0 1.000000 0.823413 0.000000 0.759986
1 0.610154 0.000000 1.000000 1.000000
2 0.329499 1.000000 0.875624 0.000000
3 0.000000 0.934370 0.731172 0.739260
"""
2、z-score標準化方法import numpy as np
import pandas as pd
np.random.seed(1)
df = pd.dataframe(np.random.randn(4, 4) * 4 + 3)
print(df)
""" 0 1 2 3
0 9.497381 0.552974 0.887313 -1.291874
1 6.461631 -6.206155 9.979247 -0.044828
2 4.276156 2.002518 8.848432 -5.240563
3 1.710331 1.463783 7.535078 -1.399565
"""df_norm = (df - df.mean()) / (df.std())
print(df_norm)
""" 0 1 2 3
0 1.213741 0.287871 -1.454237 0.312166
1 0.295115 -1.481492 0.777218 0.866440
2 -0.366215 0.667324 0.499679 -1.442906
3 -1.142640 0.526297 0.177340 0.264301
"""print(df_norm2)
""" 0 1 2 3
0 1.401507 0.332405 -1.679208 0.360458
1 0.340769 -1.710680 0.897454 1.000479
2 -0.422869 0.770560 0.576980 -1.666125
3 -1.319407 0.607716 0.204774 0.305188
"""
比較好奇為啥上面df.std()和np.std()算出來的值不一樣,估計**有點不一樣的地方,還需要研究研究。下面做了乙個簡單的實驗,不知道df.std()具體是怎麼算的。
import numpy as np
import pandas as pd
data = [(1, 2), (3, 4)]
df = pd.dataframe(data)
print(df)
""" 0 1
0 1 2
1 3 4
"""df_std1 = df.std(axis=0)
print(df_std1)
"""0 1.414214
1 1.414214
"""print(df_std2)
"""0 1.0
1 1.0
"""
經過後續學習這篇帖子找到了答案:
import numpy as np
import pandas as pd
data = [(1, 2), (3, 4)]
df = pd.dataframe(data)
print(df)
""" 0 1
0 1 2
1 3 4
"""df_std1 = df.std(axis=0)
print(df_std1)
"""0 1.414214
1 1.414214
"""print(df_std2)
"""0 1.414214
1 1.414214
"""
ddof : int, optional簡單點說np.std()計算的是標準差,df.std()計算的是標準差的無偏估計means delta degrees of freedom. the divisor used in calculations is n - ddof, where n represents the number of elements. by default ddof is zero.
這個是numpy對ddof的解釋。
參考資料
1、2、
3、歡迎加入python學習*** 667279387
pandas歸一化某一列 pandas技巧彙總
dataframe reindex和reset index區別 reset index的作用是重新設定dataframe的index,範圍為0 len df df pd.dataframe df2 pd.dataframe print df n df print df2 n df2 df x df,...
pandas 資料歸一化以及行刪除例程
pandas 資料歸一化以及行刪除例程 coding utf8 import pandas as pd import numpy as np from pandas import series,dataframe 如果有id列,則需先刪除id列再進行對應操作,最後再補上 統計的時候不需要用到id列,...
機器學習 資料歸一化
機器學習中,在資料預處理過程中,通過將資料歸一化可以加快梯度下降求最優解的速度,也有可能提高模型計算的精度。常用的歸一化方法主要有兩種 最值歸一化。比如把最大值歸一化成1,最小值歸一化成 1 或把最大值歸一化成1,最小值歸一化成0。適用於本來就分布在有限範圍內的資料。其中常用的方法有 線性比例變換法...