相关疑难解决方法(0)

用sklearn扩展的pandas数据帧列

我有一个带有混合类型列的pandas数据帧,我想将sklearn的min_max_scaler应用于某些列.理想情况下,我想在适当的位置进行这些转换,但还没有想出办法.我编写了以下代码:

import pandas as pd
import numpy as np
from sklearn import preprocessing

scaler = preprocessing.MinMaxScaler()

dfTest = pd.DataFrame({'A':[14.00,90.20,90.95,96.27,91.21],'B':[103.02,107.26,110.35,114.23,114.68], 'C':['big','small','big','small','small']})
min_max_scaler = preprocessing.MinMaxScaler()

def scaleColumns(df, cols_to_scale):
    for col in cols_to_scale:
        df[col] = pd.DataFrame(min_max_scaler.fit_transform(pd.DataFrame(dfTest[col])),columns=[col])
    return df

dfTest

    A   B   C
0    14.00   103.02  big
1    90.20   107.26  small
2    90.95   110.35  big
3    96.27   114.23  small
4    91.21   114.68  small

scaled_df = scaleColumns(dfTest,['A','B'])
scaled_df

A   B   C
0    0.000000    0.000000    big
1    0.926219    0.363636    small
2    0.935335    0.628645    big
3    1.000000 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas scikit-learn

98
推荐指数
7
解决办法
11万
查看次数

应用 sklearn.compose.ColumnTransformer 后保留列顺序

我正在使用库中的模块Pipeline对我的数据集执行特征工程。ColumnTransformersklearn

数据集最初看起来像这样:

日期 日期块编号 店铺ID 商品编号 商品价格
2013年1月2日 0 59 22154 999.00
2013年1月3日 0 25 2552 899.00
2013年1月5日 0 25 2552 899.00
2013年1月6日 0 25 2554 1709.05
2013年1月15日 0 25 2555 1099.00
$> data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2935849 entries, 0 to 2935848
Data columns (total 6 columns):
 #   Column          Dtype  
---  ------          -----  
 0   date            object 
 1   date_block_num  object  
 2   shop_id         object  
 3   item_id         object  
 4   item_price      float64
dtypes: float64(2), int64(3), object(1)
memory usage: 134.4+ MB …
Run Code Online (Sandbox Code Playgroud)

python pandas scikit-learn data-science

16
推荐指数
1
解决办法
6218
查看次数

标签 统计

pandas ×2

python ×2

scikit-learn ×2

data-science ×1

dataframe ×1