使用pandas模块实现数据的标准化操作


Posted in Python onMay 14, 2021

如下所示:

3σ 原则 (u-3*σ ,u+3*σ )
离差标准化 (x-min)/(max-min)
标准差标准化 (x-u)/σ
小数定标标准化

x/10**k

k=np.ceil(log10(max(|x|)))

1.3σ原则

u 均值

σ 标准差

正太分布的数据基本都分布在(u-3σ,u+3σ)范围内

其他的数据

import pandas as pd
import numpy as np
def three_sigma(se):
    """
    自实现3σ原则,进行数据过滤
    :param se:传进来的series结构数据
    :return:去除异常值之后的series数据
    """
    bool_id=((se.mean()-3*se.std())<se) & (se<(se.mean()+3*se.std()))
    print(bool_id)
    return se[bool_id]
 
#加载数据
detail=pd.read_excel('./meal_order_detail.xlsx')
#进行异常值处理
res=three_sigma(detail['amounts'])
print(detail.shape)
print(res.shape)

2.离差标准化

(x-min)/(max-min)
import pandas as pd
import numpy as np
 
def minmax_sca(data):
    """
    离差标准化
    param data:传入的数据
    return:标准化之后的数据
    """
    new_data=(data-data.min())/(data.max()-data.min())
    return new_data
 
#加载数据
detail=pd.read_excel('./meal_order_detail.xlsx')
res=minmax_sca(detail[['amounts','counts']])
print(res)
data=res
bool_id=data.loc[:,'count']==1
print(data.loc[bool_id],'counts')

3.标准差标准化

(x-u)/σ

异常值对标准差标准化的影响不大

转化之后的数据--->均值0 标准差1

import pandas as pd
import numpy as np
def stand_sca(data):
    """
    标准差标准化
    :param data:传入的数据
    :return:标准化之后的数据
    """
    new_data=(data-data.mean())/data.std()
    return new_data
 
#加载数据
detail=pd.read_excel('./meal_order_detail.xlsx')
res=stand_sca(detail[['amounts','counts']])
print(res)
print('res的均值:',res.mean())
print('res的标准差:',res.std())

4.小数定标标准化

x/(10^k)
k=math.ceil(log10(max(|x|)))

以10为底,x的绝对值的最大值的对数 最后进行向上取整

import pandas as pd
import numpy as np
def deci_sca(data):
    """
    自实现小数定标标准化
    :param data: 传入的数据
    :return: 标准化之后的数据
    """
    new_data=data/(10**(np.ceil(np.log10(data.abs().max()))))
    return new_data
#加载数据
detail = pd.read_excel('./meal_order_detail.xlsx')
res = deci_sca(detail[['amounts', 'counts']])
print(res)

补充:pandas数据处理基础之标准化与标签数值化

fit(): Method calculates the parameters μ and σ and saves them as internal objects.

解释:简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。

transform(): Method using these calculated parameters apply the transformation to a particular dataset.

解释:在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。

fit_transform(): joins the fit() and transform() method for transformation of dataset.

解释:fit_transform是fit和transform的组合,既包括了训练又包含了转换。 transform()和fit_transform()二者的功能都是对数据进行某种统一处理(比如标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等)

fit_transform(trainData)对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该trainData进行转换transform,从而实现数据的标准化、归一化等等。

Note:

必须先用fit_transform(trainData),之后再transform(testData)

如果直接transform(testData),程序会报错

如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),虽然也能归一化,但是两个结果不是在同一个“标准”下的,具有明显差异。(一定要避免这种情况)

注意:StandardScaler().fit_transform(x,fit_params),fit_params决定标准化的标签数据,就是每个标准化的标杆数据,此参数不同,则每次标准化的过程则不同。

from sklearn import preprocessing
# 获取数据
cols = ['OverallQual','GrLivArea', 'GarageCars','TotalBsmtSF', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt'] ##选取列
x = data_train[cols].values
y = data_train['SalePrice'].values  
x_scaled = preprocessing.StandardScaler().fit_transform(x) ##进行归一化
y_scaled = preprocessing.StandardScaler().fit_transform(y.reshape(-1,1))##先将y转换成一列,再进行归一

还有以下形式,和上面的标准化原理一致,都是先fit,再transform。

由ss决定标准化进程的独特性

# 先将数据标准化
from sklearn.preprocessing import StandardScaler
ss = StandardScaler() ##
#用测试集训练并标准化
ss.fit(missing_age_X_train)##首先fit
missing_age_X_train = ss.transform(missing_age_X_train) #进行transform
missing_age_X_test = ss.transform(missing_age_X_test)

标签数值化

1.当某列数据不是数值型数据时,将难以标准化,此时要将数据转化成数据型形式。

数据处理前数据显示:

使用pandas模块实现数据的标准化操作

经过标签化数据处理

from sklearn import preprocessing
f_names = ['CentralAir', 'Neighborhood'] ##需要处理的数据标签 
for x in f_names:
    label = preprocessing.LabelEncoder()
    data_train[x] = label.fit_transform(data_train[x]) ##数据标准化

处理之后变成:

使用pandas模块实现数据的标准化操作

2.当某列有对应的标签值时,即某个量对应相应确定的标签时,例如oldtown就对应1,sawyer就对应2,分类的str转换为序列类这时使用如下:

数据处理之前

使用pandas模块实现数据的标准化操作

利用转换:

title_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5}#将标签对应数值
train_df['Title'] = train_df['Title'].map(title_mapping)#处理数据
train_df['Title'] = train_df['Title'].fillna(0)##将其余标签填充为0值

处理过后:

使用pandas模块实现数据的标准化操作

3.多个数据标签需要分列采用one_hot形式时,处理之前

使用pandas模块实现数据的标准化操作

处理之后

train_test.loc[train_test["Age"].isnull() ,"age_nan"] = 1 ##将标签转换成1
train_test.loc[train_test["Age"].notnull() ,"age_nan"] = 0##将此标签成为0
train_test = pd.get_dummies(train_test,columns=['age_nan']) ##columns决定哪几行分列处理,prefix参数是每列前缀

使用pandas模块实现数据的标准化操作

one_hot 形式转变成功。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用minidom读写xml的方法
Jun 03 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
python实现手机通讯录搜索功能
Feb 22 Python
python 输出上个月的月末日期实例
Apr 11 Python
Python运行不显示DOS窗口的解决方法
Oct 22 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
如何基于Python批量下载音乐
Nov 11 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
python单元测试框架pytest的使用示例
Oct 07 Python
pandas 实现将NaN转换为None
May 14 #Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
Python爬虫:从m3u8文件里提取小视频的正确操作
MATLAB 全景图切割及盒图显示的实现步骤
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 #Python
PyQt5爬取12306车票信息程序的实现
python flask框架快速入门
You might like
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
python安装与使用redis的方法
2016/04/19 Python
理论讲解python多进程并发编程
2018/02/09 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
Django单元测试工具test client使用详解
2019/08/02 Python
python Pillow图像处理方法汇总
2019/10/16 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
入党积极分子思想汇报范文
2014/01/05 职场文书
主管会计岗位责任制
2014/02/10 职场文书
产品委托授权书范本
2014/09/16 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
个人自查自纠材料
2014/10/14 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
趣味运动会标语口号
2015/12/26 职场文书
导游词之广西漓江
2019/11/02 职场文书
Python绘制分类图的方法
2021/04/20 Python
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
ES6 解构赋值的原理及运用
2021/05/25 Javascript