1、加标签算法
给定一个数组:
x = [A,B,H,D,F,E,A,D,C,F,V,C,D,B,B,C,A,F,E,D,F,D,D]Output:
x = [1,2,3,4,5,6,1,4,7,5,8,7,4,2,2,7,1,5,6,4,5,4,4]说明: 将数组x中的字母全部用数字表示,相同的字母使用同一个数字表示,不同的字母使用不同的数字表示。
分析: 对于上述数组x而言,数组x的长度是已知的,数组中字母的类别也是已知的,所以在处理的过程中,会更加简单;而在数据分析中的数据集中,数据量是非常庞大的,类别也是未知的,此时就会变得复杂。
算法:
def add_label(s): # 参数s为数组 l = [] # 最终list m = [] # 临时list for i in range(len(s)): if i == 0: # list是从0开始索引的,先考虑第一个位置 m = [] l = [1] else: m.append(s[i - 1]) if s[i] in m: if m.index(s[i]) == 0: l.append(1) else: l.append(l[m.index(s[i])]) # m.index(s[i])通过索引查找这个位置的元素 else: l.append(max(l) + 1) return l2、多值处理算法
给定一个二维数组:
x = [['A', 36], ['B', 85], ['C', 15], ['B', 65], ['B', 52], ['A', 89]]Output:
x = [['A', 36, 89], ['B', 85, 65, 52], ['C', 15]]说明: 第一列不动,将第二列中的元素加到对应的第一列元素后面。
分析: 使用字典进行操作,键值唯一,而值不唯一,也就是多值处理操作。
算法:
# 字典多值处理 res = {} for item in l: # l为二维数组 k = item[0] if not res.has_key(k): # 给定的键在字典中,就返回true,否则返回false res[item[0]] = [] res[item[0]].append(item[1]) print res上述两个算法将应用于之后的数据处理操作。