我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

如下所示:

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.当某列数据不是数值型数据时,将难以标准化,此时要将数据转化成数据型形式。

数据处理前数据显示:

经过标签化数据处理


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]) ##数据标准化

处理之后变成:

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

数据处理之前

利用转换:


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值

处理过后:

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

处理之后


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参数是每列前缀

one_hot 形式转变成功。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用pandas模块怎么实现数据标准化

本篇文章给大家分享的是有关使用pandas模块怎么实现数据标准化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如下所示:3σ 原则(u-3*σ ,u+3*σ )离差标准化(x-
2023-06-15

利用PHP trait DTO实现数据传输的标准化与规范化

在PHP开发中,数据传输对象(Data Transfer Object,简称DTO)是一种常见的设计模式,用于将数据从一个层面传递到另一个层面。DTO主要用于封装数据并提供数据传输的标准化与规范化。在本文中,我们将介绍如何利用PHP tra
2023-10-21

C#中使用Spire.XLS来操作Excel数据的实现

本文主要介绍了C#中使用Spire.XLS来操作Excel数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-14

使用Spring Boot实现操作数据库的接口的步骤

本篇内容主要讲解“使用Spring Boot实现操作数据库的接口的步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“使用Spring Boot实现操作数据库的接口的步骤”吧!一、Spring B
2023-06-20

C#使用泛型方法实现操作不同数据类型的数组

泛型方法是一种强大的机制,允许C#操作不同数据类型的数组。通过使用类型参数,泛型方法变得可重用、通用和类型安全。使用泛型方法,我们可以实现各种操作,例如数组排序、搜索和转换。遵循创建泛型方法的步骤,包括使用类型参数、访问元素类型和使用类型约束,我们可以简化代码并减少错误。通过泛型方法,我们可以创建适用于广泛应用程序的通用代码。
C#使用泛型方法实现操作不同数据类型的数组
2024-04-02

如何使用MongoDB和SQL语句实现数据的增删改查操作?

如何使用MongoDB和SQL语句实现数据的增删改查操作?数据库是存储、管理和检索数据的工具,而数据的增删改查操作是数据库的核心功能。在数据库领域中,常见的两种数据库系统是关系型数据库(SQL)和非关系型数据库(NoSQL)。关系型数据库使
如何使用MongoDB和SQL语句实现数据的增删改查操作?
2023-12-17

如何使用PHP7的特性实现更加灵活的数据操作和处理?

如何使用PHP7的特性实现更加灵活的数据操作和处理?随着PHP7的发布,PHP编程语言又迈入了一个新的阶段。PHP7带来了许多令人兴奋的特性,特别是在数据操作和处理方面,提供了更多的灵活性和效率。本文将介绍如何利用PHP7的特性来实现更加灵
2023-10-22

如何使用python实现时间序列预测中的数据滑窗操作

这篇文章主要为大家展示了“如何使用python实现时间序列预测中的数据滑窗操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用python实现时间序列预测中的数据滑窗操作”这篇文章吧。撰写
2023-06-29

asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作

这篇文章主要介绍“asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作”
2023-06-30

模块化数据中心的优势:利用冷冻水系统实现最佳冷却效果

数据中心冷却是基础,但我们必须考虑可持续性要求和不断变化的客户期望。随着日常计算的增加,数据中心环境显然不会保持统一。
数据中心2024-11-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录