如何扩展Pandas DataFrame的列

如何扩展Pandas DataFrame的列

当一个数据集的不同列的值有极大的不同尺度时,分析趋势和模式以及比较特征或列就变得很困难。因此,在所有列的尺度有明显差异的情况下,需要以这样的方式进行修改,使所有这些值落入相同的尺度。这个过程被称为缩放。

有两种最常见的技术,即如何缩放Pandas数据框架的列–最小-最大归一化和标准化。这两种技术在下面的内容中已经讨论过了。

使用中的数据集: Iris

如何扩展Pandas DataFrame的列?

Min-Max Normalization

这里,所有的值都在[0,1]的范围内进行缩放,其中0是最小值,1是最大值。最小-最大归一化的公式是–

如何扩展Pandas DataFrame的列?

方法1:使用Pandas和Numpy

第一种方法是分别计算公式中给出的所需数值,然后将其应用于数据集。

示例:

import seaborn as sns
import pandas as pd
import numpy as np
 
data = sns.load_dataset('iris')
print('Original Dataset')
data.head()
 
# Min-Max Normalization
df = data.drop('species', axis=1)
df_norm = (df-df.min())/(df.max()-df.min())
df_norm = pd.concat((df_norm, data.species), 1)
 
print("Scaled Dataset Using Pandas")
df_norm.head()
Python

输出:

如何扩展Pandas DataFrame的列?

方法2:使用sklearn的MinMaxScaler

这是一个直接的方法,可以做到这一点。它只需要导入sklearn模块。

示例:

import seaborn as sns
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
 
data = sns.load_dataset('iris')
print('Original Dataset')
data.head()
 
scaler = MinMaxScaler()
 
df_scaled = scaler.fit_transform(df.to_numpy())
df_scaled = pd.DataFrame(df_scaled, columns=[
  'sepal_length', 'sepal_width', 'petal_length', 'petal_width'])
 
print("Scaled Dataset Using MinMaxScaler")
df_scaled.head()
Python

输出:

如何扩展Pandas DataFrame的列?

Standardization

标准化没有任何固定的最小或最大值。在这里,所有列的值都以这样的方式进行缩放,即它们都有一个等于0的平均值和等于1的标准差。这种缩放技术对异常值很有效。因此,如果数据集中存在异常值,这种技术是首选。

示例:

import pandas as pd
from sklearn.preprocessing import StandardScaler
import seaborn as sns
 
data = sns.load_dataset('iris')
print('Original Dataset')
data.head()
 
std_scaler = StandardScaler()
 
df_scaled = std_scaler.fit_transform(df.to_numpy())
df_scaled = pd.DataFrame(df_scaled, columns=[
  'sepal_length','sepal_width','petal_length','petal_width'])
 
print("Scaled Dataset Using StandardScaler")
df_scaled.head()
Python

输出 :

如何扩展Pandas DataFrame的列?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册