自定义Python缺失值检查函数

本文介绍了如何使用Python的pandas库自定义函数来检查数据集中缺失值的数量和比例。通过读取'titanic_train.csv'文件并应用自定义函数`not_null_num`,展示每个特征的缺失和非缺失值详细信息。

import pandas as pda
import numpy as np
#数据预处理
data=pda.read_csv("titanic_train.csv")
print(data.columns)

#自定义缺失值检测函数
def not_null_num(column):
    column_null=pda.isnull(column)
    column_notnull = pda.notnull(column)
    null=column[column_null]
    notnull=column[column_notnull]
    return 
### Python 中使用 Pandas 和 Numpy 进行缺失值填充 在数据预处理阶段,缺失值的填充是一个常见的需求。以下是几种常用的缺失值填充方法及其对应的代码实现。 #### 使用 `fillna` 方法进行常量填充 可以利用 Pandas 的 `fillna` 函数缺失值替换为指定的常量。 ```python import pandas as pd import numpy as np data = {'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [9, 10, 11, 12]} df = pd.DataFrame(data) # 将所有 NaN 替换为 0 df_filled_with_zero = df.fillna(0) print(df_filled_with_zero) # 输出已填充的结果[^2] ``` #### 按列单独设置不同的填充值 如果不同列需要不同的默认值,则可以通过字典来指定每列的填充方式。 ```python fill_values = {"A": 100, "B": -1, "C": 0} df_filled_by_column = df.fillna(value=fill_values) print(df_filled_by_column) # 对应各列分别设置了特定填充值[^2] ``` #### 使用前向或后向填充法 (Forward Fill / Backward Fill) 通过向前传播最后一个有效观测值或者向后传播下一个有效观测值来进行填补。 ```python # 前向填充(forward fill) df_ffill = df.ffill() print(df_ffill) # 后向填充(backward fill) df_bfill = df.bfill() print(df_bfill) # 展示两种方向上的填充效果[^3] ``` #### 数值型特征插值填充 对于时间序列或其他有序的数据集来说,线性插值可能是一种合理的选择。 ```python df_interpolated = df.interpolate(method='linear') print(df_interpolated) # 应用了简单的线性插值算法[^4] ``` #### 统计学方法填充:均值、中位数、众数 基于统计特性选择合适的中心趋势度量作为替代方案。 ```python mean_value = df['B'].mean() median_value = df['B'].median() df_mean_fill = df.copy() df_median_fill = df.copy() if not pd.isnull(mean_value): df_mean_fill['B'] = df['B'].fillna(mean_value) if not pd.isnull(median_value): df_median_fill['B'] = df['B'].fillna(median_value) print("Mean filled:\n", df_mean_fill) print("Median filled:\n", df_median_fill) # 提供了平均数和中位数两种填充手段[^1] ``` #### 自定义复杂逻辑填充 当简单规则无法满足业务场景时,可编写自定义函数完成更精细的操作。 ```python def custom_fill(row): if pd.isnull(row['A']): return row['C'] else: return row['A'] df_custom_filled = df.apply(custom_fill, axis=1) print(df_custom_filled) # 实现了一个跨字段依赖关系的定制化解决方案 ``` 以上就是一些常见且实用的缺失值填充技巧,在实际应用过程中可以根据具体问题灵活选用最恰当的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值