如何在Pandas DataFrame中标准化数据?

如何在Pandas DataFrame中标准化数据?

在广阔的数据探索领域中,标准化的艺术,有时被称为特征缩放,作为准备步骤发挥着重要作用。它涉及将不同的数据元素转化为一个协调的范围或尺度,使得公正的分析和比较成为可能。Python的卓越库Pandas无缝地实现了这个任务。

将Pandas DataFrame视为二维、不断变化、异质的表格数据数组,精心设计以便流畅地操作数据。凭借直观的语法和动态功能,它已成为全球数据爱好者的首选结构。让我们深入探讨一下我们可以用来标准化此类DataFrame中的数据组件的方法。

算法

在本文中,我们将重点关注以下用于在Pandas DataFrame中进行数据标准化的方法:

a. 拥抱sklearn.preprocessing.StandardScaler的强大功能

b. 发挥pandas.DataFrame.apply方法与z-score的潜力

c. 利用pandas.DataFrame.subtract和pandas.DataFrame.divide方法的多功能性

d. 探索pandas.DataFrame.sub和pandas.DataFrame.div方法的深度

语法

在本文中,我们将依赖于Pandas库,它赋予我们一系列操作DataFrames的函数。下面是每种方法的简洁概述:

StandardScaler

scaler = StandardScaler()

StandardScalersklearn.preprocessing模块中的一个类,用于通过去除平均值并缩放为单位方差来标准化特征。首先,创建一个StandardScaler类的实例。

fit_transform()

scaler.fit_transform(X)

fit_transform()方法用于标准化输入数据X

应用

df.apply(func, axis=0)

apply() 是一个 Pandas 数据框方法,用于沿指定轴(行或列)应用函数。func 是要应用的函数,axis 是应用函数的轴(列为0,行为1)。

df.subtract(df.mean()).divide(df.std())

该语法通过减去每一列的均值(df.mean())并除以标准差(df.std())来标准化Pandas数据框。

sub and div

df.sub(df.mean()).div(df.std())

以下代码片段演示了使用不同方法对Pandas DataFrame执行逐元素减法和除法以标准化的不同方法。每种方法都使用sub()和div()方法的变体,而不是subtract()和divide()。

这些操作通常用于对DataFrame中的每一列减去平均值并除以标准差。

示例

使用sklearn.preprocessing.StandardScaler

在以下示例中,我们将:

1. 导入必要的库:sklearn中的StandardScaler,pandas和numpy

2. 创建一个名为’df’的示例DataFrame,其中包含一个名为’A’的单列,其中包含值1到5。

3. 实例化一个StandardScaler对象’scaler’,并使用fit_transform()方法对列’A’进行归一化。

4. 打印更新后的DataFrame,其中包含列’A’中的标准化值。

from sklearn.preprocessing import StandardScaler
import pandas as pd
import numpy as np

# Construct a sample DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5]
})

# Initialize a scaler
scaler = StandardScaler()

# Fit and transform the data
df['A'] = scaler.fit_transform(np.array(df['A']).reshape(-1, 1))

print(df)

输出

A
0 -1.414214
1 -0.707107
2  0.000000
3  0.707107
4  1.414214

使用pandas.DataFrame.apply方法进行z-score标准化

在下面的示例中,我们将:

1. 导入pandas库并创建一个带有单列’A’的示例DataFrame ‘df’,其中包含值1到5。

2. 定义一个名为’standardize’的函数,该函数接受一个列作为参数,并通过减去平均值并除以标准差来返回标准化的值。

3. 使用apply()方法将’standardize’函数应用于列’A’。

4. 在列’A’中打印具有标准化值的更新后的DataFrame。

import pandas as pd

# Construct a sample DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5]
})

def standardize(column):
    return (column - column.mean()) / column.std()

# Standardize column 'A' using the apply function
df['A'] = df['A'].apply(standardize)

print(df)

输出

A
0 -1.414214
1 -0.707107
2  0.000000
3  0.707107
4  1.414214

使用pandas.DataFrame.subtract和pandas.DataFrame.divide方法

在下面的示例中,我们将:

1. 导入pandas库并创建一个名为’df’的示例DataFrame,其中包含一个名为’A’的单列,其中包含1到5的值。

2. 使用mean()和std()方法计算列’A’的均值和标准差。

3. 使用subtract()和divide()方法通过减去均值和除以标准差来标准化列’A’。

4. 打印更新后的DataFrame,其中列’A’中包含标准化的值。

import pandas as pd

# Construct a sample DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5]
})

# Standardize column 'A' using subtract and divide methods
df['A'] = df['A'].subtract(df['A'].mean()).divide(df['A'].std())

print(df)

输出

A
0 -1.414214
1 -0.707107
2  0.000000
3  0.707107
4  1.414214

使用pandas.DataFrame.sub和pandas.DataFrame.div方法

在下面的例子中,我们将要做以下操作:

1. 导入pandas库并创建一个示例DataFrame ‘df’,其中有一个包含从1到5的值的列’A’。

2. 使用mean()方法和std()方法计算列’A’的平均值和标准差。

3. 使用sub()方法和div()方法将列’A’标准化,即减去平均值并除以标准差。

4. 打印更新后的DataFrame,其中包含在列’A’中进行了标准化的值。

import pandas as pd

# Construct a sample DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5]
})

# Standardize column 'A' using sub and div methods
df['A'] = df['A'].sub(df['A'].mean()).div(df['A'].std())

print(df)

输出

A
0 -1.264911
1 -0.632456
2  0.000000
3  0.632456
4  1.264911

结论

综上所述,对于各种机器学习算法来说,数据的标准化在预处理中起着关键作用,因为它们对输入特征的尺度非常敏感。选择适当的标准化方法取决于具体的算法和数据的性质。当数据遵循正态分布时,Z-score标准化是一个合适的选择,而对于未知或非正态分布的数据,最小-最大归一化则是一个合适的选择。然而,在进行与数据相关的工作时,需要对数据本身有深入的了解,才能决定采用哪种缩放方法。了解这些方法的基本原理,并掌握在Python中的实现方法,为进一步探索数据的启发之旅打下坚实的基础。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程