规范化pandas数据框架的列

2020-12-04 16:58:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在pandas中有一个数据框,其中每个列都有不同的值范围。例如:

数据框:

A     B   C
1000  10  0.5
765   5   0.35
800   7   0.09

知道如何规范化此数据帧中每个值介于0和1之间的列吗?

我想要的输出是:

A     B    C
1     1    1
0.765 0.5  0.7
0.8   0.7  0.18(which is 0.09/0.5)
3条回答
网友
1楼 ·

基于这篇文章:https://stats.stackexchange.com/questions/70801/how-to-normalize-data-to-0-1-range

您可以执行以下操作:

def normalize(df):
    result = df.copy()
    for feature_name in df.columns:
        max_value = df[feature_name].max()
        min_value = df[feature_name].min()
        result[feature_name] = (df[feature_name] - min_value) / (max_value - min_value)
    return result

你不需要一直担心你的价值观是消极的还是积极的。值应该很好地分布在0和1之间。

网友
2楼 ·

您可以使用sklearn包及其相关的预处理实用程序来规范化数据。

import pandas as pd
from sklearn import preprocessing

x = df.values #returns a numpy array
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
df = pd.DataFrame(x_scaled)

有关更多信息,请参阅scikit学习documentation关于预处理数据:将功能缩放到一个范围。

网友
3楼 ·

一个简单的方法是使用熊猫(这里我想使用平均标准化)

normalized_df=(df-df.mean())/df.std()

要使用最小最大规格化,请执行以下操作:

normalized_df=(df-df.min())/(df.max()-df.min())

相关问题