一、常用方法有:
1、对数化处理
1.1 应用场景有:
①、金融行业计算增长率(公式log(当期)-log(对比期),因ln(x)≈x-1)、
②、分组画直方图数值相差特别大的时(用np.log方法,比如 df[待处理列名].map(lambda x:np.log(x) if x>0 else np.nan)
2、规范化处理
2.1 公式:
① 最小-最大规范化(即归一化,或离差标准化):(当前值-最小值)/(最大值-最小值) 或 (最大值-当前值)/(最大值-最小值),如:(data-data.min())/(data.max() -data.min())。一般数据分布比较均匀选择此方法,可以使用kde图观察。
② 零-均值规范化(即标准化,或归零化,或标准差标准化):(当前值-平均值)/标准差,如:(data-data.mean())/data.std()。一般数据服从正态分布选择此方法,可以使用kde图观察。
2.2 说明:
① 为了消除指标之间的量纲和取值范围差异的影响,需要进行标准化(归一化)处理,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。
② 这两种方式都是x的线性变换,本身不会改变数据的分布
2.3 标准化处理场景:
1、需要使用梯度下降算法时
2、涉及求距离的算法,如KNN、聚类、支持向量机、神经网络等
3、小数定标标准化
3.1 公式:
将属性A的原始值x使用decimal scaling标准化到x'的计算方法是: x'=x/(10^j) 其中,j是满足条件的最小整数。j是对以10为底的x的绝对值最大的对数向上取整(np.ceil()),如:j=np.ceil(np.log10(data.abs().max())) → 新数据=原数据/10**j
3.2 说明:
① 消除单位影响
② 通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于属性A的取值中的最大绝对值。
4、离散化处理
4.1 定义:
通俗讲,是把连续型数据分段转换为分类数据分析,python中使用pd.cut()方法和pd.qcut()方法
4.2 等宽法处理:
①、pd.cut()方法:pd.cut(data, k, labels = range(k))#等宽离散化,各个类比依次命名为0,1,2,3 或 pd.cut(data1.年龄, [0,45, 59, 74, 89,120],labels=["青年", "中年", "老年前期","老年","长寿老人"])(这种方法labels的元素个数必须比年龄的分组元素个数少一个)
②、pd.qcut()用分位数进行分箱:pd.qcut(data1["年龄"],4,labels=[1,2,3,4])