Browse Source

Merge pull request 'kc-covid19-zipcode' (#2) from kc-covid19-zipcode into main

Reviewed-on: http://git.prasket.net/prasket/api.seattlematrix.org/pulls/2
main
prasket 2 months ago
parent
commit
1ae526be61
17 changed files with 487 additions and 42 deletions
  1. +4
    -2
      .gitignore
  2. +1
    -0
      Pipfile
  3. +75
    -1
      Pipfile.lock
  4. +31
    -3
      README.md
  5. +46
    -0
      api.py
  6. +0
    -19
      create_covid-19_zip.py
  7. +12
    -0
      creds_sample.py
  8. +30
    -0
      database/create_covid-19_zip.py
  9. +33
    -0
      database/load_db.py
  10. BIN
      database/source_data/covid-19.xlsx
  11. +85
    -0
      database/source_data/covid-19_20200810_zip.csv
  12. +85
    -0
      database/source_data/covid-19_20200824_zip.csv
  13. +85
    -0
      database/source_data/covid-19_20200831_zip.csv
  14. BIN
      database/source_data/covid-data-extract-geography-august-10.xlsx
  15. BIN
      database/source_data/covid-data-extract-geography-august-24.xlsx
  16. BIN
      database/source_data/covid-data-extract-geography-august-31.xlsx
  17. +0
    -17
      load_db.py

+ 4
- 2
.gitignore View File

@@ -1,2 +1,4 @@
covid-19*
.vscode
.vscode
test.py
output
creds.py

+ 1
- 0
Pipfile View File

@@ -8,6 +8,7 @@ pylint = "*"

[packages]
psycopg2 = "*"
flask = "*"

[requires]
python_version = "3.7"

+ 75
- 1
Pipfile.lock View File

@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "1a8d864dbfc9670ef3ce2ec28f3f174da0bdeab89a4c79c12b5aa9486b8770ef"
"sha256": "da16bb60c1de007d8f94358351fd693711e6cabca5199ddb2b0c14d9da227c5a"
},
"pipfile-spec": 6,
"requires": {
@@ -16,6 +16,73 @@
]
},
"default": {
"click": {
"hashes": [
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
],
"version": "==7.1.2"
},
"flask": {
"hashes": [
"sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060",
"sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"
],
"index": "pypi",
"version": "==1.1.2"
},
"itsdangerous": {
"hashes": [
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19",
"sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"
],
"version": "==1.1.0"
},
"jinja2": {
"hashes": [
"sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0",
"sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"
],
"version": "==2.11.2"
},
"markupsafe": {
"hashes": [
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
],
"version": "==1.1.1"
},
"psycopg2": {
"hashes": [
"sha256:132efc7ee46a763e68a815f4d26223d9c679953cd190f1f218187cb60decf535",
@@ -34,6 +101,13 @@
],
"index": "pypi",
"version": "==2.8.5"
},
"werkzeug": {
"hashes": [
"sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43",
"sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"
],
"version": "==1.0.1"
}
},
"develop": {


+ 31
- 3
README.md View File

@@ -2,7 +2,6 @@

API to help make public data easier to access. Idea started with need for King County, WA COVID-19 data in API format while only having an excel file for source data.


## Development Setup

### Datastore
@@ -20,12 +19,41 @@ docker ps # to find the CONTAINER ID
docker exec -it 05b3a3471f6f bash
```

From the shell login to the db and setup initial user and database

```bash
psql -U postgres
```

Create your creds.py from the creds_sample.py

```bash
cp creds_sample.py creds.py
```

Edit creds.py with correct info for your db.

More info coming soon on using the scripts in database/ to create tables and load them with data.

### Development Env.

I am using Python 3.7
Project is using Python 3.7

I use [pipenv](https://pipenv.pypa.io/en/latest/) when I develop with Python.
In the project we use [pipenv](https://pipenv.pypa.io/en/latest/) when developing.

```bash
pipenv install && pipenv shell
```
### Production

When running on Debian server libpq-dev is required, this is postgresl library.

```bash
sudo apt-get install libpq-dev
```

### Data Available

- King County, Washington COVID-19 Data
- [King County, WS Covid-19 by ZipCode](https://api.seattlematrix.org/v1/kingcounty/covid-19/zipcode/all)
- sample source url https://www.kingcounty.gov/depts/health/covid-19/data/~/media/depts/health/communicable-diseases/documents/C19/data/covid-data-extract-geography-august-24.ashx

+ 46
- 0
api.py View File

@@ -0,0 +1,46 @@
import flask
from flask import request, jsonify
import psycopg2
import json

app = flask.Flask(__name__)
app.config["DEBUG"] = True
import creds

# Assign secrets to variables, should look into making this
# a function. Plan to move this to Vault from creds file.
dbhost = creds.dblogin['host']
database = creds.dblogin['db']
username = creds.dblogin['username']
password = creds.dblogin['password']
port = creds.dblogin['port']

@app.route('/', methods=['GET'])
def home():
# TODO: Look into putting all this into a template or something.
return """<h1>Public API offered by the team at Seattle Matrix</h1> <p>This \
site is a collection of api's from various public sources collected \
by the team at <a href="https://seattlematrix.org" target="_blank">SeattleMatrix.org</a>.</p> Current Data: \
</br><a href="https://api.seattlematrix.org/v1/kingcounty/covid-19/zipcode/all" target="_blank">King County, WA Covid-19 By ZipCode</a> - Current Dates: 20200810, 20200824, 20200831
"""

# A route to return all of the available records for King County COVID-19
@app.route('/v1/kingcounty/covid-19/zipcode/all', methods=['GET'])
def api_zipcode_all():
""" This route returns all the data in the king_county_covid19_zip
table. This data is currently manually updated.
"""
conn = psycopg2.connect(f"host={dbhost} dbname={database} user={username} password={password} port={port} sslmode='require'")
cur = conn.cursor()
cur.execute("select row_to_json(king_county_covid19_zip) from king_county_covid19_zip;")
rows = cur.fetchall()
# FIXME: returning row throws an error and jsonify returns double nested
# json result need to figure this out.
return jsonify(rows)

if __name__ == "__main__":
app.run(host='0.0.0.0')

# TODO: Create route for filtering on zipcode and date
# TODO: Put all above into function for covid-19 data
# TODO: Look into making a Class for db connection

+ 0
- 19
create_covid-19_zip.py View File

@@ -1,19 +0,0 @@
import psycopg2
conn = psycopg2.connect("host='localhost' dbname='king_county_wa' user='postgres' password='postgres'" )

cur = conn.cursor()
cur.execute("""
CREATE TABLE covid19_zip(
zipcode varchar(5),
population int4,
tests int4,
test_Rate varchar(10),
positives int4,
positive_rate varchar(10),
hospitalizations int4,
hospitalization_rate varchar(10),
deaths int4,
death_rate varchar(10)
)
""")
conn.commit()

+ 12
- 0
creds_sample.py View File

@@ -0,0 +1,12 @@
""" save this file as creds.py and update with your
db information. I will be updating app to use Vault
for secrets soon.
"""

dblogin = {
'host' : 'localhost',
'port' : '5432',
'username' : 'username',
'password' : 'password',
'db' : 'db'
}

+ 30
- 0
database/create_covid-19_zip.py View File

@@ -0,0 +1,30 @@
import psycopg2
import creds

# assign secrets to variables
dbhost = creds.dblogin['host']
database = creds.dblogin['db']
username = creds.dblogin['username']
password = creds.dblogin['password']
port = creds.dblogin['port']

conn = psycopg2.connect(f"host={dbhost} dbname={database} user={username} password={password} port={port} sslmode='require'")

cur = conn.cursor()
cur.execute("""
CREATE TABLE king_county_covid19_zip(
id SERIAL PRIMARY KEY,
date_added DATE NOT NULL DEFAULT CURRENT_DATE,
date_data DATE,
zipcode TEXT,
population INTEGER,
tests INTEGER,
test_rate TEXT,
positives INTEGER,
positive_rate TEXT,
hospitalizations INTEGER,
hospitalization_rate TEXT,
deaths INTEGER,
death_rate TEXT)
""")
conn.commit()

+ 33
- 0
database/load_db.py View File

@@ -0,0 +1,33 @@
import psycopg2
import csv
from datetime import datetime
import creds

# assign secrets to variables
dbhost = creds.dblogin['host']
database = creds.dblogin['db']
username = creds.dblogin['username']
password = creds.dblogin['password']
port = creds.dblogin['port']

conn = psycopg2.connect(f"host={dbhost} dbname={database} user={username} password={password} port={port} sslmode='require'")

cur = conn.cursor()

# take the source data csv and upload to the database.
# using date variable to choose file
data_date = "20200831"
source_file = "./source_data/covid-19_" +data_date+"_zip.csv"

with open(source_file, 'r') as f:
reader = csv.reader(f)
next(reader) # Skip the header row.
for row in reader:
cur.execute(
"INSERT INTO king_county_covid19_zip(date_data, zipcode, population, tests, test_rate, \
positives, positive_rate, hospitalizations, hospitalization_rate, deaths, death_rate) \
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
(data_date,row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9])
)

conn.commit()

BIN
database/source_data/covid-19.xlsx View File


+ 85
- 0
database/source_data/covid-19_20200810_zip.csv View File

@@ -0,0 +1,85 @@
Location_Name,Population,Tests,Test_Rate,Positives,Positive_Rate,Hospitalizations,Hospitalization_Rate,Deaths,Death_Rate
00000,2226300,337664, 15167.05,16749, 752.32,2043, 91.77,676, 30.36
98001,35948,4161, 115.75,373, 10.38,39, 1.08,7, 0.19
98002,35106,4772, 135.93,566, 16.12,61, 1.74,11, 0.31
98003,49587,6762, 136.37,805, 16.23,79, 1.59,15, 0.30
98004,34755,5310, 152.78,211, 6.07,32, 0.92,11, 0.32
98005,20154,2292, 113.72,103, 5.11,15, 0.74,0, 0.00
98006,38904,4420, 113.61,129, 3.32,14, 0.36,4, 0.10
98007,28612,2473, 86.43,155, 5.42,26, 0.91,10, 0.35
98008,26113,2883, 110.40,195, 7.47,33, 1.26,17, 0.65
98010,5549,579, 104.34,29, 5.23,1, 0.18,1, 0.18
98011,34504,3401, 98.57,144, 4.17,25, 0.72,11, 0.32
98014,7630,759, 99.48,13, 1.70,3, 0.39,0, 0.00
98019,12209,1160, 95.01,33, 2.70,0, 0.00,0, 0.00
98022,22792,2278, 99.95,134, 5.88,31, 1.36,25, 1.10
98023,50842,5855, 115.16,494, 9.72,45, 0.89,6, 0.12
98024,6000,638, 106.33,14, 2.33,1, 0.17,0, 0.00
98027,30108,4035, 134.02,192, 6.38,43, 1.43,25, 0.83
98028,23193,3082, 132.88,132, 5.69,27, 1.16,9, 0.39
98029,29254,3716, 127.03,100, 3.42,11, 0.38,11, 0.38
98030,36849,4558, 123.69,550, 14.93,63, 1.71,24, 0.65
98031,39076,5230, 133.84,484, 12.39,52, 1.33,16, 0.41
98032,36699,5155, 140.47,532, 14.50,40, 1.09,9, 0.25
98033,38814,5408, 139.33,201, 5.18,24, 0.62,7, 0.18
98034,44252,5859, 132.40,387, 8.75,102, 2.30,55, 1.24
98038,35227,3769, 106.99,151, 4.29,11, 0.31,4, 0.11
98039,3247,539, 166.00,28, 8.62,2, 0.62,0, 0.00
98040,24470,4735, 193.50,156, 6.38,15, 0.61,5, 0.20
98042,48838,5162, 105.70,365, 7.47,35, 0.72,5, 0.10
98045,15333,2082, 135.79,45, 2.93,2, 0.13,1, 0.07
98047,6704,718, 107.10,88, 13.13,13, 1.94,2, 0.30
98051,3735,437, 117.00,21, 5.62,2, 0.54,1, 0.27
98052,69882,7333, 104.93,316, 4.52,72, 1.03,49, 0.70
98053,22484,2058, 91.53,57, 2.54,11, 0.49,6, 0.27
98055,24945,3040, 121.87,198, 7.94,32, 1.28,15, 0.60
98056,36346,4413, 121.42,290, 7.98,33, 0.91,5, 0.14
98057,13268,2303, 173.58,176, 13.26,18, 1.36,9, 0.68
98058,44805,5352, 119.45,316, 7.05,43, 0.96,13, 0.29
98059,39897,4387, 109.96,206, 5.16,26, 0.65,5, 0.13
98065,15789,1926, 121.98,70, 4.43,2, 0.13,0, 0.00
98070,10788,1480, 137.19,12, 1.11,1, 0.09,0, 0.00
98072,24584,2602, 105.84,102, 4.15,17, 0.69,4, 0.16
98074,28881,2886, 99.93,69, 2.39,3, 0.10,4, 0.14
98075,24330,2660, 109.33,111, 4.56,7, 0.29,1, 0.04
98077,14416,1396, 96.84,37, 2.57,4, 0.28,2, 0.14
98092,47868,4421, 92.36,407, 8.50,52, 1.09,7, 0.15
98101,16247,3652, 224.78,126, 7.76,20, 1.23,11, 0.68
98102,26690,6409, 240.13,121, 4.53,8, 0.30,1, 0.04
98103,53528,12164, 227.25,223, 4.17,27, 0.50,14, 0.26
98104,18339,4260, 232.29,213, 11.61,35, 1.91,9, 0.49
98105,54923,9215, 167.78,299, 5.44,12, 0.22,1, 0.02
98106,25898,4458, 172.14,273, 10.54,37, 1.43,3, 0.12
98107,29219,6263, 214.35,107, 3.66,8, 0.27,3, 0.10
98108,25264,4365, 172.78,272, 10.77,22, 0.87,7, 0.28
98109,34939,6142, 175.79,206, 5.90,38, 1.09,19, 0.54
98112,24026,6163, 256.51,104, 4.33,12, 0.50,2, 0.08
98115,53109,10897, 205.18,226, 4.26,23, 0.43,8, 0.15
98116,26979,5259, 194.93,121, 4.48,5, 0.19,2, 0.07
98117,34314,7602, 221.54,156, 4.55,25, 0.73,7, 0.20
98118,49108,9111, 185.53,541, 11.02,61, 1.24,11, 0.22
98119,26126,4711, 180.32,74, 2.83,5, 0.19,0, 0.00
98121,22274,3182, 142.86,64, 2.87,4, 0.18,2, 0.09
98122,44306,9896, 223.36,218, 4.92,15, 0.34,5, 0.11
98125,43312,7493, 173.00,257, 5.93,32, 0.74,8, 0.18
98126,24341,4639, 190.58,151, 6.20,29, 1.19,14, 0.58
98133,49594,8508, 171.55,412, 8.31,61, 1.23,30, 0.60
98134,675,363, 537.78,16, 23.70,3, 4.44,0, 0.00
98136,16216,3317, 204.55,67, 4.13,5, 0.31,2, 0.12
98144,32523,7663, 235.62,338, 10.39,53, 1.63,19, 0.58
98146,29292,4231, 144.44,322, 10.99,35, 1.19,9, 0.31
98148,10823,1381, 127.60,118, 10.90,18, 1.66,3, 0.28
98155,34534,5910, 171.14,268, 7.76,46, 1.33,25, 0.72
98164,157,3303, 21038.22,5, 31.85,0, 0.00,0, 0.00
98166,21840,3197, 146.38,175, 8.01,26, 1.19,4, 0.18
98168,36076,5271, 146.11,591, 16.38,45, 1.25,9, 0.25
98177,20330,3730, 183.47,140, 6.89,29, 1.43,21, 1.03
98178,26649,4040, 151.60,260, 9.76,27, 1.01,6, 0.23
98188,25097,4057, 161.65,366, 14.58,38, 1.51,6, 0.24
98195,0,32, .,2, .,0, .,0, .
98198,36960,5063, 136.99,485, 13.12,44, 1.19,6, 0.16
98199,21488,3852, 179.26,57, 2.65,4, 0.19,1, 0.05
98224,310,14, 45.16,1, 3.23,0, 0.00,0, 0.00
98288,374,39, 104.28,0, 0.00,0, 0.00,0, 0.00
98354,7419,60, 8.09,6, 0.81,1, 0.13,1, 0.13
98422,21107,4, 0.19,3, 0.14,1, 0.05,0, 0.00

+ 85
- 0
database/source_data/covid-19_20200824_zip.csv View File

@@ -0,0 +1,85 @@
Location_Name,Population,Tests,Test_Rate,Positives,Positive_Rate,Hospitalizations,Hospitalization_Rate,Deaths,Death_Rate
00000,2226300,343578, 15432.69,18824, 845.53,2182, 98.01,711, 31.94
98001,35948,5107, 142.07,435, 12.10,43, 1.20,7, 0.19
98002,35106,6236, 177.63,649, 18.49,71, 2.02,13, 0.37
98003,49587,8287, 167.12,971, 19.58,91, 1.84,19, 0.38
98004,34755,6552, 188.52,232, 6.68,32, 0.92,11, 0.32
98005,20154,2810, 139.43,121, 6.00,16, 0.79,0, 0.00
98006,38904,5409, 139.03,148, 3.80,14, 0.36,4, 0.10
98007,28612,3027, 105.79,175, 6.12,27, 0.94,11, 0.38
98008,26113,3517, 134.68,220, 8.42,39, 1.49,16, 0.61
98010,5549,729, 131.38,31, 5.59,1, 0.18,1, 0.18
98011,34504,4135, 119.84,161, 4.67,27, 0.78,12, 0.35
98014,7630,976, 127.92,21, 2.75,3, 0.39,0, 0.00
98019,12209,1449, 118.68,37, 3.03,0, 0.00,1, 0.08
98022,22792,2778, 121.88,145, 6.36,32, 1.40,25, 1.10
98023,50842,7271, 143.01,570, 11.21,52, 1.02,8, 0.16
98024,6000,803, 133.83,20, 3.33,1, 0.17,0, 0.00
98027,30108,4958, 164.67,221, 7.34,45, 1.49,25, 0.83
98028,23193,3735, 161.04,143, 6.17,28, 1.21,9, 0.39
98029,29254,4538, 155.12,107, 3.66,12, 0.41,12, 0.41
98030,36849,5599, 151.94,648, 17.59,65, 1.76,23, 0.62
98031,39076,6335, 162.12,560, 14.33,57, 1.46,16, 0.41
98032,36699,6304, 171.78,639, 17.41,45, 1.23,11, 0.30
98033,38814,6632, 170.87,218, 5.62,23, 0.59,7, 0.18
98034,44252,7018, 158.59,408, 9.22,102, 2.30,56, 1.27
98038,35227,4774, 135.52,163, 4.63,12, 0.34,4, 0.11
98039,3247,730, 224.82,31, 9.55,2, 0.62,0, 0.00
98040,24470,5861, 239.52,163, 6.66,16, 0.65,5, 0.20
98042,48838,6422, 131.50,420, 8.60,38, 0.78,5, 0.10
98045,15333,2595, 169.24,55, 3.59,2, 0.13,1, 0.07
98047,6704,851, 126.94,105, 15.66,13, 1.94,2, 0.30
98051,3735,517, 138.42,25, 6.69,2, 0.54,1, 0.27
98052,69882,8974, 128.42,345, 4.94,72, 1.03,49, 0.70
98053,22484,2504, 111.37,63, 2.80,12, 0.53,6, 0.27
98055,24945,3684, 147.68,213, 8.54,32, 1.28,15, 0.60
98056,36346,5378, 147.97,334, 9.19,36, 0.99,7, 0.19
98057,13268,2855, 215.18,199, 15.00,21, 1.58,9, 0.68
98058,44805,6486, 144.76,363, 8.10,44, 0.98,13, 0.29
98059,39897,5409, 135.57,232, 5.81,27, 0.68,5, 0.13
98065,15789,2466, 156.18,81, 5.13,2, 0.13,0, 0.00
98070,10788,1794, 166.30,14, 1.30,1, 0.09,0, 0.00
98072,24584,3115, 126.71,116, 4.72,18, 0.73,4, 0.16
98074,28881,3568, 123.54,75, 2.60,3, 0.10,4, 0.14
98075,24330,3366, 138.35,126, 5.18,8, 0.33,4, 0.16
98077,14416,1719, 119.24,45, 3.12,4, 0.28,2, 0.14
98092,47868,5553, 116.01,466, 9.74,59, 1.23,9, 0.19
98101,16247,4793, 295.01,141, 8.68,21, 1.29,9, 0.55
98102,26690,8073, 302.47,133, 4.98,8, 0.30,1, 0.04
98103,53528,15186, 283.70,247, 4.61,27, 0.50,16, 0.30
98104,18339,5144, 280.50,253, 13.80,43, 2.34,11, 0.60
98105,54923,11452, 208.51,316, 5.75,12, 0.22,1, 0.02
98106,25898,5464, 210.98,294, 11.35,35, 1.35,4, 0.15
98107,29219,7717, 264.11,111, 3.80,8, 0.27,4, 0.14
98108,25264,5518, 218.41,301, 11.91,27, 1.07,7, 0.28
98109,34939,7818, 223.76,226, 6.47,39, 1.12,19, 0.54
98112,24026,7792, 324.32,114, 4.74,13, 0.54,3, 0.12
98115,53109,13558, 255.29,245, 4.61,24, 0.45,9, 0.17
98116,26979,6469, 239.78,139, 5.15,8, 0.30,2, 0.07
98117,34314,9956, 290.14,176, 5.13,25, 0.73,7, 0.20
98118,49108,11377, 231.67,595, 12.12,62, 1.26,11, 0.22
98119,26126,5935, 227.17,86, 3.29,6, 0.23,1, 0.04
98121,22274,3890, 174.64,73, 3.28,4, 0.18,2, 0.09
98122,44306,12558, 283.44,241, 5.44,17, 0.38,6, 0.14
98125,43312,9000, 207.79,282, 6.51,36, 0.83,9, 0.21
98126,24341,5647, 232.00,159, 6.53,30, 1.23,14, 0.58
98133,49594,10272, 207.12,439, 8.85,64, 1.29,30, 0.60
98134,675,414, 613.33,17, 25.19,3, 4.44,0, 0.00
98136,16216,4165, 256.85,78, 4.81,6, 0.37,3, 0.19
98144,32523,9509, 292.38,358, 11.01,58, 1.78,20, 0.61
98146,29292,5057, 172.64,352, 12.02,41, 1.40,12, 0.41
98148,10823,1677, 154.95,131, 12.10,18, 1.66,3, 0.28
98155,34534,6970, 201.83,286, 8.28,47, 1.36,24, 0.69
98164,157,3972, 25299.36,9, 57.32,0, 0.00,1, 6.37
98166,21840,3947, 180.72,196, 8.97,27, 1.24,4, 0.18
98168,36076,6291, 174.38,644, 17.85,49, 1.36,7, 0.19
98177,20330,4526, 222.63,143, 7.03,31, 1.52,21, 1.03
98178,26649,4931, 185.04,308, 11.56,28, 1.05,7, 0.26
98188,25097,5094, 202.97,428, 17.05,41, 1.63,7, 0.28
98195,0,40, .,4, .,0, .,0, .
98198,36960,6225, 168.43,523, 14.15,49, 1.33,6, 0.16
98199,21488,4913, 228.64,61, 2.84,3, 0.14,1, 0.05
98224,310,16, 51.61,1, 3.23,0, 0.00,0, 0.00
98288,374,46, 122.99,0, 0.00,0, 0.00,0, 0.00
98354,7419,65, 8.76,6, 0.81,1, 0.13,2, 0.27
98422,21107,7, 0.33,4, 0.19,2, 0.09,0, 0.00

+ 85
- 0
database/source_data/covid-19_20200831_zip.csv View File

@@ -0,0 +1,85 @@
Location_Name,Population,Tests,Test_Rate,Positives,Positive_Rate,Hospitalizations,Hospitalization_Rate,Deaths,Death_Rate
00000,2226300,361435, 16234.78,19665, 883.30,2229, 100.12,720, 32.34
98001,35948,4520, 125.74,460, 12.80,46, 1.28,8, 0.22
98002,35106,5255, 149.69,669, 19.06,69, 1.97,12, 0.34
98003,49587,7308, 147.38,1043, 21.03,100, 2.02,24, 0.48
98004,34755,5554, 159.80,235, 6.76,30, 0.86,9, 0.26
98005,20154,2432, 120.67,129, 6.40,17, 0.84,0, 0.00
98006,38904,4763, 122.43,155, 3.98,14, 0.36,4, 0.10
98007,28612,2748, 96.04,182, 6.36,27, 0.94,12, 0.42
98008,26113,3115, 119.29,224, 8.58,39, 1.49,16, 0.61
98010,5549,642, 115.70,33, 5.95,1, 0.18,1, 0.18
98011,34504,3565, 103.32,161, 4.67,27, 0.78,12, 0.35
98014,7630,890, 116.64,24, 3.15,5, 0.66,0, 0.00
98019,12209,1273, 104.27,41, 3.36,0, 0.00,1, 0.08
98022,22792,2447, 107.36,153, 6.71,32, 1.40,26, 1.14
98023,50842,6359, 125.07,612, 12.04,53, 1.04,7, 0.14
98024,6000,707, 117.83,20, 3.33,1, 0.17,0, 0.00
98027,30108,4348, 144.41,227, 7.54,44, 1.46,25, 0.83
98028,23193,3164, 136.42,143, 6.17,28, 1.21,9, 0.39
98029,29254,3840, 131.26,111, 3.79,12, 0.41,12, 0.41
98030,36849,4936, 133.95,668, 18.13,66, 1.79,24, 0.65
98031,39076,5606, 143.46,580, 14.84,57, 1.46,16, 0.41
98032,36699,5614, 152.97,680, 18.53,51, 1.39,11, 0.30
98033,38814,5620, 144.79,238, 6.13,26, 0.67,7, 0.18
98034,44252,5933, 134.07,420, 9.49,103, 2.33,56, 1.27
98038,35227,4230, 120.08,179, 5.08,14, 0.40,4, 0.11
98039,3247,603, 185.71,32, 9.86,2, 0.62,0, 0.00
98040,24470,4975, 203.31,169, 6.91,16, 0.65,5, 0.20
98042,48838,5691, 116.53,441, 9.03,42, 0.86,6, 0.12
98045,15333,2224, 145.05,58, 3.78,2, 0.13,1, 0.07
98047,6704,787, 117.39,108, 16.11,13, 1.94,2, 0.30
98051,3735,445, 119.14,29, 7.76,2, 0.54,1, 0.27
98052,69882,7834, 112.10,351, 5.02,73, 1.04,49, 0.70
98053,22484,2143, 95.31,64, 2.85,11, 0.49,6, 0.27
98055,24945,3268, 131.01,232, 9.30,36, 1.44,15, 0.60
98056,36346,4790, 131.79,346, 9.52,34, 0.94,7, 0.19
98057,13268,2501, 188.50,200, 15.07,18, 1.36,10, 0.75
98058,44805,5698, 127.17,378, 8.44,43, 0.96,12, 0.27
98059,39897,4834, 121.16,249, 6.24,28, 0.70,5, 0.13
98065,15789,2151, 136.23,85, 5.38,2, 0.13,0, 0.00
98070,10788,1601, 148.41,14, 1.30,1, 0.09,0, 0.00
98072,24584,2678, 108.93,125, 5.08,21, 0.85,5, 0.20
98074,28881,3130, 108.38,77, 2.67,3, 0.10,4, 0.14
98075,24330,2909, 119.56,130, 5.34,8, 0.33,4, 0.16
98077,14416,1487, 103.15,52, 3.61,3, 0.21,1, 0.07
98092,47868,4920, 102.78,493, 10.30,61, 1.27,8, 0.17
98101,16247,3758, 231.30,159, 9.79,26, 1.60,10, 0.62
98102,26690,6381, 239.08,139, 5.21,7, 0.26,1, 0.04
98103,53528,12339, 230.51,253, 4.73,27, 0.50,15, 0.28
98104,18339,4123, 224.82,260, 14.18,42, 2.29,10, 0.55
98105,54923,8786, 159.97,323, 5.88,12, 0.22,1, 0.02
98106,25898,4705, 181.67,302, 11.66,37, 1.43,4, 0.15
98107,29219,6353, 217.43,115, 3.94,10, 0.34,5, 0.17
98108,25264,4725, 187.03,324, 12.82,27, 1.07,8, 0.32
98109,34939,6640, 190.05,235, 6.73,38, 1.09,20, 0.57
98112,24026,6258, 260.47,113, 4.70,12, 0.50,2, 0.08
98115,53109,11395, 214.56,247, 4.65,22, 0.41,9, 0.17
98116,26979,5445, 201.82,143, 5.30,8, 0.30,3, 0.11
98117,34314,7835, 228.33,175, 5.10,24, 0.70,7, 0.20
98118,49108,9626, 196.02,614, 12.50,65, 1.32,11, 0.22
98119,26126,5032, 192.61,87, 3.33,6, 0.23,1, 0.04
98121,22274,3300, 148.15,75, 3.37,4, 0.18,2, 0.09
98122,44306,9942, 224.39,252, 5.69,16, 0.36,6, 0.14
98125,43312,7696, 177.69,289, 6.67,37, 0.85,8, 0.18
98126,24341,4694, 192.84,163, 6.70,29, 1.19,14, 0.58
98133,49594,8793, 177.30,446, 8.99,62, 1.25,33, 0.67
98134,675,291, 431.11,13, 19.26,3, 4.44,0, 0.00
98136,16216,3389, 208.99,84, 5.18,7, 0.43,3, 0.19
98144,32523,7710, 237.06,371, 11.41,59, 1.81,19, 0.58
98146,29292,4525, 154.48,417, 14.24,44, 1.50,12, 0.41
98148,10823,1493, 137.95,134, 12.38,19, 1.76,3, 0.28
98155,34534,6038, 174.84,299, 8.66,48, 1.39,25, 0.72
98164,157,3169, 20184.71,0, 0.00,0, 0.00,0, 0.00
98166,21840,3430, 157.05,203, 9.29,27, 1.24,4, 0.18
98168,36076,5565, 154.26,655, 18.16,49, 1.36,7, 0.19
98177,20330,3916, 192.62,145, 7.13,30, 1.48,22, 1.08
98178,26649,4280, 160.61,325, 12.20,28, 1.05,7, 0.26
98188,25097,3887, 154.88,460, 18.33,43, 1.71,7, 0.28
98195,0,38, .,4, .,0, .,0, .
98198,36960,5321, 143.97,550, 14.88,50, 1.35,6, 0.16
98199,21488,4230, 196.85,64, 2.98,3, 0.14,1, 0.05
98224,310,14, 45.16,1, 3.23,0, 0.00,0, 0.00
98288,374,34, 90.91,0, 0.00,0, 0.00,0, 0.00
98354,7419,59, 7.95,5, 0.67,1, 0.13,2, 0.27
98422,21107,6, 0.28,3, 0.14,1, 0.05,0, 0.00

BIN
database/source_data/covid-data-extract-geography-august-10.xlsx View File


BIN
database/source_data/covid-data-extract-geography-august-24.xlsx View File


BIN
database/source_data/covid-data-extract-geography-august-31.xlsx View File


+ 0
- 17
load_db.py View File

@@ -1,17 +0,0 @@
import psycopg2
import csv
conn = psycopg2.connect("host='localhost' dbname='king_county_wa' user='postgres' password='postgres'" )

cur = conn.cursor()

with open('covid-19_zip.csv', 'r') as f:
reader = csv.reader(f)
next(reader) # Skip the header row.
for row in reader:
#print(row)
cur.execute(
"INSERT INTO covid19_zip VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", row
)
conn.commit()

cur.execute('SELECT * FROM covid19_zip')

Loading…
Cancel
Save