基于性别与婚姻状况字段补全姓名前缀并审计问题的技术咨询
姓名前缀字段数据处理方案
一、数据审计与优化建议
- 审计逻辑:基于
Gender(性别)、Marital Status(婚姻状态)两个字段,交叉校验姓名前缀字段的完整性、准确性- 可识别的现存问题:
- 姓名前缀字段空值:即后续需要按规则补全的记录
- 前缀匹配错误:已填充的前缀和性别、婚姻状态不符合对应规则,例如未婚女性记录填充Mrs、男性记录填充Miss/Mrs这类逻辑错误
- 基础字段缺失:性别或婚姻状态字段本身为空,无法通过既定规则推导对应前缀,需要人工补录基础信息
- 枚举值异常:性别字段出现F/M之外的取值、婚姻状态出现M/S之外的取值,导致规则无法正常匹配
- 优化建议:
- 空值填充前先完成错配值、异常枚举值的清洗,避免错误数据传导
- 三个字段新增前端录入校验约束,限制只能输入约定的枚举值,从源头减少异常数据产生
- 填充完成后做一轮全量逻辑校验,确保所有有效记录的前缀和性别、婚姻状态完全匹配规则
- 可识别的现存问题:
二、空值填充实现
姓名前缀字段空值严格按照以下规则填充:
- 性别=F(女性)且婚姻状态=M(已婚):填充
Mrs - 性别=F(女性)且婚姻状态=S(未婚):填充
Miss - 性别=M(男性)且婚姻状态=M(已婚):填充
Mr - 性别=M(男性)且婚姻状态=S(未婚):填充
Mr
Pandas环境实现代码
import pandas as pd # 拆分可自动填充、需人工处理的记录:性别/婚姻状态任一为空的记录无法走自动填充逻辑 auto_fill_part = df[df['Gender'].notna() & df['Marital Status'].notna()].copy() manual_process_part = df[~(df['Gender'].notna() & df['Marital Status'].notna())].copy() # 定义填充函数 def prefix_match(row): # 非空前缀保留原有值,仅对空值做填充 if not pd.isna(row['Name Prefix']): return row['Name Prefix'] if row['Gender'] == 'F': return 'Mrs' if row['Marital Status'] == 'M' else 'Miss' if row['Gender'] == 'M': return 'Mr' # 执行填充 auto_fill_part['Name Prefix'] = auto_fill_part.apply(prefix_match, axis=1) # 合并两部分数据得到最终处理结果 final_df = pd.concat([auto_fill_part, manual_process_part], ignore_index=True)
内容的提问来源于stack exchange,提问作者Snehal Chavan
相关产品推荐
相关产品推荐

