【Python】数据分析.pandas数据预处理.标准化数据



数据分析.pandas数据预处理.标准化数据

不同特征之间往往具有不同的量纲,由此所造成的数值间的差异可能很大,在涉及空间距离计算或梯度下降法等情况的时候不对其进行处理会影响到数据分析结果的准确性。为了消除特征之间的量纲和取值范围差异可能会造成的影响,需对数据进行标准化处理,也可以称为规范化处理。

一、离差标准化数据

离差标准化是对原始数据的一种线性变换,结果是将原始数据的数值映射到[0,1]区间上。
X ∗ = X − m i n m a x − m i n X^*=\frac{X-min}{max-min} \quad X=maxminXmin
max为样本数据的最大值,min为样本数据的最小值,max-min为极差。

import pandas as pd
import numpy as np

# 读取数据
detail = pd.read_csv('data/detail.csv',index_col=0,encoding='gbk')

# 自定义离差标准化函数
def minmaxscale(data):
    data=(data-data.min())/(data.max()-data.min())
    return data

# 对菜品订单表售价和销量做离差标准化
data1 = minmaxscale(detail['counts'])
data2 = minmaxscale(detail['amounts'])
data3 = pd.concat([data1,data2],axis=1)

print('离差标准化之前销量和售价数据前五行为:\n',detail[['counts','amounts']].head())
print('离差标准化之后销量和售价数据前五行为:\n',data3.head())

在这里插入图片描述
通过离差标准化前后的对比,可以发现原先数值与映射的值相对应;而销量对应列变为了0,是因为只要出现在订单表上的数据都是同一个订单点的菜,最少份数是1,当数据和最小值相等时就会变为0;切菜品价格数据进行离差标准化后数之间的差值很小,是由于数据极差过大。

缺点:
当数据的极差过大时,离差标准化趋于0;
当数据发生更改后要重新确定[min,max]范围,以免引起系统报错。

返回顶部


二、标准差标准化数据

标准差标准化也叫零均值标准化或z分数标准化,通过该方法处理的数据均值为0,标准差为1。
X ∗ = X − X ‾ δ X^*=\frac{X-\overline{X}}{\delta} \quad X=δXX
X ‾ 为 原 始 数 据 的 平 均 值 , δ 为 原 始 数 据 的 标 准 差 。 \overline{X}为原始数据的平均值,\delta为原始数据的标准差。 Xδ

##自定义标准差标准化函数
def StandardScaler(data):
    data=(data-data.mean())/data.std()
    return data
##对菜品订单表售价和销量做标准化
data4=StandardScaler(detail['counts'])
data5=StandardScaler(detail['amounts'])
data6=pd.concat([data4,data5],axis=1)
print('标准差标准化之前销量和售价数据为:\n',
    detail[['counts','amounts']].head())
print('标准差标准化之后销量和售价数据为:\n',data6.head())

在这里插入图片描述
通过对比可以发现,标准差标准化后的数值区间不限于[0,1],还会存在负值,同时保留了数数据的分布情况。

返回顶部


三、小数定标标准化数据

小数定标标准化是通过移动数据的小数位数,将数据映射到[-1,1]区间上,移动的小数位数取决于数据绝对值的最大值。
X ∗ = X 1 0 k X^*=\frac{X}{10^k} \quad X=10kX
k取决于数据绝对值的最大值。

##自定义小数定标差标准化函数
def DecimalScaler(data):
    data=data/10**np.ceil(np.log10(data.abs().max()))
    return data
##对菜品订单表售价和销量做标准化
data7=DecimalScaler(detail['counts'])
data8=DecimalScaler(detail['amounts'])
data9=pd.concat([data7,data8],axis=1)
print('小数定标标准化之前的销量和售价数据:\n',
    detail[['counts','amounts']].head())
print('小数定标标准化之后的销量和售价数据:\n',data9.head())

在这里插入图片描述
根据小数定标标准化数据后,我们进行回头检测,abs()查出数据绝对值的最大值为178三位数,再使用np.log10()得到10为底的对数,最后用np.ceil()得出向上取整的最小整数3.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

返回顶部


  • 1
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
pandas库是一个用于数据处理和分析的Python库。它提供了一系列函数和方法,可以帮助我们进行数据清洗和预处理。数据清洗是指对数据进行审核、处理缺失值、处理异常值和重复值等操作,以使数据符合分析和建模的要求。而数据预处理是指对原始数据进行转换、重命名、离散化等操作,以便更好地进行数据分析和建模。 在pandas中,可以使用以下方法进行数据清洗和预处理: - 处理重复值:可以通过删除记录重复和特征重复来处理重复值。 - 处理缺失值:可以通过删除、替换或插值的方法来处理缺失值。 - 处理异常值:可以使用3σ原则或箱线图分析等方法来检测和处理异常值。 具体来说,在处理缺失值方面,pandas提供了删除法、替换法和插值法等方法。删除法是指直接删除包含缺失值的记录或特征;替换法是指用指定的值或统计量替换缺失值;插值法是指根据已有数据的模式和趋势,在缺失值附近进行插值计算。 在处理异常值方面,可以使用3σ原则来判断是否为异常值,即判断数据是否偏离平均值超过3倍的标准差。另外,也可以使用箱线图分析来检测异常值,箱线图通过绘制数据的分位数和四分位数范围来表示数据的分布情况,从而确定是否存在异常值。 总之,pandas提供了丰富的功能和方法,可以方便地进行数据清洗和预处理,帮助我们更好地分析和理解数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python_pandas_数据清洗和预处理.docx](https://download.csdn.net/download/weixin_56859075/23368211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【Python数据处理.pandas数据预处理.清洗数据](https://blog.csdn.net/qq_45797116/article/details/107858510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python 数据分析8 pandas 数据清洗&预处理](https://blog.csdn.net/weixin_38673554/article/details/104344063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着蜗牛ひ追导弹'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值