• 缺失值填充


    缺失值填充

    拿到的数据或多或少都不是立即可以用的,对于一些可能因为各种主观或者客观原因导致缺失的情况我们需要进行缺失值处理,尽可能地保留更多地数据。

    多重插补法

    (1)插补:将不完整数据集缺失的观测行估算填充m次。请注意,填充值是从某种分布中提取的。模拟随机抽取并不包含模型参数的不确定性。更好的方法是采用马尔科夫链蒙特卡洛模拟(MCMC,Markov Chain Monte Carlo Simulation)。这一步骤将生成m个完整的数据集。
    (2)分析:分别对(m个)每一个完整数据集进行分析。
    (3)合并:对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。

    from fancyimpute import IterativeImputer
    file_path = '../Data.xlsx'
    df = pd.read_excel(file_path) # 注意路径
    columns_to_impute = ['xxx', 'xxx', '...']
    # 创建多重插补器
    imputer = IterativeImputer()
    # 对指定的列进行多重插补
    df[columns_to_impute] = imputer.fit_transform(df[columns_to_impute])
    df.to_excel('../Data2.xlsx', index=False)

    平均值法

    如字面意思,用该列的平均值填充该列的缺失。

    file_path2 = '../Data.xlsx'
    df = pd.read_excel(file_path2)
    columns_to_fill_median = ['xxx', 'xxx', '...']
    # 将指定列中的空值填充为该列的平均值
    for column in columns_to_fill_median:
    mean_value = df[column].mean()
    df[column] = df[column].fillna(mean_value)
    output_file_path = '../Data2.xlsx'
    df.to_excel(output_file_path, index=False)

    KNN法

    K最近距离法:先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。

    from sklearn.impute import KNNImputer
    file_path2 = '../Data.xlsx'
    df = pd.read_excel(file_path2) # 注意路径
    columns_to_impute = ['xxx', 'xxx', '...']
    imputer = KNNImputer()
    df[columns_to_impute] = imputer.fit_transform(df[columns_to_impute])
    df.to_excel('../Data_2.xlsx', index=False)

    删除

    如果你的数据足够多,也可以简单点直接把有空缺值的都删了。

    Reference

    Sklearn中有许多填充方法:https://scikit-learn.org/stable/modules/impute.html

  • 相关阅读:
    mysql 8.0 命令行root无法登录
    python向列表中添加元素
    【Python】实现excel文档中指定工作表数据的更新操作
    Quill 文本编辑器
    maven打包可运行jar
    如何在Visual Studio Code中使用C/C++扩展
    互联网摸鱼日报(2023-10-16)
    基于Flask快速搭建一个管理系统
    [每日两题系列]刷算法题咯~~
    高并发时代到底是Go还是Java?
  • 原文地址:https://www.cnblogs.com/benbenlzw/p/18097401