def online(data):
n = 0.
mean = 0.
M2 = 0.
M3 = 0.
M4 = 0.
for x in data:
n1 = n
n = n + 1
delta = x - mean
delta_n = delta / n
delta_n2 = delta_n * delta_n
term1 = delta * delta_n * n1
mean = mean + delta_n
M4 = M4 + term1 * delta_n2 * (n*n - 3*n + 3) + 6 * delta_n2 * M2 - 4 * delta_n * M3
M3 = M3 + term1 * delta_n * (n - 2) - 3 * delta_n * M2
M2 = M2 + term1
skewness = n**0.5 * M3 / (M2**(3./2))
kurtosis = (n*M4) / (M2*M2) - 3
print "skewness:", skewness
print "kurtosis:", kurtosis
if __name__ == '__main__':
data = range(1, 6) + [1]
online(data)