缺失值填充

# 读取“银行贷款审批数据.xlsx”表,自变量为x1~x15,决策变量为y(1-同意贷款,0-不同意贷款)

# 其中x1~x6为数值变量,x7~x15为名义变量

# 请对x1~x6中存在的缺失值用均值策略填充,x7~x15用最频繁值策略填充

# 最后返回填充处理后的X(即x1~x15),以及决策变量Y(即y)

def return_values():

    import pandas as pd

    import numpy as np

    from sklearn.impute import SimpleImputer

    data=pd.read_excel('银行贷款审批数据.xlsx')

    numerical_vars = data.iloc[:, 0:6]  # x1 到 x6

    categorical_vars = data.iloc[:, 6:]  # x7 到 x15

    # 对数值变量(x1 - x6)使用均值策略填充缺失值

    numeric_imputer = SimpleImputer(strategy='mean')

    numeric_imputer.fit(numerical_vars)

    a1 = numeric_imputer.transform(numerical_vars)

    # 对名义变量(x7 - x15)使用最频繁值策略填充缺失值

    categorical_imputer = SimpleImputer(strategy='most_frequent')

    categorical_imputer.fit(categorical_vars)

    a2 = categorical_imputer.transform(categorical_vars)

    X=np.hstack((a1,a2))

    Y=data.iloc[:,-1]

    return(X,Y)

数据处理中,针对缺失值有多种填充方法,不同方法适用于不同场景,没有绝对的优劣之分,在数据预处理时可多尝试几种方法,选择表现最佳的方式[^1]。以下是一些常见的缺失值填充方法: ### 简单填充法 - **均值填充**:对于数值型数据,可计算该列非缺失值的均值,然后用均值填充缺失值。 ```python import pandas as pd df = pd.read_excel('data.xlsx') df['col_name'].fillna(df['col_name'].mean(), inplace=True) ``` - **中位数填充**:同样针对数值型数据,计算该列非缺失值的中位数进行填充。 ```python import pandas as pd df = pd.read_excel('data.xlsx') df['col_name'].fillna(df['col_name'].median(), inplace=True) ``` - **众数填充**:对于分类数据,使用该列出现次数最多的值(众数)进行填充。 ```python import pandas as pd df = pd.read_excel('data.xlsx') df['col_name'].fillna(df['col_name'].mode()[0], inplace=True) ``` ### 模型填充法 - **KNN填充**:该方法借助其他非缺失数据寻找最邻近的数据,然后进行加权平均求值填充。使用前需先处理缺失值较少的数据。 ```python from fancyimpute import KNN import pandas as pd import numpy as np # 处理缺失值较少的数据 # ... # 假设已经得到特征数据 X X_filled = KNN(k=3).fit_transform(X) ``` ### 插值填充法 - **线性插值**:根据数据的线性趋势对缺失值进行填充。 ```python import pandas as pd df = pd.read_excel('data.xlsx') df['col_name'] = df['col_name'].interpolate(method='linear') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值