检查不良连接
如果不加小心,连接(join)可能在没有报错的情况下"悄悄出错",返回被破坏的数据,记录条数比您预期的多或少。下面我们看看几种由于连接不当而让数据集变糟的情形。
在本例中,您将看到:当连接键的精度不一致时将两个数据框连接会发生什么,并比较正确连接与错误连接的记录数。
本练习是课程的一部分
使用 PySpark 进行特征工程
练习说明
- 在修正精度之前的数据框
df_orig与walk_df之间创建连接,分别在两个数据框上匹配longitude和latitude。 - 使用
where()、isNull()在df['walkscore']与correct_join['walkscore']上统计缺失值的数量。您会注意到有很多缺失值,因为数据类型与精度不匹配。 - 在
df与walk_df之间创建仅基于longitude的连接。 - 使用
count()统计记录数:few_keys_df与correct_join_df。您会注意到数量多了很多,因为我们没有正确地限制匹配条件。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Join on mismatched keys precision
wrong_prec_cond = [____ == ____, ____ == ____]
wrong_prec_df = ____.join(____, on=wrong_prec_cond, how='left')
# Compare bad join to the correct one
print(wrong_prec_df.____(____.____()).count())
print(correct_join_df.____(____.____).count())
# Create a join on too few keys
few_keys_cond = [____ == ____]
few_keys_df = ____.join(____, on=few_keys_cond, how='left')
# Compare bad join to the correct one
print("Record Count of the Too Few Keys Join Example: " + str(____.____()))
print("Record Count of the Correct Join Example: " + str(____.____()))