数据分析之数据处理(四)
一、数据归一化/标准化
数据的标准化是数据按比例缩放,使之落入一个小的特定区间。在某些比较和评论的指标处理汇总京城会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或两级的指标能够进行比较和加权
最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上
(一)数据标准化
1. 0-1标准化
(1)创建数据
# 数据标准化
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')
#0-1标准化:将数据的最大值最小值记录下来,并通过max-min作为基数(即min=0,max=1)进行数据的归一化处理
# 数据的归一化处理:x=(x-min)/(max-min)
# step 1 创建数据
df=pd.DataFrame({"value1":np.random.rand(10)*20,
'value2':np.random.rand(10)*100})
print('*******原数据********\n',df.head())
(2)创建数据
# step 2 创建函数,标准化数据
def data_norm(df,*cols):
df_n=df.copy()
for col in cols:
ma=df_n[col].max()
mi=df_n[col].min()
df_n[col+'_n']=(df_n[col]-mi)/(ma-mi)
return (df_n)
(3)标准化数据
# step 3 标准化数据
df_n=data_norm(df,'value1','value2')
print('\n*******标准化数据********\n',df_n.head())
运行结果
2.Z - score标准化
- Z分数(z-score)是一个分数与平均数的差再除以标准差的过程 → z=(x-μ)/σ,其中x为某一具体分数,μ为平均数,σ为标准差
- Z值的量代表着原始分数和母体平均值之间的距离,是以标准差为单位计算。在原始分数低于平均值时Z则为负数,反之则为正数
- 数学意义:一个给定分数距离平均数多少个标准差?
- 什么情况下使用Z-score标准化:在分类,聚类算法中,需要使用距离来度量相似性的时候,Z-score表现更好
(1)创建数据
# 数据标准化(2)z-score标准化
import pandas as pd
import numpy as np
# import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
# step 1 创建数据
df = pd.DataFrame({"value1":np.random.rand(10) * 100,
'value2':np.random.rand(10) * 100})
print('*****原数据*****\n',df.head())
(2)创建函数,标准化数据
# step 2 创建函数,标准化数据
def data_Znorm(df,*cols):
df_n=df.copy()
for col in cols:
u=df_n[col].mean()#平均值
std=df_n[col].std()#标准差
df_n[col+'_Zn']=(df_n[col]-u)/std
return (df_n)
(3)标准化数据
# step 3 标准化数据
df_z=data_Znorm(df,'value1','value2')
u_z=df_z['value1_Zn'].mean()
std_z=df_z['value1_Zn'].std()
print('\n*****标准化后数据*****\n',df_z)
print('\n*****标准化后value1的均值为:%.2f, 标准差为:%.2f*****\n' % (u_z, std_z))
运行结果
自学自用,希望可以和大家积极沟通交流,小伙伴们加油鸭,如有错误还请指正,不喜勿喷