How can I get a running sum for a list?
One (not functional) possibility out of many:
dataacc = data;
dataacc[[All, 2]] = Accumulate[data[[All, 2]]]
This will keep the third elements. If you want those removed, you can start with dataacc = data[[All, 1 ;; 2]];
I didn't benchmark, but I expect this to be fast.
Here is an arguably functional-style version without in-place modifications:
FoldList[{First@#2, #2[[2]] + #1[[2]]} &, First@data, Rest@data]
It is likely to be slower than the solution proposed by Szabolcs.
Another one!
val = data[[All, 2]];
Transpose@{data[[All, 1]], Take[FoldList[Plus, 0, val], -Length@val]}