
数据清洗:研究、匹配与格式化
|
143
创建唯一键的方法有很多。我们可以用采访的开始时间作为唯一键。但我们不确定
UNICEF
是否同时安排了多个调查组。如果是的话,我们可能会将事实上不是重复值的元
素当作重复值删掉。我们可以用被采访人的出生日期和采访时间一起做唯一键,这样不太
可能有重复值,但如果有字段缺失的话就麻烦了。
一种优雅的解决方法是,检查类群编号、家庭编号和家庭成员编号三者是否构成唯一键。
如果是的话,我们可以将这个方法应用到整个数据集上——即使没有采访起止时间也可
以。我们来试一下!
set_of_keys = set([
'%s-%s-%s' % (x[0][1], x[1][1], x[2][1])
for
x
in
zipped_data])
➊
uniques = [x
for
x
in
zipped_data
if not
set_of_keys.remove(
'%s-%s-%s' % (x[0][1], x[1][1], x[2][1]))]
➋
print
len(set_of_keys)
➌
➊
利用类群编号、家庭编号和家庭成员编号创建一个字符串,我们认为这三个编号的组合
是唯一的。我们将三个编号用
-
隔开,这样方便区分。
➋
利用
remove
方法重新创建我们用到的唯一键。这样会一个个删除所有数据,
uniques
列
表包含每一个唯一数据。如果有重复数据的话,代码还会抛出错误。
➌
计算唯一键列表的长度。我们可以知道数据集中有多少个唯一值。
太好了!这一次没有报错。从列表的长度中可以看出 ...