• Pandas 数据处理 类别数据和数值数据


    要是作深度学习的话,可以直接用tensoflow框架的预处理层,我试过,比PyTorch自己写出来的会好一点,主要是简单好用。处理CSV文件

    它类别的处理逻辑是onehot,比较标准稀疏,数值的话就是归一化了。

    有时候不需要这么麻烦,就数字就完事儿了。

    处理起来要人工把数值和类别分出来

    def hk_list(a, b):
        return [i for i in range(a, b)]
    # df_1 就是一个原始数据,要分出来它的数值列和类别列
    ca_list = df_1.columns[hk_list(2,10)+[114, 116, 138, 143,144]+ hk_list(120,129)+ hk_list(172, 175)].to_list() 
    num_list = df_1.columns[hk_list(11, 114)+[115] + hk_list(117, 120) + hk_list(129, 138) + hk_list(139,143)+ hk_list(145,172)].to_list()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    分出来后就是对类别列处理一下,处理成数字的

    df_2 = pd.DataFrame()
    df_2[['id']] = df_1[['id']]
    df_2[ca_list] = df_1[ca_list].apply(lambda x: x.astype('category').cat.codes)
    
    • 1
    • 2
    • 3

    通过这样的操作,数据就出来了,而且还能把空值也给处理了。

    数值的话,要类型转换

    df_2[num_list] = df_1[num_list].apply(pd.to_numeric, errors='ignore')
    df_2[num_list].fillna(0, inplace=True)
    
    • 1
    • 2

    归一化的可以自己根据需要自己写了,有最大最小归一化,也有正态分布那种的。

    from sklearn.preprocessing import MinMaxScaler, StandardScaler
    
    # 最小-最大规范化
    scaler = MinMaxScaler()
    scaled_data = scaler.fit_transform(df['column_name'].values.reshape(-1, 1))
    
    # Z-Score 归一化
    scaler = StandardScaler()
    scaled_data = scaler.fit_transform(df['column_name'].values.reshape(-1, 1))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    最小-最大规范化:

    最小-最大规范化将数值列中所有的数据映射到 [0, 1] 的范围内,公式如下:
    x n o r m = ( x − x m i n ) / ( x m a x − x m i n ) x_{norm} = (x - x_{min}) / (x_{max} - x_{min}) xnorm=(xxmin)/(xmaxxmin)
    其中,x 是原始数据,x_min 和 x_max 分别是原始数据的最小值和最大值。这种方法适用于数据集没有明显的离群值的情况.

    Z-Score 归一化:

    Z-Score 归一化将数值列中所有的数据转换为标准正态分布(均值为 0,方差为 1)的数值。公式如下:
    x n o r m = ( x − m e a n ) / s t d x_{norm} = (x - mean) / std xnorm=(xmean)/std
    其中,x 是原始数据,mean 和 std 分别是原始数据的均值和标准差。这种方法适用于数据集有明显离群值或者需要保留数据的分布信息的情况。

  • 相关阅读:
    DADPS-生物素-炔基_CAS:2241685-22-1试剂反应原理
    MATLAB | 一起来感受数学之美叭
    Pytest 框架执行用例流程浅谈
    新版onenet平台安全鉴权的确定与使用
    【stm32】FreeModbus 介绍 + 移植stm32f103 HAl库
    时序数据库 InfluxDB
    【PLC GX Works2】创建一个工程
    HarmonyOS NEXT应用开发之Axios获取解析网络数据
    Linux上文本处理三剑客之sed
    C语言快速排序
  • 原文地址:https://blog.csdn.net/u010095372/article/details/133671872