pandas - 如何快速规范化熊猫数据框中的数据?
问题描述
我有一个熊猫数据框,如下所示。
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 中有更简单的方法可以做到这一点(鉴于我不需要规范化的列名,然后直接进行规范化)。
如果需要,我很乐意提供更多详细信息。
解决方案
将DataFrame.select_dtypes
for 用于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
推荐阅读
- macos - 如何将静态库嵌入到共享库中 - 在 OSX 上
- c# - 替换多个 SSIS 包中的脚本任务
- r - 如果以逗号分隔,则反转名称
- elixir - 如何使用 Elixir 的 doctest 测试协议实现?
- javascript - Array.map :获取要在返回函数中使用的每个元素的索引
- flutter - 如果用户在颤动中点击它,如何仅从堆栈中删除顶部小部件?
- ios - 无法从单独的 pod iOS 获取图像
- mysql - 为什么我的 WHERE 和 COUNT 子句不起作用?
- reactjs - 嵌套选项卡导航器在抽屉导航器中不起作用
- xslt - 删除不相同的重复节点(在标签不存在时考虑默认值)