美文网首页
Python pandas数据预处理

Python pandas数据预处理

作者: wangsb_2020 | 来源:发表于2020-03-14 10:35 被阅读0次

    机器学习中学习数据的首要任务是数据预处理

    1. 数据缺失值处理

    不同情况下的数据缺失问题,可以使用不同发方法:

    • 针对连续性的缺失数据可以使用数据的均值、中位数等方式填补;
    • 针对分类数据可以使用众数等方式填补缺失值;
    • 较为复杂的方法是使用样例的k近邻,然后使用K个近邻的均值进行填补。
    • 方法: dropna/fillna/isnull/notnull
    #生成带有缺失值的数据
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(6,5), columns=list('ABCDE'))
    df.iloc[2:4,2:4] = np.nan
    df.iloc[1,0:2] = np.nan
    print(df)
    #1.针对数据先使用df.isnull()检查是否有缺失值
    print(df.isnull())
    
    #2.使用参数以字典的方式对特征A进行缺失值填补
    df.fillna({'A':0.50}, inplace=True)
    print(df['A'])
    
    #3.使用向后插补的方法进行填充
    print(df['B'].fillna(method="bfill"))  #向后插补
    
    #4.使用向前插补的方法进行填充
    print(df['C'].fillna(method="ffill"))  #向前插补
    
    #5.使用某列的均值填补缺失值
    df['D'][df['D'].isnull()] = df['D'].mean()
    print(df['D'])
    
    image.png
    image.png
    2. 数据标准化和LatelEncoder
    • 数据标准化能够消除数据之间的量纲,使数据的各个特征在同一水平,尤其是在数据聚类分析、主成分分析中有重要作用
    • 使用Sklearn库中preprocessing模块的StandardScaler对鸢尾花数据集进行数据标准化操作,分析数据前后的变化:
    from sklearn.preprocessing import LabelEncoder,StandardScaler
    import pandas as pd
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei']
    Iris = pd.read_csv('IRIS.csv')
    print(Iris.head())
    
    #作箱线图
    Iris.boxplot()
    plt.title('标准化前BoxPlot')
    plt.show()
    
    #对四个特征进行标准化
    scaler = StandardScaler(with_mean=True, with_std=True)
    Iris.iloc[:,0:4] = scaler.fit_transform(Iris.iloc[:,0:4])
    Iris.boxplot()
    plt.title('标准后BoxPlot')
    plt.show()
    
    #数据集species或Name类别是字符串,使用LabelEncoder对重新编码:
    le = LabelEncoder()
    Species = le.fit_transform(Iris['Name'])
    print(Species)
    #从结果看字符串已经使用0,1,2三种数字分别代替并进行了重新编码,方便以后建模使用。
    
    image.png
    image.png
    3.数据的非线性特征生成
    • 在机器学习中,很多时候需要使用现有数据特征相互组合生成新的数据特征,如特征之间的相乘组成新的特征,特征的平方组成新的特征等。
    • Sklearn库的preprocessing模块中的PolynomialFeatures函数可以完成。
    import numpy as np
    from sklearn.preprocessing import PolynomialFeatures
    X = np.arange(8).reshape(4,2)
    print(X)
    pf = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)
    # degree控制多项式的度,即最多能有几个特征变量的乘积
    # interaction_only是否保留交叉项,默认为False
    # include_bias是否有常数项,默认为True
    X1 = pf.fit_transform(X)
    print(X1)
    

    相关文章

      网友评论

          本文标题:Python pandas数据预处理

          本文链接:https://www.haomeiwen.com/subject/kzjmshtx.html