Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Working Congressional vote analytics",
"provenance": [],
"toc_visible": true,
"collapsed_sections": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [
"# Merging data sets prior to EDA\n"
],
"metadata": {
"id": "1fYgl7FF68vl"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "DtI7Q3wvBtyv"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import os\n",
"import glob\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sb\n",
"import csv\n",
"from pylab import *"
]
},
{
"cell_type": "code",
"source": [
"from google.colab import drive\n",
"drive.mount('/content/gdrive')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PEDVhxsbBy2O",
"outputId": "f8023dc0-64e4-45d5-a868-640b39c36fef"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Mounted at /content/gdrive\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"joined_files = os.path.join(\"/content/gdrive/MyDrive/Independent study Spring 2022:/2017 Congressional voting records_CLEAN\",\"*.csv\")\n",
"joined_list = glob.glob(joined_files)\n",
"df2017 = pd.concat(map(pd.read_csv,joined_list),axis=1,join='outer')\n",
"#df2017.to_csv('2017MergedData.csv')"
],
"metadata": {
"id": "EnU-ibkawjS2"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"joined_files = os.path.join(\"/content/gdrive/MyDrive/Independent study Spring 2022:/2018 Congressional voting records_CLEAN\",\"*.csv\")\n",
"joined_list = glob.glob(joined_files)\n",
"df2018 = pd.concat(map(pd.read_csv,joined_list),axis=1,join='outer')\n",
"#df2018.to_csv('2018MergedData.csv')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 380
},
"id": "8JR5GQdZF2oK",
"outputId": "15473146-bd47-455c-b481-6f59ee33d725"
},
"execution_count": null,
"outputs": [
{
"output_type": "error",
"ename": "ValueError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-7-4efb2268653a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mjoined_files\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/content/gdrive/MyDrive/Independent study Spring 2022:/2018 Congressional voting records_CLEAN\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"*.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mjoined_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mglob\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mglob\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjoined_files\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mdf2018\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mjoined_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'outer'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;31m#df2018.to_csv('2018MergedData.csv')\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/util/_decorators.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 309\u001b[0m \u001b[0mstacklevel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstacklevel\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 310\u001b[0m )\n\u001b[0;32m--> 311\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 312\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 313\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/core/reshape/concat.py\u001b[0m in \u001b[0;36mconcat\u001b[0;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[0mverify_integrity\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mverify_integrity\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 303\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 304\u001b[0;31m \u001b[0msort\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 305\u001b[0m )\n\u001b[1;32m 306\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/core/reshape/concat.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 350\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobjs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 351\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"No objects to concatenate\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 352\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 353\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mkeys\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: No objects to concatenate"
]
}
]
},
{
"cell_type": "code",
"source": [
"joined_files = os.path.join(\"/content/gdrive/MyDrive/Independent study Spring 2022:/2019 Congressional votes CLEAN\",\"*.csv\")\n",
"joined_list = glob.glob(joined_files)\n",
"df2019 = pd.concat(map(pd.read_csv,joined_list),axis=1,join='outer')\n",
"#df2019.to_csv('2019MergedData.csv')"
],
"metadata": {
"id": "JP_vuEAIGgia"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"joined_files = os.path.join(\"/content/gdrive/MyDrive/Independent study Spring 2022:/2020 Congressional votes CLEAN\",\"*.csv\")\n",
"joined_list = glob.glob(joined_files)\n",
"df2020 = pd.concat(map(pd.read_csv,joined_list),axis=1,join='outer')\n",
"#df2020.to_csv('2020MergedData.csv')"
],
"metadata": {
"id": "0i8_znAiG5Wa"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"joined_files = os.path.join(\"/content/gdrive/MyDrive/Independent study Spring 2022:/2021 Congressional votes CLEAN\",\"*.csv\")\n",
"joined_list = glob.glob(joined_files)\n",
"df2021 = pd.concat(map(pd.read_csv,joined_list),axis=1,join='outer')\n",
"#df2021.to_csv('2021MergedData.csv')"
],
"metadata": {
"id": "_Y203l3AHJLu"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2017=pd.read_csv('/content/gdrive/MyDrive/Independent study Spring 2022:/Merged yearly data/2017MergedData.csv')\n",
"df2018=pd.read_csv('/content/gdrive/MyDrive/Independent study Spring 2022:/Merged yearly data/2018MergedData.csv')\n",
"df2019=pd.read_csv('/content/gdrive/MyDrive/Independent study Spring 2022:/Merged yearly data/2019MergedData.csv')\n",
"df2020=pd.read_csv('/content/gdrive/MyDrive/Independent study Spring 2022:/Merged yearly data/2020MergedData.csv')\n",
"df2021=pd.read_csv('/content/gdrive/MyDrive/Independent study Spring 2022:/Merged yearly data/2021MergedData.csv')"
],
"metadata": {
"id": "sdgW_-lrHfw1"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"\n",
"\n",
"* \n",
"* \n",
"\n"
],
"metadata": {
"id": "JEzjsvxG6KYj"
}
},
{
"cell_type": "markdown",
"source": [
"# 2017DataWrangling\n",
"\n"
],
"metadata": {
"id": "VziI8iixPOzl"
}
},
{
"cell_type": "markdown",
"source": [
"\n",
"\n",
"1. Look for what years were most and least partisan! How?\n",
" \n",
"\n",
"* Find percent of votes that each party votes 100% together, graph that over time\n",
"\n",
"\n",
"* Pseudo code: \n",
"\n",
" i=0\n",
" while i<#of{\n",
"\n",
"\n",
" if (RepublicanYea>X and DemocratNay>X OR RepublicanNay>X AND DemocratYea>X) vote = partisan\n",
" \n",
"\n",
"\n",
"-Add new rows. One for Republican Yea count, One for Republican Nay count. One for Democrat yea count, one for Democrat Nay count.\n",
"\n",
"-Use np.where to find columns where above conditions are met. Create new row based on this that gives vote a partisan index.\n",
"\n",
"\n",
"\n",
" \n",
"\n",
"\n",
"\n",
"\n",
"\n"
],
"metadata": {
"id": "o8N2itHIPUhu"
}
},
{
"cell_type": "code",
"source": [
"df2017"
],
"metadata": {
"id": "2wzodtbih_sg"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2017DropDistrict = df2017[df2017.columns.drop(list(df2017.filter(regex='district')))]\n",
"df2017DropPerson = df2017[df2017DropDistrict.columns.drop(list(df2017.filter(regex='person.')))]\n",
"df2017DropState = df2017[df2017DropPerson.columns.drop(list(df2017DropPerson.filter(regex='state.')))]\n",
"df2017DropName =df2017[df2017DropState.columns.drop(list(df2017.filter(regex='name.')))]\n",
"df2017JustVotes= df2017[df2017DropName.columns.drop(list(df2017.filter(regex='party.')))]\n",
"df2017JustVotes\n"
],
"metadata": {
"id": "xrVjK5EPlzf6"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2017JustVotes"
],
"metadata": {
"id": "2B4vSXOdFiio"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2017RepublicanVotes= df2017JustVotes.loc[df2017JustVotes['party']=='Republican']\n",
"\n",
"df2017RepublicanVotes"
],
"metadata": {
"id": "dAPr-3vr5nPl"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
""
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "eJ59UcAB_kOJ",
"outputId": "9d032a67-0b4b-4162-e6c9-78aa219ebfe2"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"52"
]
},
"metadata": {},
"execution_count": 136
}
]
},
{
"cell_type": "code",
"source": [
"df2017RepublicanJustVotes=df2017RepublicanVotes.drop(['person','state','name','party'],axis=1)\n",
"df2017RepublicanJustVotes\n",
"dfRepVoteCounts=df2017RepublicanJustVotes.apply(pd.Series.value_counts)\n",
"dfRepVoteCounts"
],
"metadata": {
"id": "SB4LYkztTliL"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts=dfRepVoteCounts.fillna(0)\n",
"dfRepVoteCounts=dfRepVoteCounts.reindex(['Yea','Nay','Present','Not Voting'])\n",
"dfRepVoteCounts\n",
" \n",
" \n",
" "
],
"metadata": {
"id": "mBdqAud5XskB"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts=dfRepVoteCounts.transpose()"
],
"metadata": {
"id": "4h7ilwCvzSUv"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts.columns=[\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfRepVoteCounts=dfRepVoteCounts.transpose()\n",
"dfRepVoteCounts"
],
"metadata": {
"id": "jYQBpStZzS6i"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts"
],
"metadata": {
"id": "uSQ1Sw-5Npg7"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2017DemocratVotes= df2017JustVotes.loc[df2017JustVotes['party']=='Democrat']\n",
"\n",
"df2017DemocratVotes"
],
"metadata": {
"id": "x30HQJ532AXg"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2017DemocratJustVotes=df2017DemocratVotes.drop(['person','state','name','party'],axis=1)\n",
"df2017DemocratJustVotes\n"
],
"metadata": {
"id": "vUvzUXWP4PPy"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfDemVoteCounts=df2017DemocratJustVotes.apply(pd.Series.value_counts)\n",
"dfDemVoteCounts"
],
"metadata": {
"id": "xVH2EegY9neU"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfDemVoteCounts=dfDemVoteCounts.fillna(0)\n",
"dfDemVoteCounts=dfDemVoteCounts.reindex(['Yea','Nay','Present','Not Voting'])"
],
"metadata": {
"id": "2P8vTrL79-Gf"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfDemVoteCounts=dfDemVoteCounts.transpose()"
],
"metadata": {
"id": "K9royyUA6smr"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfDemVoteCounts.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\"]\n",
"dfDemVoteCounts=dfDemVoteCounts.transpose()\n",
"dfDemVoteCounts"
],
"metadata": {
"id": "Tgb1Qsus8s1k"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts=pd.concat([dfDemVoteCounts,dfRepVoteCounts],ignore_index=True)\n",
"dfTotalVoteCounts"
],
"metadata": {
"id": "UuVADO0w-y9E"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts=dfTotalVoteCounts.transpose()\n",
"dfTotalVoteCounts.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\",\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfTotalVoteCounts=dfTotalVoteCounts.transpose()\n",
"dfTotalVoteCounts"
],
"metadata": {
"id": "mKKcMewZ1vt-"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts=dfTotalVoteCounts.transpose()\n",
"dfTotalVoteCounts"
],
"metadata": {
"id": "WJN1uK7d2txh"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts['Vote Partisanship']=np.where(((dfTotalVoteCounts['DemYea']>33) & (dfTotalVoteCounts['RepNay']>33)) | ((dfTotalVoteCounts['DemNay']>33) & (dfTotalVoteCounts['RepYea']>33)),'Partisan','Bi-Partisan')\n",
"dfTotalVoteCounts"
],
"metadata": {
"id": "dEc2gK_C50GY"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#dfTotalVoteCounts=dfTotalVoteCounts.transpose()\n",
"dfTotalVoteCounts"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 361
},
"id": "Yl9ugR5rFxp2",
"outputId": "88f15646-edec-4f8f-887c-40f7bad0d78b"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" vote vote.1 vote.2 vote.3 vote.4 \\\n",
"DemYea 41.0 5.0 3.0 16.0 31.0 \n",
"DemNay 4.0 41.0 43.0 29.0 14.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 1.0 0.0 0.0 1.0 1.0 \n",
"RepYea 51.0 51.0 51.0 34.0 18.0 \n",
"RepNay 0.0 0.0 0.0 17.0 33.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 1.0 1.0 1.0 1.0 1.0 \n",
"Vote Partisanship Bi-Partisan Partisan Partisan Bi-Partisan Bi-Partisan \n",
"\n",
" vote.5 vote.6 vote.7 vote.8 vote.9 \\\n",
"DemYea 0.0 33.0 40.0 45.0 3.0 \n",
"DemNay 46.0 13.0 6.0 0.0 43.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 0.0 0.0 0.0 1.0 0.0 \n",
"RepYea 52.0 51.0 50.0 49.0 52.0 \n",
"RepNay 0.0 0.0 1.0 0.0 0.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 0.0 1.0 1.0 3.0 0.0 \n",
"Vote Partisanship Partisan Bi-Partisan Bi-Partisan Bi-Partisan Partisan \n",
"\n",
" ... vote.315 vote.316 vote.317 vote.318 vote.319 \\\n",
"DemYea ... 37.0 0.0 0.0 0.0 2.0 \n",
"DemNay ... 9.0 46.0 46.0 46.0 44.0 \n",
"DemPresent ... 0.0 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting ... 0.0 0.0 0.0 0.0 0.0 \n",
"RepYea ... 48.0 50.0 50.0 51.0 50.0 \n",
"RepNay ... 0.0 0.0 0.0 0.0 0.0 \n",
"RepPresent ... 0.0 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting ... 4.0 2.0 2.0 1.0 2.0 \n",
"Vote Partisanship ... Bi-Partisan Partisan Partisan Partisan Partisan \n",
"\n",
" vote.320 vote.321 vote.322 vote.323 \\\n",
"DemYea 46.0 0.0 37.0 36.0 \n",
"DemNay 0.0 46.0 9.0 10.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 0.0 0.0 0.0 0.0 \n",
"RepYea 49.0 50.0 50.0 48.0 \n",
"RepNay 2.0 1.0 1.0 1.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 1.0 1.0 1.0 3.0 \n",
"Vote Partisanship Bi-Partisan Partisan Bi-Partisan Bi-Partisan \n",
"\n",
" vote.324 \n",
"DemYea 16.0 \n",
"DemNay 29.0 \n",
"DemPresent 0.0 \n",
"DemNot-Voting 1.0 \n",
"RepYea 34.0 \n",
"RepNay 17.0 \n",
"RepPresent 0.0 \n",
"RepNot-Voting 1.0 \n",
"Vote Partisanship Bi-Partisan \n",
"\n",
"[9 rows x 325 columns]"
],
"text/html": [
"\n",
" <div id=\"df-6ce2f9a2-294d-43fc-956b-45c6aa18b604\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>vote</th>\n",
" <th>vote.1</th>\n",
" <th>vote.2</th>\n",
" <th>vote.3</th>\n",
" <th>vote.4</th>\n",
" <th>vote.5</th>\n",
" <th>vote.6</th>\n",
" <th>vote.7</th>\n",
" <th>vote.8</th>\n",
" <th>vote.9</th>\n",
" <th>...</th>\n",
" <th>vote.315</th>\n",
" <th>vote.316</th>\n",
" <th>vote.317</th>\n",
" <th>vote.318</th>\n",
" <th>vote.319</th>\n",
" <th>vote.320</th>\n",
" <th>vote.321</th>\n",
" <th>vote.322</th>\n",
" <th>vote.323</th>\n",
" <th>vote.324</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>DemYea</th>\n",
" <td>41.0</td>\n",
" <td>5.0</td>\n",
" <td>3.0</td>\n",
" <td>16.0</td>\n",
" <td>31.0</td>\n",
" <td>0.0</td>\n",
" <td>33.0</td>\n",
" <td>40.0</td>\n",
" <td>45.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>37.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>46.0</td>\n",
" <td>0.0</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>16.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemNay</th>\n",
" <td>4.0</td>\n",
" <td>41.0</td>\n",
" <td>43.0</td>\n",
" <td>29.0</td>\n",
" <td>14.0</td>\n",
" <td>46.0</td>\n",
" <td>13.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>43.0</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>46.0</td>\n",
" <td>46.0</td>\n",
" <td>46.0</td>\n",
" <td>44.0</td>\n",
" <td>0.0</td>\n",
" <td>46.0</td>\n",
" <td>9.0</td>\n",
" <td>10.0</td>\n",
" <td>29.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemPresent</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemNot-Voting</th>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepYea</th>\n",
" <td>51.0</td>\n",
" <td>51.0</td>\n",
" <td>51.0</td>\n",
" <td>34.0</td>\n",
" <td>18.0</td>\n",
" <td>52.0</td>\n",
" <td>51.0</td>\n",
" <td>50.0</td>\n",
" <td>49.0</td>\n",
" <td>52.0</td>\n",
" <td>...</td>\n",
" <td>48.0</td>\n",
" <td>50.0</td>\n",
" <td>50.0</td>\n",
" <td>51.0</td>\n",
" <td>50.0</td>\n",
" <td>49.0</td>\n",
" <td>50.0</td>\n",
" <td>50.0</td>\n",
" <td>48.0</td>\n",
" <td>34.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepNay</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>17.0</td>\n",
" <td>33.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepPresent</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepNot-Voting</th>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>4.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vote Partisanship</th>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>...</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>9 rows × 325 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-6ce2f9a2-294d-43fc-956b-45c6aa18b604')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-6ce2f9a2-294d-43fc-956b-45c6aa18b604 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-6ce2f9a2-294d-43fc-956b-45c6aa18b604');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 39
}
]
},
{
"cell_type": "code",
"source": [
""
],
"metadata": {
"id": "EJAhBN0S7udn"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# 2018DataWranging"
],
"metadata": {
"id": "0_2KUEEqGxOI"
}
},
{
"cell_type": "code",
"source": [
"df2018DropDistrict = df2018[df2018.columns.drop(list(df2018.filter(regex='district')))]\n",
"df2018DropPerson = df2018[df2018DropDistrict.columns.drop(list(df2018.filter(regex='person.')))]\n",
"df2018DropState = df2018[df2018DropPerson.columns.drop(list(df2018DropPerson.filter(regex='state.')))]\n",
"df2018DropName =df2018[df2018DropState.columns.drop(list(df2018.filter(regex='name.')))]\n",
"df2018JustVotes= df2018[df2018DropName.columns.drop(list(df2018.filter(regex='party.')))]\n",
"df2018JustVotes\n"
],
"metadata": {
"id": "rrjV5fFsHFPq"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2018RepublicanVotes= df2018JustVotes.loc[df2018JustVotes['party']=='Republican']\n",
"\n",
"df2018RepublicanVotes"
],
"metadata": {
"id": "k4R5cgltHFNJ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2018RepublicanJustVotes=df2018RepublicanVotes.drop(['person','state','name','party'],axis=1)\n",
"df2018RepublicanJustVotes\n",
"dfRepVoteCounts18=df2018RepublicanJustVotes.apply(pd.Series.value_counts)\n",
"dfRepVoteCounts18"
],
"metadata": {
"id": "FHhByLbbHFKw"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts18=dfRepVoteCounts18.fillna(0)\n",
"dfRepVoteCounts18=dfRepVoteCounts18.reindex(['Yea','Nay','Present','Not Voting'])\n",
"dfRepVoteCounts18\n",
" "
],
"metadata": {
"id": "gBAxhuAJHFIP"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts18=dfRepVoteCounts18.transpose()\n",
"dfRepVoteCounts18.columns=[\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfRepVoteCounts18=dfRepVoteCounts18.transpose()\n",
"dfRepVoteCounts18"
],
"metadata": {
"id": "rEtDxqiZHFF5"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2018DemocratVotes= df2018JustVotes.loc[df2018JustVotes['party']=='Democrat']\n",
"df2018DemocratVotes\n",
"df2018DemocratJustVotes=df2018DemocratVotes.drop(['person','state','name','party'],axis=1)\n",
"df2018DemocratJustVotes\n",
"dfDemVoteCounts18=df2018DemocratJustVotes.apply(pd.Series.value_counts)\n",
"dfDemVoteCounts18=dfDemVoteCounts18.fillna(0)\n",
"dfDemVoteCounts18=dfDemVoteCounts18.reindex(['Yea','Nay','Present','Not Voting'])"
],
"metadata": {
"id": "HCHz8a0IHFC1"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfDemVoteCounts18=dfDemVoteCounts18.transpose()\n",
"dfDemVoteCounts18.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\"]\n",
"dfDemVoteCounts18=dfDemVoteCounts18.transpose()\n",
"dfDemVoteCounts18\n"
],
"metadata": {
"id": "R7rMKwHxHE_0"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts18=pd.concat([dfDemVoteCounts18,dfRepVoteCounts18],ignore_index=True)\n",
"dfTotalVoteCounts18"
],
"metadata": {
"id": "jKsxlXBCHE4Q"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts18=dfTotalVoteCounts18.transpose()\n",
"dfTotalVoteCounts18.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\",\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfTotalVoteCounts18=dfTotalVoteCounts18.transpose()\n",
"dfTotalVoteCounts18=dfTotalVoteCounts18.fillna(0)\n"
],
"metadata": {
"id": "7akDXFJ1HEke"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts18"
],
"metadata": {
"id": "exnJZ7m6Ne0d"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts18=dfTotalVoteCounts18.transpose()\n",
"dfTotalVoteCounts18['Vote Partisanship']=np.where(((dfTotalVoteCounts18['DemYea']>33) & (dfTotalVoteCounts18['RepNay']>33)) | ((dfTotalVoteCounts18['DemNay']>33) & (dfTotalVoteCounts18['RepYea']>33)),'Partisan','Bi-Partisan')\n",
"dfTotalVoteCounts18=dfTotalVoteCounts18.transpose()\n",
"dfTotalVoteCounts18"
],
"metadata": {
"id": "cRMGfnKNNDAA"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# 2019DataWrangling\n",
"\n"
],
"metadata": {
"id": "UN8fFJVSG0hg"
}
},
{
"cell_type": "code",
"source": [
"df2019DropDistrict = df2019[df2019.columns.drop(list(df2019.filter(regex='district')))]\n",
"df2019DropPerson = df2019[df2019DropDistrict.columns.drop(list(df2019.filter(regex='person.')))]\n",
"df2019DropState = df2019[df2019DropPerson.columns.drop(list(df2019DropPerson.filter(regex='state.')))]\n",
"df2019DropName =df2019[df2019DropState.columns.drop(list(df2019.filter(regex='name.')))]\n",
"df2019JustVotes= df2019[df2019DropName.columns.drop(list(df2019.filter(regex='party.')))]\n",
"df2019JustVotes"
],
"metadata": {
"id": "6YwdytthPXPw"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2019RepublicanVotes= df2019JustVotes.loc[df2019JustVotes['party']=='Republican']\n",
"df2019RepublicanJustVotes=df2019RepublicanVotes.drop(['person','state','name','party'],axis=1)\n",
"df2019RepublicanJustVotes\n",
"dfRepVoteCounts19=df2019RepublicanJustVotes.apply(pd.Series.value_counts)\n",
"dfRepVoteCounts19\n",
"dfRepVoteCounts19=dfRepVoteCounts19.fillna(0)\n",
"dfRepVoteCounts19=dfRepVoteCounts19.reindex(['Yea','Nay','Present','Not Voting'])\n",
"dfRepVoteCounts19\n",
" "
],
"metadata": {
"id": "Z00bWTokPXNA"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts19=dfRepVoteCounts19.transpose()\n",
"dfRepVoteCounts19.columns=[\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfRepVoteCounts19=dfRepVoteCounts19.transpose()\n",
"dfRepVoteCounts19=dfRepVoteCounts19.fillna(0)"
],
"metadata": {
"id": "bu_QnikTR-vS"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2019DemocratVotes= df2019JustVotes.loc[df2019JustVotes['party']=='Democrat']\n",
"df2019DemocratVotes\n",
"df2019DemocratJustVotes=df2019DemocratVotes.drop(['person','state','name','party'],axis=1)\n",
"df2019DemocratJustVotes\n",
"dfDemVoteCounts19=df2019DemocratJustVotes.apply(pd.Series.value_counts)\n",
"dfDemVoteCounts19=dfDemVoteCounts19.fillna(0)\n",
"dfDemVoteCounts19=dfDemVoteCounts19.reindex(['Yea','Nay','Present','Not Voting'])"
],
"metadata": {
"id": "LgXkp0kJSYpd"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfDemVoteCounts19=dfDemVoteCounts19.transpose()\n",
"dfDemVoteCounts19.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\"]\n",
"dfDemVoteCounts19=dfDemVoteCounts19.transpose()\n",
"dfTotalVoteCounts19=pd.concat([dfDemVoteCounts19,dfRepVoteCounts19],ignore_index=True)\n",
"dfDemVoteCounts19\n",
"\n"
],
"metadata": {
"id": "L0m8hpapPXJn"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts19=pd.concat([dfDemVoteCounts19,dfRepVoteCounts19],ignore_index=True)\n",
"dfTotalVoteCounts19=dfTotalVoteCounts19.transpose()\n",
"dfTotalVoteCounts19.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\",\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfTotalVoteCounts19=dfTotalVoteCounts19.transpose()\n",
"dfTotalVoteCounts19=dfTotalVoteCounts19.fillna(0)\n",
"\n"
],
"metadata": {
"id": "xqSVVF5pPXGy"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts19=dfTotalVoteCounts19.transpose()\n",
"dfTotalVoteCounts19['Vote Partisanship']=np.where(((dfTotalVoteCounts19['DemYea']>33) & (dfTotalVoteCounts19['RepNay']>33)) | ((dfTotalVoteCounts19['DemNay']>33) & (dfTotalVoteCounts19['RepYea']>33)),'Partisan','Bi-Partisan')\n",
"dfTotalVoteCounts19=dfTotalVoteCounts19.transpose()\n",
"dfTotalVoteCounts19"
],
"metadata": {
"id": "6CcTF4cJPXEM"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"#2020DataWrangling"
],
"metadata": {
"id": "HfhtQlmcG59k"
}
},
{
"cell_type": "code",
"source": [
"df2020DropDistrict = df2020[df2020.columns.drop(list(df2020.filter(regex='district')))]\n",
"df2020DropPerson = df2020[df2020DropDistrict.columns.drop(list(df2020.filter(regex='person.')))]\n",
"df2020DropState = df2020[df2020DropPerson.columns.drop(list(df2020DropPerson.filter(regex='state.')))]\n",
"df2020DropName =df2020[df2020DropState.columns.drop(list(df2020.filter(regex='name.')))]\n",
"df2020JustVotes= df2020[df2020DropName.columns.drop(list(df2020.filter(regex='party.')))]\n",
"df2020JustVotes"
],
"metadata": {
"id": "jAM_OjaMTl_b"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2020RepublicanVotes= df2020JustVotes.loc[df2020JustVotes['party']=='Republican']\n",
"df2020RepublicanJustVotes=df2020RepublicanVotes.drop(['person','state','name','party'],axis=1)\n",
"df2020RepublicanJustVotes\n",
"dfRepVoteCounts20=df2020RepublicanJustVotes.apply(pd.Series.value_counts)\n",
"dfRepVoteCounts20=dfRepVoteCounts20=dfRepVoteCounts20.fillna(0)\n",
"dfRepVoteCounts20=dfRepVoteCounts20.reindex(['Yea','Nay','Present','Not Voting'])\n",
"dfRepVoteCounts20"
],
"metadata": {
"id": "gO96lmmgTlug"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts20=dfRepVoteCounts20.transpose()\n",
"dfRepVoteCounts20.columns=[\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfRepVoteCounts20=dfRepVoteCounts20.transpose()\n",
"dfRepVoteCounts20=dfRepVoteCounts20.fillna(0)"
],
"metadata": {
"id": "cMjFlh56TlsG"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2020DemocratVotes= df2020JustVotes.loc[df2020JustVotes['party']=='Democrat']\n",
"df2020DemocratVotes\n",
"df2020DemocratJustVotes=df2020DemocratVotes.drop(['person','state','name','party'],axis=1)\n",
"df2020DemocratJustVotes\n",
"dfDemVoteCounts20=df2020DemocratJustVotes.apply(pd.Series.value_counts)\n",
"dfDemVoteCounts20=dfDemVoteCounts20.fillna(0)\n",
"dfDemVoteCounts20=dfDemVoteCounts20.reindex(['Yea','Nay','Present','Not Voting'])\n",
"\n",
"dfDemVoteCounts20=dfDemVoteCounts20.transpose()\n",
"dfDemVoteCounts20.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\"]\n",
"dfDemVoteCounts20=dfDemVoteCounts20.transpose()\n",
"dfTotalVoteCounts20=pd.concat([dfDemVoteCounts20,dfRepVoteCounts20],ignore_index=True)\n",
"dfDemVoteCounts20"
],
"metadata": {
"id": "4GmhI4ykTlpa"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts20=pd.concat([dfDemVoteCounts20,dfRepVoteCounts20],ignore_index=True)\n",
"dfTotalVoteCounts20=dfTotalVoteCounts20.transpose()\n",
"dfTotalVoteCounts20.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\",\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfTotalVoteCounts20=dfTotalVoteCounts20.transpose()\n",
"dfTotalVoteCounts20=dfTotalVoteCounts20.fillna(0)\n",
"\n",
"dfTotalVoteCounts20=dfTotalVoteCounts20.transpose()\n",
"dfTotalVoteCounts20['Vote Partisanship']=np.where(((dfTotalVoteCounts20['DemYea']>33) & (dfTotalVoteCounts20['RepNay']>33)) | ((dfTotalVoteCounts20['DemNay']>33) & (dfTotalVoteCounts20['RepYea']>33)),'Partisan','Bi-Partisan')\n",
"dfTotalVoteCounts20=dfTotalVoteCounts20.transpose()\n",
"dfTotalVoteCounts20"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 361
},
"id": "_L9ylJKhTlnE",
"outputId": "9ff25669-3792-41b7-f226-f607451767b1"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" vote vote.1 vote.2 vote.3 vote.4 \\\n",
"DemYea 0.0 44.0 25.0 34.0 0.0 \n",
"DemNay 44.0 0.0 18.0 6.0 45.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 1.0 1.0 2.0 5.0 0.0 \n",
"RepYea 52.0 53.0 53.0 48.0 53.0 \n",
"RepNay 1.0 0.0 0.0 0.0 0.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 0.0 0.0 0.0 5.0 0.0 \n",
"Vote Partisanship Partisan Bi-Partisan Bi-Partisan Bi-Partisan Partisan \n",
"\n",
" vote.5 vote.6 vote.7 vote.8 vote.9 ... \\\n",
"DemYea 0.0 0.0 44.0 0.0 45.0 ... \n",
"DemNay 44.0 38.0 0.0 44.0 0.0 ... \n",
"DemPresent 0.0 0.0 0.0 0.0 0.0 ... \n",
"DemNot-Voting 1.0 7.0 1.0 1.0 0.0 ... \n",
"RepYea 52.0 47.0 7.0 52.0 9.0 ... \n",
"RepNay 0.0 2.0 42.0 0.0 41.0 ... \n",
"RepPresent 0.0 0.0 0.0 0.0 0.0 ... \n",
"RepNot-Voting 1.0 4.0 4.0 1.0 3.0 ... \n",
"Vote Partisanship Partisan Partisan Partisan Partisan Partisan ... \n",
"\n",
" vote.282 vote.283 vote.284 vote.285 vote.286 \\\n",
"DemYea 41.0 42.0 2.0 3.0 42.0 \n",
"DemNay 1.0 1.0 41.0 40.0 0.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 3.0 2.0 2.0 2.0 3.0 \n",
"RepYea 48.0 53.0 51.0 53.0 53.0 \n",
"RepNay 3.0 0.0 2.0 0.0 0.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 2.0 0.0 0.0 0.0 0.0 \n",
"Vote Partisanship Bi-Partisan Bi-Partisan Partisan Partisan Bi-Partisan \n",
"\n",
" vote.287 vote.288 vote.289 vote.290 \\\n",
"DemYea 40.0 5.0 43.0 37.0 \n",
"DemNay 1.0 38.0 0.0 5.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 4.0 2.0 2.0 3.0 \n",
"RepYea 47.0 53.0 53.0 53.0 \n",
"RepNay 0.0 0.0 0.0 0.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 6.0 0.0 0.0 0.0 \n",
"Vote Partisanship Bi-Partisan Partisan Bi-Partisan Bi-Partisan \n",
"\n",
" vote.291 \n",
"DemYea 35.0 \n",
"DemNay 3.0 \n",
"DemPresent 0.0 \n",
"DemNot-Voting 7.0 \n",
"RepYea 49.0 \n",
"RepNay 0.0 \n",
"RepPresent 0.0 \n",
"RepNot-Voting 4.0 \n",
"Vote Partisanship Bi-Partisan \n",
"\n",
"[9 rows x 292 columns]"
],
"text/html": [
"\n",
" <div id=\"df-0698cfb3-2ac2-49f1-974e-ec019ccc71bc\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>vote</th>\n",
" <th>vote.1</th>\n",
" <th>vote.2</th>\n",
" <th>vote.3</th>\n",
" <th>vote.4</th>\n",
" <th>vote.5</th>\n",
" <th>vote.6</th>\n",
" <th>vote.7</th>\n",
" <th>vote.8</th>\n",
" <th>vote.9</th>\n",
" <th>...</th>\n",
" <th>vote.282</th>\n",
" <th>vote.283</th>\n",
" <th>vote.284</th>\n",
" <th>vote.285</th>\n",
" <th>vote.286</th>\n",
" <th>vote.287</th>\n",
" <th>vote.288</th>\n",
" <th>vote.289</th>\n",
" <th>vote.290</th>\n",
" <th>vote.291</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>DemYea</th>\n",
" <td>0.0</td>\n",
" <td>44.0</td>\n",
" <td>25.0</td>\n",
" <td>34.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>44.0</td>\n",
" <td>0.0</td>\n",
" <td>45.0</td>\n",
" <td>...</td>\n",
" <td>41.0</td>\n",
" <td>42.0</td>\n",
" <td>2.0</td>\n",
" <td>3.0</td>\n",
" <td>42.0</td>\n",
" <td>40.0</td>\n",
" <td>5.0</td>\n",
" <td>43.0</td>\n",
" <td>37.0</td>\n",
" <td>35.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemNay</th>\n",
" <td>44.0</td>\n",
" <td>0.0</td>\n",
" <td>18.0</td>\n",
" <td>6.0</td>\n",
" <td>45.0</td>\n",
" <td>44.0</td>\n",
" <td>38.0</td>\n",
" <td>0.0</td>\n",
" <td>44.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>41.0</td>\n",
" <td>40.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>38.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemPresent</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemNot-Voting</th>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>7.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>3.0</td>\n",
" <td>4.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>3.0</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepYea</th>\n",
" <td>52.0</td>\n",
" <td>53.0</td>\n",
" <td>53.0</td>\n",
" <td>48.0</td>\n",
" <td>53.0</td>\n",
" <td>52.0</td>\n",
" <td>47.0</td>\n",
" <td>7.0</td>\n",
" <td>52.0</td>\n",
" <td>9.0</td>\n",
" <td>...</td>\n",
" <td>48.0</td>\n",
" <td>53.0</td>\n",
" <td>51.0</td>\n",
" <td>53.0</td>\n",
" <td>53.0</td>\n",
" <td>47.0</td>\n",
" <td>53.0</td>\n",
" <td>53.0</td>\n",
" <td>53.0</td>\n",
" <td>49.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepNay</th>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>42.0</td>\n",
" <td>0.0</td>\n",
" <td>41.0</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepPresent</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepNot-Voting</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>4.0</td>\n",
" <td>4.0</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vote Partisanship</th>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>...</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>9 rows × 292 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0698cfb3-2ac2-49f1-974e-ec019ccc71bc')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-0698cfb3-2ac2-49f1-974e-ec019ccc71bc button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-0698cfb3-2ac2-49f1-974e-ec019ccc71bc');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 80
}
]
},
{
"cell_type": "markdown",
"source": [
"# 2021DataWrangling"
],
"metadata": {
"id": "0ZPWYLNSG-Lg"
}
},
{
"cell_type": "code",
"source": [
"df2021DropDistrict = df2021[df2021.columns.drop(list(df2021.filter(regex='district')))]\n",
"df2021DropPerson = df2021[df2021DropDistrict.columns.drop(list(df2021.filter(regex='person.')))]\n",
"df2021DropState = df2021[df2021DropPerson.columns.drop(list(df2021DropPerson.filter(regex='state.')))]\n",
"df2021DropName =df2021[df2021DropState.columns.drop(list(df2021.filter(regex='name.')))]\n",
"df2021JustVotes= df2021[df2021DropName.columns.drop(list(df2021.filter(regex='party.')))]\n",
"df2021JustVotes"
],
"metadata": {
"id": "5IJhrEh2X4zQ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2021RepublicanVotes= df2021JustVotes.loc[df2021JustVotes['party']=='Republican']\n",
"df2021RepublicanJustVotes=df2021RepublicanVotes.drop(['person','state','name','party'],axis=1)\n",
"df2021RepublicanJustVotes\n",
"dfRepVoteCounts21=df2021RepublicanJustVotes.apply(pd.Series.value_counts)\n",
"dfRepVoteCounts21=dfRepVoteCounts21=dfRepVoteCounts21.fillna(0)\n",
"dfRepVoteCounts21=dfRepVoteCounts21.reindex(['Yea','Nay','Present','Not Voting'])\n",
"dfRepVoteCounts21"
],
"metadata": {
"id": "f1llBY9RX5CM"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfRepVoteCounts21=dfRepVoteCounts21.transpose()\n",
"dfRepVoteCounts21.columns=[\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfRepVoteCounts21=dfRepVoteCounts21.transpose()\n",
"dfRepVoteCounts21=dfRepVoteCounts21.fillna(0)"
],
"metadata": {
"id": "pTJqdpa-X44M"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2021DemocratVotes= df2021JustVotes.loc[df2021JustVotes['party']=='Democrat']\n",
"df2021DemocratVotes\n",
"df2021DemocratJustVotes=df2021DemocratVotes.drop(['person','state','name','party'],axis=1)\n",
"df2021DemocratJustVotes\n",
"dfDemVoteCounts21=df2021DemocratJustVotes.apply(pd.Series.value_counts)\n",
"dfDemVoteCounts21=dfDemVoteCounts21.fillna(0)\n",
"dfDemVoteCounts21=dfDemVoteCounts21.reindex(['Yea','Nay','Present','Not Voting'])\n",
"\n",
"dfDemVoteCounts21=dfDemVoteCounts21.transpose()\n",
"dfDemVoteCounts21.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\"]\n",
"dfDemVoteCounts21=dfDemVoteCounts21.transpose()\n",
"dfTotalVoteCounts21=pd.concat([dfDemVoteCounts21,dfRepVoteCounts21],ignore_index=True)\n",
"dfDemVoteCounts21"
],
"metadata": {
"id": "f5e9DElMY1y_"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts21=pd.concat([dfDemVoteCounts21,dfRepVoteCounts21],ignore_index=True)\n",
"dfTotalVoteCounts21=dfTotalVoteCounts21.transpose()\n",
"dfTotalVoteCounts21.columns=[\"DemYea\",\"DemNay\",\"DemPresent\",\"DemNot-Voting\",\"RepYea\",\"RepNay\",\"RepPresent\",\"RepNot-Voting\"]\n",
"dfTotalVoteCounts21=dfTotalVoteCounts21.transpose()\n",
"dfTotalVoteCounts21=dfTotalVoteCounts21.fillna(0)\n",
"\n",
"dfTotalVoteCounts21=dfTotalVoteCounts21.transpose()\n",
"dfTotalVoteCounts21['Vote Partisanship']=np.where(((dfTotalVoteCounts21['DemYea']>33) & (dfTotalVoteCounts21['RepNay']>33)) | ((dfTotalVoteCounts21['DemNay']>33) & (dfTotalVoteCounts21['RepYea']>33)),'Partisan','Bi-Partisan')\n",
"dfTotalVoteCounts21=dfTotalVoteCounts21.transpose()\n",
"dfTotalVoteCounts21"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 361
},
"id": "FWzUsgrVY1l0",
"outputId": "4e8671b9-9170-453c-b3a3-e54040489784"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" vote vote.1 vote.2 vote.3 vote.4 \\\n",
"DemYea 48.0 48.0 48.0 47.0 48.0 \n",
"DemNay 0.0 0.0 0.0 0.0 0.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 0.0 0.0 0.0 1.0 0.0 \n",
"RepYea 40.0 7.0 0.0 49.0 6.0 \n",
"RepNay 10.0 43.0 49.0 0.0 43.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 0.0 0.0 1.0 1.0 1.0 \n",
"Vote Partisanship Bi-Partisan Partisan Partisan Bi-Partisan Partisan \n",
"\n",
" vote.5 vote.6 vote.7 vote.8 vote.9 \\\n",
"DemYea 47.0 47.0 47.0 47.0 47.0 \n",
"DemNay 0.0 0.0 0.0 0.0 0.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 1.0 1.0 1.0 1.0 1.0 \n",
"RepYea 31.0 1.0 50.0 32.0 1.0 \n",
"RepNay 18.0 49.0 0.0 17.0 49.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 1.0 0.0 0.0 1.0 0.0 \n",
"Vote Partisanship Bi-Partisan Partisan Bi-Partisan Bi-Partisan Partisan \n",
"\n",
" ... vote.390 vote.391 vote.392 vote.393 \\\n",
"DemYea ... 48.0 48.0 48.0 48.0 \n",
"DemNay ... 0.0 0.0 0.0 0.0 \n",
"DemPresent ... 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting ... 0.0 0.0 0.0 0.0 \n",
"RepYea ... 14.0 28.0 44.0 14.0 \n",
"RepNay ... 35.0 22.0 5.0 33.0 \n",
"RepPresent ... 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting ... 1.0 0.0 1.0 3.0 \n",
"Vote Partisanship ... Partisan Bi-Partisan Bi-Partisan Bi-Partisan \n",
"\n",
" vote.394 vote.395 vote.396 vote.397 \\\n",
"DemYea 48.0 48.0 47.0 47.0 \n",
"DemNay 0.0 0.0 0.0 0.0 \n",
"DemPresent 0.0 0.0 0.0 0.0 \n",
"DemNot-Voting 0.0 0.0 1.0 1.0 \n",
"RepYea 34.0 16.0 18.0 29.0 \n",
"RepNay 15.0 32.0 32.0 21.0 \n",
"RepPresent 0.0 0.0 0.0 0.0 \n",
"RepNot-Voting 1.0 2.0 0.0 0.0 \n",
"Vote Partisanship Bi-Partisan Bi-Partisan Bi-Partisan Bi-Partisan \n",
"\n",
" vote.398 vote.399 \n",
"DemYea 43.0 48.0 \n",
"DemNay 5.0 0.0 \n",
"DemPresent 0.0 0.0 \n",
"DemNot-Voting 0.0 0.0 \n",
"RepYea 5.0 45.0 \n",
"RepNay 45.0 4.0 \n",
"RepPresent 0.0 0.0 \n",
"RepNot-Voting 0.0 1.0 \n",
"Vote Partisanship Partisan Bi-Partisan \n",
"\n",
"[9 rows x 400 columns]"
],
"text/html": [
"\n",
" <div id=\"df-2c66656d-40e0-4de7-86cc-69a8e2992da5\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>vote</th>\n",
" <th>vote.1</th>\n",
" <th>vote.2</th>\n",
" <th>vote.3</th>\n",
" <th>vote.4</th>\n",
" <th>vote.5</th>\n",
" <th>vote.6</th>\n",
" <th>vote.7</th>\n",
" <th>vote.8</th>\n",
" <th>vote.9</th>\n",
" <th>...</th>\n",
" <th>vote.390</th>\n",
" <th>vote.391</th>\n",
" <th>vote.392</th>\n",
" <th>vote.393</th>\n",
" <th>vote.394</th>\n",
" <th>vote.395</th>\n",
" <th>vote.396</th>\n",
" <th>vote.397</th>\n",
" <th>vote.398</th>\n",
" <th>vote.399</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>DemYea</th>\n",
" <td>48.0</td>\n",
" <td>48.0</td>\n",
" <td>48.0</td>\n",
" <td>47.0</td>\n",
" <td>48.0</td>\n",
" <td>47.0</td>\n",
" <td>47.0</td>\n",
" <td>47.0</td>\n",
" <td>47.0</td>\n",
" <td>47.0</td>\n",
" <td>...</td>\n",
" <td>48.0</td>\n",
" <td>48.0</td>\n",
" <td>48.0</td>\n",
" <td>48.0</td>\n",
" <td>48.0</td>\n",
" <td>48.0</td>\n",
" <td>47.0</td>\n",
" <td>47.0</td>\n",
" <td>43.0</td>\n",
" <td>48.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemNay</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemPresent</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DemNot-Voting</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepYea</th>\n",
" <td>40.0</td>\n",
" <td>7.0</td>\n",
" <td>0.0</td>\n",
" <td>49.0</td>\n",
" <td>6.0</td>\n",
" <td>31.0</td>\n",
" <td>1.0</td>\n",
" <td>50.0</td>\n",
" <td>32.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>14.0</td>\n",
" <td>28.0</td>\n",
" <td>44.0</td>\n",
" <td>14.0</td>\n",
" <td>34.0</td>\n",
" <td>16.0</td>\n",
" <td>18.0</td>\n",
" <td>29.0</td>\n",
" <td>5.0</td>\n",
" <td>45.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepNay</th>\n",
" <td>10.0</td>\n",
" <td>43.0</td>\n",
" <td>49.0</td>\n",
" <td>0.0</td>\n",
" <td>43.0</td>\n",
" <td>18.0</td>\n",
" <td>49.0</td>\n",
" <td>0.0</td>\n",
" <td>17.0</td>\n",
" <td>49.0</td>\n",
" <td>...</td>\n",
" <td>35.0</td>\n",
" <td>22.0</td>\n",
" <td>5.0</td>\n",
" <td>33.0</td>\n",
" <td>15.0</td>\n",
" <td>32.0</td>\n",
" <td>32.0</td>\n",
" <td>21.0</td>\n",
" <td>45.0</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepPresent</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RepNot-Voting</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vote Partisanship</th>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>...</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" <td>Partisan</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>9 rows × 400 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2c66656d-40e0-4de7-86cc-69a8e2992da5')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-2c66656d-40e0-4de7-86cc-69a8e2992da5 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-2c66656d-40e0-4de7-86cc-69a8e2992da5');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 79
}
]
},
{
"cell_type": "code",
"source": [
""
],
"metadata": {
"id": "9Tsj-aWfY1gZ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# EDA: Partisanship analysis"
],
"metadata": {
"id": "x1qdaVNKbB-x"
}
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "fe1QKzfSbIY-",
"outputId": "ad348edc-91ca-439e-f720-7c8947007339"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" DemYea DemNay DemPresent DemNot-Voting RepYea RepNay RepPresent \\\n",
"vote 41.0 4.0 0.0 1.0 51.0 0.0 0.0 \n",
"vote.1 5.0 41.0 0.0 0.0 51.0 0.0 0.0 \n",
"vote.2 3.0 43.0 0.0 0.0 51.0 0.0 0.0 \n",
"vote.3 16.0 29.0 0.0 1.0 34.0 17.0 0.0 \n",
"vote.4 31.0 14.0 0.0 1.0 18.0 33.0 0.0 \n",
"... ... ... ... ... ... ... ... \n",
"vote.320 46.0 0.0 0.0 0.0 49.0 2.0 0.0 \n",
"vote.321 0.0 46.0 0.0 0.0 50.0 1.0 0.0 \n",
"vote.322 37.0 9.0 0.0 0.0 50.0 1.0 0.0 \n",
"vote.323 36.0 10.0 0.0 0.0 48.0 1.0 0.0 \n",
"vote.324 16.0 29.0 0.0 1.0 34.0 17.0 0.0 \n",
"\n",
" RepNot-Voting Vote Partisanship \n",
"vote 1.0 Bi-Partisan \n",
"vote.1 1.0 Partisan \n",
"vote.2 1.0 Partisan \n",
"vote.3 1.0 Bi-Partisan \n",
"vote.4 1.0 Bi-Partisan \n",
"... ... ... \n",
"vote.320 1.0 Bi-Partisan \n",
"vote.321 1.0 Partisan \n",
"vote.322 1.0 Bi-Partisan \n",
"vote.323 3.0 Bi-Partisan \n",
"vote.324 1.0 Bi-Partisan \n",
"\n",
"[325 rows x 9 columns]"
],
"text/html": [
"\n",
" <div id=\"df-da151afd-e1d4-4b03-bc46-c4255fea3563\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>DemYea</th>\n",
" <th>DemNay</th>\n",
" <th>DemPresent</th>\n",
" <th>DemNot-Voting</th>\n",
" <th>RepYea</th>\n",
" <th>RepNay</th>\n",
" <th>RepPresent</th>\n",
" <th>RepNot-Voting</th>\n",
" <th>Vote Partisanship</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>vote</th>\n",
" <td>41.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>51.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.1</th>\n",
" <td>5.0</td>\n",
" <td>41.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>51.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.2</th>\n",
" <td>3.0</td>\n",
" <td>43.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>51.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.3</th>\n",
" <td>16.0</td>\n",
" <td>29.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>34.0</td>\n",
" <td>17.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.4</th>\n",
" <td>31.0</td>\n",
" <td>14.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>18.0</td>\n",
" <td>33.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.320</th>\n",
" <td>46.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>49.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.321</th>\n",
" <td>0.0</td>\n",
" <td>46.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>50.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.322</th>\n",
" <td>37.0</td>\n",
" <td>9.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>50.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.323</th>\n",
" <td>36.0</td>\n",
" <td>10.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>48.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>vote.324</th>\n",
" <td>16.0</td>\n",
" <td>29.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>34.0</td>\n",
" <td>17.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>Bi-Partisan</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>325 rows × 9 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-da151afd-e1d4-4b03-bc46-c4255fea3563')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-da151afd-e1d4-4b03-bc46-c4255fea3563 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-da151afd-e1d4-4b03-bc46-c4255fea3563');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 81
}
]
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts['Vote Partisanship'].value_counts(normalize=True)*100"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "25NWgLfOfQyP",
"outputId": "7f94cdcf-7eb3-4f06-8f28-7c661d4749a9"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Bi-Partisan 51.692308\n",
"Partisan 48.307692\n",
"Name: Vote Partisanship, dtype: float64"
]
},
"metadata": {},
"execution_count": 89
}
]
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts18"
],
"metadata": {
"id": "mCg_vHNLbQew"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts18['Vote Partisanship'].value_counts(normalize=True)*100"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "FNjfXANJgmRW",
"outputId": "64696966-c761-413d-d2a6-4c48216a0fa6"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Bi-Partisan 69.708029\n",
"Partisan 30.291971\n",
"Name: Vote Partisanship, dtype: float64"
]
},
"metadata": {},
"execution_count": 92
}
]
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts19"
],
"metadata": {
"id": "ou_C3se1bS7S"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts19['Vote Partisanship'].value_counts(normalize=True)*100"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YI_YKuhSgyU3",
"outputId": "852bd544-68b5-4e18-a5fb-c472c674a407"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Bi-Partisan 57.943925\n",
"Partisan 42.056075\n",
"Name: Vote Partisanship, dtype: float64"
]
},
"metadata": {},
"execution_count": 95
}
]
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts20"
],
"metadata": {
"id": "X1CwV8K_bV20"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts20['Vote Partisanship'].value_counts(normalize=True)*100"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ixJKyXx5hHyT",
"outputId": "24e19c18-de08-4cdd-8197-f583c199a778"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Partisan 54.109589\n",
"Bi-Partisan 45.890411\n",
"Name: Vote Partisanship, dtype: float64"
]
},
"metadata": {},
"execution_count": 98
}
]
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts21"
],
"metadata": {
"id": "ZhiwnUbrbYKE"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfTotalVoteCounts21['Vote Partisanship'].value_counts(normalize=True)*100"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1SWzlxP3hZmV",
"outputId": "7848fc79-44a5-4774-dc2e-f53c549d3f47"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Partisan 62.75\n",
"Bi-Partisan 37.25\n",
"Name: Vote Partisanship, dtype: float64"
]
},
"metadata": {},
"execution_count": 102
}
]
},
{
"cell_type": "markdown",
"source": [
"\n",
"\n",
"* Find if votes tend to get more or less partisan as we got closer to the 2020 election\n",
"\n",
"\n"
],
"metadata": {
"id": "MRSvdPwucXJ6"
}
},
{
"cell_type": "code",
"source": [
"partisanData = {'% of votes that are Partisan':[48.30769,30.291971,42.056075,54.109589,62.75],\n",
" 'Year':[2017,2018,2019,2020,2021]}\n",
"dfPartisanPercents = pd.DataFrame(partisanData)"
],
"metadata": {
"id": "57r757DfcQLS"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"dfPartisanPercents"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "KGshw9AEnCv_",
"outputId": "514dab86-6b17-48f8-8713-3142777126be"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" % of votes that are Partisan Year\n",
"0 48.307690 2017\n",
"1 30.291971 2018\n",
"2 42.056075 2019\n",
"3 54.109589 2020\n",
"4 62.750000 2021"
],
"text/html": [
"\n",
" <div id=\"df-3ba3d0b8-386b-413c-b144-299091151e4a\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>% of votes that are Partisan</th>\n",
" <th>Year</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>48.307690</td>\n",
" <td>2017</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>30.291971</td>\n",
" <td>2018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>42.056075</td>\n",
" <td>2019</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>54.109589</td>\n",
" <td>2020</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>62.750000</td>\n",
" <td>2021</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3ba3d0b8-386b-413c-b144-299091151e4a')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-3ba3d0b8-386b-413c-b144-299091151e4a button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-3ba3d0b8-386b-413c-b144-299091151e4a');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 108
}
]
},
{
"cell_type": "code",
"source": [
"dfPartisanPercents.plot.line(x='Year',y='% of votes that are Partisan',)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 296
},
"id": "liNsQySupabP",
"outputId": "a07039ba-ca04-41f2-f217-f90d926e0fa6"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ff521cd8150>"
]
},
"metadata": {},
"execution_count": 112
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
}
]
}