如何用jupyter notebook将“客户ID”拆分成2个部分,第一个部分生成新列“客户姓名”,第二个部分生成新列“客户ID”,并查看此时合并后数据的前5行。
from zlib import crc32
def test_set_check(identifier,test_ratio):
return crc32(np.int64(identifier)) & 0xffffffff < test_ratio*2**32
def split_train_test_by_id(data,test_ratio,id_column):
ids=data[id_column]
in_test_set=ids.apply(lambda id_:test_set_check(id_,test_ratio))
return data.loc[~in_test_set],data.loc[in_test_set] #loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行)
# 使用稳定特征
#将经纬度组合作为主键
housing_with_id["id"] = housing["longitude"] * 1000 + housing["latitude"]
train_set, test_set = split_train_test_by_id(housing_with_id, 0.2, "id")
print(len(train_set),"train+",len(test_set),"test")
test_set.head()