
1) 【一句话结论】:构建分层数据清洗流程,通过业务规则驱动的质量检查、时间感知的缺失值处理、动态调整的异常值检测,并依托主数据管理平台(MDM)维护核心实体一致性,系统性提升养殖数据质量。
2) 【原理/概念讲解】:
数据清洗是提升数据可靠性的关键步骤,核心是识别并修正不一致性。
3) 【对比与适用场景】:
以缺失值处理策略为例(时间感知与插补方法):
| 处理策略 | 适用场景 | 处理逻辑 | 注意点 |
|---|---|---|---|
| 故障标记 | 传感器临时故障 | 记录故障时间区间,标记缺失值为“故障缺失” | 避免误判,保留故障信息 |
| 删除 | 缺失比例极低(<1%),非关键字段 | 删除整行 | 可能损失信息 |
| 均值/中位数插补 | 缺失比例低(<10%),数据正态分布,非关键字段 | 用均值/中位数填充 | 可能引入偏差 |
| KNN插补 | 缺失比例中等(10%-30%),字段间强相关 | 用邻近样本均值填充 | 计算复杂 |
| 模型预测插补 | 缺失比例高(>30%),字段间复杂关系 | 用回归/随机森林预测 | 需训练模型,计算成本高 |
4) 【示例】(分批处理+时间感知伪代码):
# 数据清洗流程伪代码(分批+时间感知)
def batch_clean_data(batch_data, batch_id):
# 1. 数据质量检查(类型+业务规则)
quality_rules = {
"sensor_id": lambda x: isinstance(x, str) and len(x) == 8,
"temperature": lambda x: isinstance(x, (int, float)) and 20 <= x <= 30,
"pig_id": lambda x: isinstance(x, str) and re.match(r"^\d{2}-\d{4}-\d{3}$", x)
}
for col, rule in quality_rules.items():
batch_data = batch_data[batch_data[col].apply(rule)]
# 2. 缺失值处理(时间感知:标记故障)
for col in batch_data.columns:
missing_mask = batch_data[col].isnull()
if missing_mask.any():
fault_times = get_sensor_fault_times(col) # 返回故障时间区间列表
for time_range in fault_times:
batch_data.loc[(batch_data['timestamp'] >= time_range[0]) &
(batch_data['timestamp'] <= time_range[1]), col] = None
if col == "weight":
batch_data[col] = batch_data[col].fillna(batch_data[col].rolling(window=7, min_periods=1).mean())
# 3. 异常值检测(业务调整阈值)
for col in ["temperature", "humidity"]:
mean, std = batch_data[col].mean(), batch_data[col].std()
batch_data = batch_data[abs((batch_data[col] - mean) / std) <= 3.5]
# 4. 数据一致性(MDM验证)
mdm_api = "https://mdm.priy.com/validate"
valid_ids = set()
for pig_id in batch_data["pig_id"]:
response = requests.post(mdm_api, json={"id": pig_id})
if response.json().get("valid"):
valid_ids.add(pig_id)
batch_data = batch_data[batch_data["pig_id"].isin(valid_ids)]
return batch_data
5) 【面试口播版答案】:
“面试官您好,针对养殖数据中的不一致性,我会设计一个分层清洗流程。首先,数据质量检查通过预定义规则(如传感器温度范围、猪只ID格式“场号-批次号-序号”,且为数值型)快速识别问题数据;接着,缺失值处理考虑时间维度,比如传感器故障时标记为“故障区间”,避免直接删除或插补,故障后用历史7天滑动窗口均值填充;然后,异常值检测结合业务知识调整阈值(如温度Z>3.5),过滤偏离正常分布的数据;最后,通过主数据管理平台(MDM)调用API验证猪只ID有效性,确保跨系统数据唯一。这样能系统性提升数据质量,为后续分析提供可靠基础。”
6) 【追问清单】:
7) 【常见坑/雷区】: