在Pandas中规范化一个列
在这篇文章中,我们将学习如何在Pandas中规范化一列。让我们先讨论一些概念。
- Pandas。Pandas是一个建立在NumPy库之上的开源库。它是一个Python包,提供各种数据结构和操作,用于操作数字数据和统计。它主要因导入和分析数据更容易而流行。Pandas速度快,对用户来说,它是高性能和高生产力的。
- 数据归一化。数据归一化也可能是机器学习中的一个典型做法,它包括将数字列转换为标准的刻度。在机器学习中,一些特征值与其他特征值有多次差异。具有较高数值的特征将在学习过程中占据主导地位。
需要的步骤
在这里,我们将应用一些技术来规范化列的值,并在例子的帮助下讨论这些。为此,让我们了解一下用Pandas进行规范化的步骤。
1.输入库(Pandas)。
2.导入/加载/创建数据。
3.使用该技术对该列进行规范化处理。
示例:
在这里,我们通过一些随机值创建数据,并在一列上应用一些规范化技术。
# importing packages
import pandas as pd
# create data
df = pd.DataFrame({'Column 1':[200,-4,90,13.9,5,
-90,20,300.7,30,-200,400],
'Column 2':[20,30,23,45,19,38,
25,45,34,37,12]})
# view data
display(df)
输出:
数据集由两列组成,其中第1列没有被规范化,但第2列被规范化。因此,我们在第1列中应用规范化技术。
df['Column 1'].plot(kind = 'bar')
输出:
使用 最大的绝对比例
最大绝对缩放法通过将每个观察值除以其最大绝对值,在-1和1之间重新缩放每个特征。我们可以在Pandas中使用.max()和.abs()方法来应用最大绝对缩放,如下所示。
# copy the data
df_max_scaled = df.copy()
# apply normalization techniques on Column 1
column = 'Column 1'
df_max_scaled[column] = df_max_scaled[column] /df_max_scaled[column].abs().max()
# view normalized data
display(df_max_scaled)
输出:
使用最小-最大特征缩放
最小-最大方法(通常称为归一化)通过减去特征的最小值,然后除以该范围,将特征重新划分为[0,1]的硬性范围。我们可以在Pandas中使用.min()和.max()方法来应用最小-最大比例。
# copy the data
df_min_max_scaled = df.copy()
# apply normalization techniques by Column 1
column = 'Column 1'
df_min_max_scaled[column] = (df_min_max_scaled[column] - df_min_max_scaled[column].min()) / (df_min_max_scaled[column].max() - df_min_max_scaled[column].min())
# view normalized data
display(df_min_max_scaled)
输出 :
让我们用这个情节检查一下。
df_min_max_scaled['Column 1'].plot(kind = 'bar')
使用Z-score方法
z-score方法(通常称为标准化)将信息转化为平均值为0、典型偏差为1的分布。每个标准化值的计算方法是减去相应特征的平均值,然后除以质量偏差。
# copy the data
df_z_scaled = df.copy()
# apply normalization technique to Column 1
column = 'Column 1'
df_z_scaled[column] = (df_z_scaled[column] - df_z_scaled[column].mean()) / df_z_scaled[column].std()
# view normalized data
display(df_z_scaled)
输出 :
让我们用这个情节检查一下。
df_z_scaled['Column 1'].plot(kind = 'bar')
使用sklearn
通过将每个特征缩放到一个给定的范围来转换特征。这个估计器对每个特征进行单独的缩放和翻译,使其在训练集上处于给定的范围内,例如,在0和1之间。这里,我们将使用minmax缩放器。
from sklearn.preprocessing import MinMaxScaler
import numpy as np
# copy the data
df_sklearn = df.copy()
# apply normalization techniques
column = 'Column 1'
df_sklearn[column] = MinMaxScaler().fit_transform(np.array(df_sklearn[column]).reshape(-1,1))
# view normalized data
display(df_sklearn)
输出 :
让我们用这个情节检查一下。
df_sklearn['Column 1'].plot(kind = 'bar')