Re: [問題] spark 資料減去平均值

作者: thefattiger (LT)   2018-10-01 20:26:15
※ 引述《comeonbaby (來巴寶貝)》之銘言:
: 目前資料已分成一串tuple存在RDD裡面 (ID, Data)
: 目前想做的是將Data值減去其ID的Data平均值
: 例如: (1,10) (1,20) (2,10) 跑完後會變成
: (1,-5) (1,5) (2,0) 這樣
: 因為剛接觸不太清楚該怎麼實作
沒用過Spark,但看起起來跟它無關
from collections import defaultdict
x = [(1,10),(1,20),(2,10)] #your data
avg = defaultdict(lambda:[0,0])
for ID,data in x:
avg[ID][0] = (avg[ID][0]*avg[ID][1] + data)/(avg[ID][1]+1)
avg[ID][1] += 1
y = list(map(lambda s:(s[0],s[1]-avg[s[0]][0]),x)) #result

Links booklink

Contact Us: admin [ a t ] ucptt.com