首页 > 解决方案 > 如何快速规范化熊猫数据框中的数据?

问题描述

我有一个熊猫数据框,如下所示。

import pandas as pd
df = pd.DataFrame({
               'A':[1,2,3],
               'B':[100,300,500],
               'C':list('abc')
             })
print(df)
   A    B  C
0  1  100  a
1  2  300  b
2  3  500  c

我想规范化整个数据框。由于列C不是编号列,我所做的如下(即C首先删除,规范化数据并添加列)。

df_new = df.drop('concept', axis=1)
df_concept = df[['concept']]
from sklearn import preprocessing
x = df_new.values #returns a numpy array
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
df_new = pd.DataFrame(x_scaled)
df_new['concept'] = df_concept

但是,我确信在 pandas 中有更简单的方法可以做到这一点(鉴于我不需要规范化的列名,然后直接进行规范化)。

如果需要,我很乐意提供更多详细信息。

标签: pandas

解决方案


DataFrame.select_dtypesfor 用于DataFrame数值列,然后用除以最小值和最大值进行归一化,然后仅分配归一化列:

df1 = df.select_dtypes(np.number)
df[df1.columns]=(df1-df1.min())/(df1.max()-df1.min())
print (df)
     A    B  C
0  0.0  0.0  a
1  0.5  0.5  b
2  1.0  1.0  c

推荐阅读