Georgia Senate Runoff Timestamp Data

I was trying to find timestamp data for the Georgia 2021 Senate Runoff election. I couldn’t find it easily via a google search, but I kept digging, and managed to find it and extract it from NY Times’ live prediction data feed. Here it is …

Senate Race 1
Senate Race 2

Code …

# Zoe Phin, 2021/01/06

require() { sudo apt-get install -y curl jq gnuplot; }

download() { 
    curl -o ga1.json
    curl -o ga2.json

timeseries() {
    jq -Mc '.races[0].timeseries[]|[.timestamp,.vote_counted,.republican_voteshare_counted,.democrat_voteshare_counted]' ga1.json | tr -d '["]' > ga1.csv
    jq -Mc '.races[0].timeseries[]|[.timestamp,.vote_counted,.republican_voteshare_counted,.democrat_voteshare_counted]' ga2.json | tr -d '["]' > ga2.csv

format() {
    for i in 1 2; do
        (echo "Timestamp            Votes  Rep %   Dem %   Rep     Dem"
         awk -F, '{ "TZ=US/Eastern date +%x,%R:%S -d "$1 | getline t; printf "%s %7d %6.4f %6.4f %7d %7d\n", t, $2, $3, $4, $2*$3, $2*$4 }' ga$i.csv
        ) > ga$i.txt

plot() {
    awk -F, '{ "TZ=US/Eastern date +%d%H%M%S -d "$1 | getline t; printf "%s %7d %7d\n", t, $2*$3, $2*$4 }' ga$1.csv > ga$1.dat
    (echo 'set term png size 640,480
    set key top left
    set grid xtics ytics
    set ylabel "Million Votes"
    set timefmt "%d%H%M%S"
    set xdata time
    set xtics format "01/%d\n%H:%M"
    set ytics format "%.1f"
    set mytics 5'
    echo "plot 'ga${1}.dat' u 1:(\$2/1e6) t '$2' w lines lc rgb 'red','' u 1:(\$3/1e6) t '$3' w lines lc rgb 'blue'"
    ) | gnuplot > ga$1.png

Run it:

$ source; require; download; timeseries; format

format generates timestamp data into two files: ga1.txt and ga2.txt. The results are archived here and here, respectively.

Race 1 is Perdue vs. Ossoff, and Race 2 is Loeffler vs. Warnock

To plot the data:

$ plot 1 Perdue Ossoff
$ plot 2 Loeffler Warnock

This generates ga1.png and ga2.png, which I present above.

I left my opinion out of this post. Curious Windows coders should follow instructions here.

Enjoy the data 🙂 -Zoe

Published by Zoe Phin

11 thoughts on “Georgia Senate Runoff Timestamp Data

  1. There are two districts for each federal position, yet only one down ballot name? Not sure if we are comparing apples to apples when you note that the down ballot total was higher than the two individual district totals. Nice work tho’, your analysis is appreciated

    Liked by 1 person

    1. In the last half of my article, I simply combined both races, just to see who wins: Left or Right. I could’ve also averaged them. The point was to show that Georgia is still a Right state.

      Thank you very much, Chris 🙂


  2. I’m noticing three near-vertical lines at 20:15, 21:25 and 23:20 where a whole lot of blue votes were counted in a very short time and red is basically unaffected. In all three cases blue rises above red. Otherwise the slope for red is generally higher than for blue. The Republican is getting a higher percentage of votes in all but a few specific points where nearly all Democratic votes are being counted. After midnight the republican gets basically no more votes but the democrat is still having a few come in. I’m wondering if any of these slopes exceed the count-rate of the machines.

    Liked by 1 person

  3. Wow! You have to ask how is this done? Suggestions that a proportion of votes get ‘moved’ from one candidate to another have been made (RTFM). However this would be done carefully to avoid the vertical spikes. Could this be as crass as
    (1) pull out a bunch of ballots all for one party (Dem) and
    (2) run them through the counting machine multiple times?
    Anyway even from here in Australia this smells very fishy!
    Nice work

    Liked by 1 person

  4. Verrry interesting. I wonder if the large discrete jumps in Democrat votes could be because they are concentrated in a few high-population counties, which send occasional updates of the count?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: