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

yizhihongxing

一、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日

相关文章

  • 如何在Pandas中计算滚动中位数

    计算滚动中位数(rolling median)可以通过Pandas的rolling函数结合median函数轻松实现。具体步骤如下: 确定需要计算滚动中位数的数据。 使用Pandas的rolling函数指定窗口大小,得到数据的滚动窗口。 对滚动窗口进行操作,并使用median函数计算中位数。 获得所有中位数并返回。 下面通过一个实例来说明如何在Pandas中计…

    python-answer 2023年3月27日
    00
  • 如何将Pandas数据帧转换为列表

    将Pandas数据帧(DataFrame)转换为列表(List)是常见的数据处理操作。下面是转换的完整攻略: 导入必要的库 需要导入Pandas库,以及Python内置的列表(List)库。 import pandas as pd 创建一个Pandas数据帧 为了演示转换过程,首先需要创建一个Pandas数据帧。这里以一个包含学生姓名、学号、语文成绩、数学成…

    python-answer 2023年3月27日
    00
  • Python通过调用mysql存储过程实现更新数据功能示例

    在这里,我将为您讲解Python通过调用MySQL存储过程实现更新数据的完整攻略。下面是详细的步骤: 1. 创建MySQL存储过程 首先,我们需要在数据库中创建一个存储过程来更新数据。以下是更新数据的示例存储过程: CREATE PROCEDURE update_data(IN id INT, IN name VARCHAR(50), IN email VA…

    python 2023年6月13日
    00
  • Pandas – 移除列名中的特殊字符

    在 Pandas 中,可以使用 str 方法对字符串进行操作。对于列名中包含的特殊字符,可以使用 str.replace() 方法进行替换。 举个例子,在下面的示例数据中,列名中包含了圆括号和空格: import pandas as pd data = {"column 1": [1, 2, 3], "column (2)&qu…

    python-answer 2023年3月27日
    00
  • Python 将嵌套的字典列表转换成Pandas数据框架

    将嵌套的字典列表转换成Pandas数据框架是Pandas中常用的数据预处理技巧之一。下面是详细的攻略: 准备数据 先准备一个嵌套的字典列表,例如: data = [ { ‘name’: ‘Alice’, ‘age’: 25, ‘skills’: [‘Python’, ‘Java’, ‘SQL’], ‘contact’: { ’email’: ‘alice@e…

    python-answer 2023年3月27日
    00
  • pandas删除部分数据后重新生成索引的实现

    要实现pandas删除部分数据后重新生成索引,可以采用reset_index函数或者直接使用drop函数。 使用reset_index函数重新生成索引 在使用reset_index函数时,需要传递drop参数。其中,drop为True表示删除原来的索引,False表示不删除原来的索引,保留原来的索引作为一列。 import pandas as pd # 原始…

    python 2023年5月14日
    00
  • Python提高运行速度工具之Pandarallel的使用教程

    下面是详细的“Python提高运行速度工具之Pandarallel的使用教程”攻略。 1. 什么是Pandarallel Pandarallel是一个Python库,用于并行运行Pandas中的apply、map和applymap函数,使得代码可以更快地运行。Pandarallel采用了Dask并行框架,可用于本地和远程计算。 2. Pandarallel的…

    python 2023年5月14日
    00
  • python把数据框写入MySQL的方法

    Python 具有丰富的数据库操作模块,例如 SQLite、MySQL、PostgreSQL 等。在实际项目中,通常需要将数据以数据框的形式导入数据库。接下来,将使用 Python 将数据框写入 MySQL 的方法,详细说明数据框导入 MySQL 的步骤。 准备工作 在使用 Python 之前,需要安装 mysql-connector-python 模块,此…

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