python 计算DataFrame的数值变量及离散变量,并标准化

## 区分DataFrame里面的数值变量和离散变量
## DataFrame_data:待处理的DataFrame类型的变量
## O_index:数值型变量列名
## C_index:离散型变量的列名
def distinguish_Char_Num(DataFrame_data):
    import copy 
    m, n = DataFrame_data.shape
    ## 存放数值型变量所在的列
    O = []
    ## 存放离散型变量所在的列
    C = []
    data = copy.deepcopy(DataFrame_data) 
    for i in range(n):
        try:
            if isinstance(data.iloc[0, i], int) or isinstance(data.iloc[0, i], float) or isinstance(data.iloc[0, i], np.int64 ) or isinstance(data.iloc[0, i], np.int32):
                O.append(i)
            elif isinstance(data.iloc[0, i], str):
                C.append(i)
            else:
                raise ValueError("the %d column of data is not a number or a string column" % i)
        except TypeError as e:
            print(e)
    # 数值型变量
    O_data = copy.deepcopy(data.iloc[:, O])
    # 分类型变量
    C_data = copy.deepcopy(data.iloc[:, C])
    ##  数值型变量的列名
    O_index = O_data.columns.tolist()
    ## 分类型变量的列名
    C_index = C_data.columns.tolist()
    return   O_index , C_index    
## 对离散变量进行标签化处理,对数值型变量进行归一化处理
## sample_X: 返回整合好的DataFrame类型的变量        
def DataIntegration(DataFrame_data):
    import copy
    from sklearn.preprocessing import LabelEncoder
    sample_X = copy.deepcopy(DataFrame_data)
    O_index , C_index = distinguish_Char_Num(DataFrame_data)
    ## 数值型变量标准化
    sample_X[O_index] = 1.0*(sample_X[O_index] - sample_X[O_index].min())/(sample_X[O_index].max() - sample_X[O_index].min()) 
    ## 离散变量标签化
    for i in range(len(C_index)):
        sample_X[C_index[i]] = LabelEncoder().fit_transform(sample_X[C_index[i]]) 
    return sample_X
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值