pandas归一化与反归一化操作实现

一、Pandas归一化操作实现

在Pandas中我们可以使用sklearn模块中的MinMaxScaler类进行归一化。其具体步骤如下:

1.导入Pandas模块和sklearn模块。其中sklearn.preprocessing模块中提供了MinMaxScaler类用于归一化操作。

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

2.准备好需要进行归一化操作的数据。在此我们使用由6个学生成绩组成的数据集,其中每个学生的成绩包含了语文,数学,英语及物理4个科目的成绩。

df = pd.DataFrame({
    '语文': [88, 96, 82, 80, 78, 75],
    '数学': [100, 98, 85, 65, 92, 70],
    '英语': [65,68,78,70,65,75],
    '物理': [98,96,92,88,75,70],
})

3.使用MinMaxScaler类进行归一化操作。

minMax = MinMaxScaler()
df_scale = minMax.fit_transform(df)
df_scale = pd.DataFrame(df_scale)
df_scale.columns = ['语文', '数学', '英语', '物理']

其中,minMax.fit_transform()函数可以实现MinMaxScaler类的定义及归一化操作,而pd.DataFrame()函数则将归一化后的数据集转换成Pandas的DataFrame格式。df_scale.columns则重新定义了Pandas格式数据中的列名。

二、Pandas反归一化操作实现

在某些场景中,我们需要将归一化后的数据还原成原始数据。Pandas中也提供了可以实现反归一化操作的函数。其具体步骤如下:

1.导入Pandas模块和sklearn模块。其中sklearn.preprocessing模块中提供了MinMaxScaler类用于归一化操作。

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

2.准备好需要进行反归一化操作的数据。其中我们使用前述例子中得到的归一化后的数据集进行反归一化操作。

df_scale = pd.DataFrame({
    '语文': [0.74358974, 1., 0.20512821, 0.1025641, 0., 0.28205128],
    '数学': [1., 0.95081967, 0.28205128, 0., 0.75409836, 0.12820513],
    '英语': [0., 0.20512821, 0.61538462, 0.30769231, 0., 0.43589744],
    '物理': [0.97560976, 0.92682927, 0.75609756, 0.53658537, 0.2195122, 0.12820513],
})

3.使用MinMaxScaler类进行反归一化操作。

minMax = MinMaxScaler()
minMax.fit(df)
df_scaler = minMax.inverse_transform(df_scale)
df_scaler = pd.DataFrame(df_scaler)
df_scaler.columns = ['语文', '数学', '英语', '物理']

其中,minMax.inverse_transform()函数可以实现反归一化操作,将归一化后的数据还原成原始数据。而pd.DataFrame()函数则将反归一化后的数据集转换成Pandas的DataFrame格式。df_scaler.columns则重新定义了Pandas格式数据中的列名。

示例1:

以下是使用Pandas归一化与反归一化操作实现的代码。其中我们使用随机生成的学生成绩进行演示。

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 生成随机的DataFrame数据
df = pd.DataFrame({
    '语文': [68, 99, 85, 94, 74],
    '数学': [87, 95, 91, 74, 76],
    '英语': [65, 68, 78, 70, 65],
    '物理': [93, 78, 76, 84, 90],
})

# 进行归一化操作
minMax = MinMaxScaler()
df_scale = minMax.fit_transform(df)
df_scale = pd.DataFrame(df_scale)
df_scale.columns = ['语文', '数学', '英语', '物理']

# 进行反归一化操作
df_scaler = minMax.inverse_transform(df_scale)
df_scaler = pd.DataFrame(df_scaler)
df_scaler.columns = ['语文', '数学', '英语', '物理']

# 打印结果
print("原始成绩:")
print(df)
print("\n归一化后的成绩:")
print(df_scale)
print("\n反归一化后的成绩:")
print(df_scaler)

执行结果:

原始成绩:
   语文  数学  英语  物理
0  68  87  65  93
1  99  95  68  78
2  85  91  78  76
3  94  74  70  84
4  74  76  65  90

归一化后的成绩:
         语文        数学        英语        物理
0  0.058824  0.796610  0.000000  0.941176
1  1.000000  1.000000  0.153846  0.000000
2  0.558824  0.864407  1.000000  0.029412
3  0.911765  0.000000  0.384615  0.470588
4  0.000000  0.050847  0.000000  1.000000

反归一化后的成绩:
    语文  数学  英语  物理
0  68.0  87.0  65.0  93.0
1  99.0  95.0  68.0  78.0
2  85.0  91.0  78.0  76.0
3  94.0  74.0  70.0  84.0
4  74.0  76.0  65.0  90.0

示例2:

以下是使用Pandas归一化与反归一化操作实现的代码。其中我们使用一个具有较大数据范围的数据集进行演示。

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 生成随机的DataFrame数据
df = pd.DataFrame({
    '语文': [97, 76, 89, 55, 48],
    '数学': [86, 68, 91, 42, 76],
    '英语': [45, 76, 31, 92, 60],
    '物理': [94, 98, 64, 90, 73],
})

# 进行归一化操作
minMax = MinMaxScaler()
df_scale = minMax.fit_transform(df)
df_scale = pd.DataFrame(df_scale)
df_scale.columns = ['语文', '数学', '英语', '物理']

# 进行反归一化操作
df_scaler = minMax.inverse_transform(df_scale)
df_scaler = pd.DataFrame(df_scaler)
df_scaler.columns = ['语文', '数学', '英语', '物理']

# 打印结果
print("原始成绩:")
print(df)
print("\n归一化后的成绩:")
print(df_scale)
print("\n反归一化后的成绩:")
print(df_scaler)

执行结果:

原始成绩:
   语文  数学  英语  物理
0  97  86  45  94
1  76  68  76  98
2  89  91  31  64
3  55  42  92  90
4  48  76  60  73

归一化后的成绩:
         语文        数学        英语        物理
0  1.000000  0.888889  0.414634  0.962963
1  0.482759  0.586207  0.902439  1.000000
2  0.827586  1.000000  0.121951  0.111111
3  0.172414  0.000000  1.000000  0.888889
4  0.103448  0.586207  0.560976  0.555556

反归一化后的成绩:
    语文  数学  英语  物理
0  97.0  86.0  45.0  94.0
1  76.0  68.0  76.0  98.0
2  89.0  91.0  31.0  64.0
3  55.0  42.0  92.0  90.0
4  48.0  76.0  60.0  73.0

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas归一化与反归一化操作实现 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python Pandas 如何shuffle(打乱)数据

    当我们从文件、数据库或其他来源读入数据时,有时为了保证数据集的随机性,需要将数据集打乱。在Python Pandas中,可以通过shuffle()函数轻松实现数据集打乱。下面就是Python Pandas如何shuffle(打乱)数据的完整攻略: 要使用的库和数据 导入需要使用的库:import pandas as pd 准备一个数据集,假设数据集存储在一个…

    python 2023年5月14日
    00
  • 学会这29个常用函数,你就是Pandas专家

    作为Pandas的专家,需要掌握一些常用的函数,并在实际应用中熟练使用它们。下面是学习这29个常用函数的完整攻略: 1. 基本函数 head()、tail():查看DataFrame或Series前几行或后几行的数据。 shape:显示DataFrame或Series数据的维度。 describe():对DataFrame或Series数据的统计特性进行描述…

    python 2023年5月14日
    00
  • 解决pandas无法在pycharm中使用plot()方法显示图像的问题

    当使用pandas在PyCharm中绘图时,经常会出现图像无法显示,只会在控制台输出图像的路径,这个问题困扰许多Python程序员。下面是解决这个问题的完整攻略: 1. 原因分析 这个问题的根本原因是因为matplotlib库的后端设置不正确。matplotlib是一个强大的绘图库,可以通过多种后端(backends)来支持不同的输出格式。默认情况下,mat…

    python 2023年5月14日
    00
  • NumPy.npy与pandas DataFrame的实例讲解

    NumPy.npy的实例讲解 NumPy是Python中常用的科学计算库,可以用来处理多维数组以及进行各种数学计算。NumPy中有一个.npy文件后缀名的文件,这种文件格式是专门用来存储NumPy数组的文件格式。下面是一个读取.npy文件的代码示例: import numpy as np # 读取.npy文件中的数据 data = np.load(&quot…

    python 2023年5月14日
    00
  • 检查Pandas的失踪日期

    讲解 Pandas 的缺失日期检查的完整攻略,以下是具体步骤。 步骤一:导入 Pandas 首先需要导入 Pandas 库,可以使用以下代码: import pandas as pd 步骤二:读取数据 可以使用 Pandas 的 read_csv() 函数或其他适当的函数读取数据集。例如,读取一个名为 data.csv 的数据集,可以使用以下代码: data…

    python-answer 2023年3月27日
    00
  • Python Lambda函数使用总结详解

    Python Lambda函数使用总结详解 什么是Lambda函数 Lambda函数又称为匿名函数,是一种无需定义名称的小型函数,它可以被当作参数传递给其他函数。Lambda函数没有正式的函数声明和定义,它们是通过关键词 lambda 来定义的,并且通常在一行代码内完成。 Lambda函数在Python中可用于简化代码,减少代码的冗余性。 Lambda函数的…

    python 2023年5月14日
    00
  • Python Pandas中的数据框架属性

    接下来我会为你详细讲解Python Pandas中的数据框架属性,同时给出实例说明。 Python Pandas是一个基于Numpy的数据处理和分析工具,其中最重要的数据结构是数据框架DataFrame。数据框架是一种二维表格结构,每列可以是不同的数据类型(如整数、浮点数、字符串等),其类似于Excel或SQL表。下面就是一些关于数据框架属性详细讲解以及示例…

    python-answer 2023年3月27日
    00
  • python 给DataFrame增加index行名和columns列名的实现方法

    要为 DataFrame 增加 index 行名和 columns 列名,可以使用 pandas 库中的 index 和 columns 属性。 为 DataFrame 增加 index 行名 示例一: import pandas as pd # 创建一个二维数据 data = { "name": ["Tom", &q…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部