Last active
September 29, 2021 21:42
-
-
Save rumatavz/b806781b25db93be2890cf6aa556d8fd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
from requests.auth import HTTPDigestAuth | |
import json | |
import pandas as pd | |
import numpy as np | |
from sklearn.linear_model import LinearRegression | |
import math | |
from requests.auth import HTTPBasicAuth | |
import pyodbc | |
import datetime | |
from pymongo import MongoClient | |
from scipy import stats | |
import matplotlib.pyplot as plt | |
from datetime import datetime, timedelta | |
import matplotlib.pyplot as plt | |
import matplotlib.dates as dates | |
connLive = pyodbc.connect('Driver={PostgreSQL Unicode(x64)}; Database=voting;Uid=postgres;Pwd=') | |
cursor = connLive.cursor() | |
cursor.execute("""SELECT payload -> 'voters' voter_id | |
FROM public.transactions | |
where method_id = 1 | |
order by block_height, position_in_block""") | |
votersRaw = [v.voter_id for v in cursor.fetchall()] | |
votersArr = [item for sublist in votersRaw for item in json.loads(sublist)] | |
actualVotersRaw = pd.read_sql_query("""select payload ->> 'voter_id' voter_id, payload ->> 'district_id' district_id, datetime | |
FROM public.transactions | |
where method_id = 4 | |
order by block_height, position_in_block""", connLive) | |
actualVoters2 = actualVotersRaw.copy() | |
actualVoters2 = actualVoters2.set_index("voter_id") | |
voterRegistrations = pd.DataFrame() | |
voterRegistrations["voter_id"] = votersArr | |
voterRegistrations["reg_order_num"] = voterRegistrations.index | |
voterRegistrations = voterRegistrations.set_index("voter_id") | |
voterRegistrations['voted'] = voterRegistrations.index.isin(actualVoters2.index) | |
voterRegistrations['bin'] = pd.cut(voterRegistrations['reg_order_num'],100) | |
voterRegistrationsGrouped = voterRegistrations.groupby('bin').sum() | |
plt.plot([x.left for x in voterRegistrationsGrouped.index], voterRegistrationsGrouped['voted'] / (len(voterRegistrations.index)/100)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment