>最后,我找到了如何创建一个**循环来破坏数据集**。如果有人需要一天,我会分享!
首先,您需要定义要创建的错误、要用于替换的字母,例如要损坏的变量,然后添加带有特殊字符的错误:
lettre = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
code_erreur= [ "replace","inserte","delete","espace","caract_spe", "NA","inverse"]
nombre_erreur=["1","1","1","2"]
varibale =["VARIABLEA","VARIABLEB"]
caract_spe =["_", "^", "¨", "", ".", "é", "-", "*","ù","ï","à","è","î","â"]
- 我创建了一个列表“nombre_erreur”,因为我想要 75% 的数据集有 1 个错误,25% 有 2 个错误。
接下来,创建定义:
def def_code_erreur(code_erreur,varibale ,nombre_erreur,lettre,caract_spe):
if type_erreur=="delete":
for i in range(0,int(nb_erreur)):
longueur = len(col1)
pos = random.choice(range(1,longueur))
col1 = col1[:pos] + col1[(pos+1):]
if type_erreur=="espace":
for i in range(0,int(nb_erreur)):
longueur = len(col1)
pos = random.choice(range(1,longueur))
col1 = col1[:pos] + " " + col1[(pos):]
if type_erreur=="inserte":
for i in range(0,int(nb_erreur)):
longueur = len(col1)
pos = random.choice(range(1,longueur))
col1 = col1[:pos] + lettre_choisie + col1[(pos):]
if type_erreur=="caract_spe":
for i in range(0,int(nb_erreur)):
longueur = len(col1)
pos = random.choice(range(1,longueur))
col1 = col1[:pos] + caract_spe_choisi + col1[(pos):]
if type_erreur=="replace":
for i in range(0,int(nb_erreur)):
longueur = len(col1)
pos = random.choice(range(1,longueur))
col1 = col1[:pos-1] + lettre_choisie + col1[(pos):]
if type_erreur=="inverse":
for i in range(0,int(nb_erreur)):
longueur = len(col1)
pos = random.choice(range(1,longueur))
col1 = col1[:pos-1] + col1[pos:pos+1] + col1[pos-1:pos] + col1[(pos+1):]
if type_erreur=="NA":
for i in range(0,int(nb_erreur)):
col1 = col1
return col1
udf_def_code_erreur = udf(def_code_erreur, StringType())
好吧,您必须调用“udf_def_code_erreur”!如果要破坏整个数据集,可以循环调用它。