-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.py
63 lines (51 loc) · 1.55 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import os
import pandas as pd
from flask import (
Flask,
render_template,
request,
jsonify,
redirect)
import csv
import json
from sqlalchemy import create_engine
database_path = "resources/guns_data_db.db"
engine = create_engine(f"sqlite:///{database_path}")
conn = engine.connect()
data = pd.read_sql("Select * FROM statistics", conn)
app = Flask(__name__)
@app.route("/")
def home():
return render_template("index.html", page="home")
@app.route("/trends")
def trends():
return render_template("trends.html", page="trends")
@app.route("/visuals")
def visuals():
return render_template("visuals.html", page="visuals")
@app.route("/api/data/deaths")
def deathData():
return getDataByYear('STATE', 'DEATHS', 'sum')
@app.route("/api/data/hfr")
def hfrData():
return getDataByYear('STATE', 'HFR', 'min')
@app.route("/api/data/death_cause")
def deathCause():
return getDataByYear('cause_of_death', 'DEATHS', 'sum')
@app.route("/api/data/suicide_gender")
def genderSuicide():
df = data
df = df[['YEAR', "Fem_FS_S", "Male_FS_S"]]
df = df.groupby('YEAR').agg("mean").reset_index()
json_data = df.to_json(orient='records')
return json_data
def getDataByYear(column, value, agg):
df = data
df = df[['YEAR', column, value]]
df = df.groupby([column, 'YEAR']).agg([agg]).reset_index()
df.columns = df.columns.droplevel(1)
df = df.pivot(index='YEAR', columns=column, values=value).reset_index()
json_data = df.to_json(orient='records')
return json_data
if __name__ == "__main__":
app.run()