2-parse-csv #11
@@ -24,9 +24,11 @@ class Database:
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def insert(self, name, address):
|
def insert(self, query, values):
|
||||||
# Insert new entry into the database
|
# Insert new entry into the database
|
||||||
cursor = self.db.cursor()
|
cursor = self.db.cursor()
|
||||||
query = "INSERT INTO people (name, address) VALUES (?, ?)"
|
cursor.execute(query, values)
|
||||||
cursor.execute(query, (name, address))
|
new_id = cursor.lastrowid
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
|
return new_id
|
||||||
|
|||||||
@@ -24,23 +24,6 @@ CREATE TABLE IF NOT EXISTS teams (
|
|||||||
PRIMARY KEY (team)
|
PRIMARY KEY (team)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS weather (
|
|
||||||
id INTEGER NOT NULL,
|
|
||||||
temperature SMALLINT,
|
|
||||||
wind_speed FLOAT,
|
|
||||||
air_pressure FLOAT,
|
|
||||||
humidity SMALLINT UNSIGNED,
|
|
||||||
uv_index FLOAT,
|
|
||||||
air_quality TINYINT UNSIGNED,
|
|
||||||
percipitation_type CHAR(10),
|
|
||||||
percipitation_amount FLOAT,
|
|
||||||
sky_condition CHAR(20),
|
|
||||||
sun_rise TIME,
|
|
||||||
sun_set TIME,
|
|
||||||
moon_phase TINYINT UNSIGNED,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS games (
|
CREATE TABLE IF NOT EXISTS games (
|
||||||
id INTEGER NOT NULL,
|
id INTEGER NOT NULL,
|
||||||
game_date date NOT NULL,
|
game_date date NOT NULL,
|
||||||
@@ -67,7 +50,6 @@ CREATE TABLE IF NOT EXISTS games (
|
|||||||
rf_ump_id CHAR(8),
|
rf_ump_id CHAR(8),
|
||||||
rf_ump_name VARCHAR,
|
rf_ump_name VARCHAR,
|
||||||
weather_id INT NOT NULL,
|
weather_id INT NOT NULL,
|
||||||
FOREIGN KEY (weather_id) REFERENCES weather(id)
|
|
||||||
FOREIGN KEY (park_id) REFERENCES parks(park_id)
|
FOREIGN KEY (park_id) REFERENCES parks(park_id)
|
||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
@@ -155,3 +137,20 @@ CREATE TABLE IF NOT EXISTS team_game (
|
|||||||
PRIMARY KEY (game, team)
|
PRIMARY KEY (game, team)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS weather (
|
||||||
|
game_id INTEGER NOT NULL,
|
||||||
|
temperature SMALLINT,
|
||||||
|
wind_speed FLOAT,
|
||||||
|
air_pressure FLOAT,
|
||||||
|
humidity SMALLINT UNSIGNED,
|
||||||
|
uv_index FLOAT,
|
||||||
|
air_quality TINYINT UNSIGNED,
|
||||||
|
percipitation_type CHAR(10),
|
||||||
|
percipitation_amount FLOAT,
|
||||||
|
sky_condition CHAR(20),
|
||||||
|
sun_rise TIME,
|
||||||
|
sun_set TIME,
|
||||||
|
moon_phase TINYINT UNSIGNED,
|
||||||
|
FOREIGN KEY (game_id) REFERENCES games(id),
|
||||||
|
PRIMARY KEY (game_id)
|
||||||
|
);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import csv
|
import csv
|
||||||
from db_connect import Database
|
from data.db_connect import Database
|
||||||
|
|
||||||
class Importer:
|
class Importer:
|
||||||
def __init__(self, database: Database):
|
def __init__(self, database: Database):
|
||||||
@@ -25,7 +25,123 @@ class Importer:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def populate_database_with_stats(self, bb_game_stats):
|
def populate_database_with_stats(self, bb_game_stats):
|
||||||
pass
|
insert_game = """
|
||||||
|
INSERT INTO games
|
||||||
|
(
|
||||||
|
game_date, game_number, day_of_week,
|
||||||
|
length_in_outs, day_night, completion_info,
|
||||||
|
forfeit, protest, park_id,
|
||||||
|
attendence, length_in_minutes, home_plate_ump_id,
|
||||||
|
home_plate_ump_name, b1_ump_id, b1_ump_name,
|
||||||
|
b2_ump_id, b2_ump_name, b3_ump_id,
|
||||||
|
b3_ump_name, lf_ump_id, lf_ump_name,
|
||||||
|
rf_ump_id, rf_ump_name
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
insert_team_game = """
|
||||||
|
INSERT INTO team_game
|
||||||
|
(
|
||||||
|
game, team, game_num,
|
||||||
|
score, line_score, at_bats,
|
||||||
|
hits, doubles, triples,
|
||||||
|
homeruns, rbis, sacrifice_hits,
|
||||||
|
sacrifice_flies, hit_by_pitch, walks,
|
||||||
|
intentional_walks, strikeouts, stolen_bases,
|
||||||
|
caught_stealing, grounded_double, interference,
|
||||||
|
left_on_base, pitchers_used, individual_earned_runs,
|
||||||
|
earned_runs, wild_pitches, balks,
|
||||||
|
putouts, assists, errors,
|
||||||
|
passed, double_play, triple_play,
|
||||||
|
manager_id, manager_name, starting_pitcher_id,
|
||||||
|
starting_pitcher_name, starting_1_id, starting_1_name,
|
||||||
|
starting_1_position, starting_2_id, starting_2_name,
|
||||||
|
starting_2_position, starting_3_id, starting_3_name,
|
||||||
|
starting_3_position, starting_4_id, starting_4_name,
|
||||||
|
starting_4_position, starting_5_id, starting_5_name,
|
||||||
|
starting_5_position, starting_6_id, starting_6_name,
|
||||||
|
starting_6_position, starting_7_id, starting_7_name,
|
||||||
|
starting_7_position, starting_8_id, starting_8_name,
|
||||||
|
starting_8_position, starting_9_id, starting_9_name,
|
||||||
|
starting_9_position
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?, ?, ?,
|
||||||
|
?
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
for game_stats in bb_game_stats:
|
||||||
|
game_data = [
|
||||||
|
game_stats["date"], game_stats["num-of-game"], game_stats["day-of-week"],
|
||||||
|
game_stats["length-in-outs"], game_stats["day-night"], game_stats["completion-info"],
|
||||||
|
game_stats["forfeit"], game_stats["protest"], game_stats["park-id"],
|
||||||
|
game_stats["attendance"], game_stats["length-in-minutes"], game_stats["home-plate-ump-id"],
|
||||||
|
game_stats["home-plate-ump-name"], game_stats["1b-plate-ump-id"], game_stats["1b-plate-ump-name"],
|
||||||
|
game_stats["2b-plate-ump-id"], game_stats["2b-plate-ump-name"], game_stats["3b-plate-ump-id"],
|
||||||
|
game_stats["3b-plate-ump-name"], game_stats["lf-plate-ump-id"], game_stats["lf-plate-ump-name"],
|
||||||
|
game_stats["rf-plate-ump-id"], game_stats["rf-plate-ump-name"],
|
||||||
|
]
|
||||||
|
|
||||||
|
game_id = self.database.insert(insert_game, game_data)
|
||||||
|
|
||||||
|
team_data = [
|
||||||
|
game_id, game_stats["visiting-team"], game_stats["visiting-game-num"],
|
||||||
|
game_stats["visiting-score"], game_stats["visiting-line-scores"], game_stats["visiting-at-bats"],
|
||||||
|
game_stats["visiting-hits"], game_stats["visiting-doubles"], game_stats["visiting-triples"],
|
||||||
|
game_stats["visiting-homeruns"], game_stats["visiting-rbi"], game_stats["visiting-sacrifice-hits"],
|
||||||
|
game_stats["visiting-sacrifice-flies"], game_stats["visiting-hit-by-pitch"], game_stats["visiting-walks"],
|
||||||
|
game_stats["visiting-intentional-walks"], game_stats["visiting-strikeouts"], game_stats["visiting-stolen-bases"],
|
||||||
|
game_stats["visiting-caught-stealing"], game_stats["visiting-grounded-double"], game_stats["visiting-interference"],
|
||||||
|
game_stats["visiting-left-on-base"], game_stats["visiting-pitchers-used"], game_stats["visiting-individual-earned-runs"],
|
||||||
|
game_stats["visiting-team-earned-runs"], game_stats["visiting-wild-pitches"], game_stats["visiting-balks"],
|
||||||
|
game_stats["visiting-putouts"], game_stats["visiting-assists"], game_stats["visiting-errors"],
|
||||||
|
game_stats["visiting-passed"], game_stats["visiting-double-play"], game_stats["visiting-triple-play"],
|
||||||
|
game_stats["visiting-manager-id"], game_stats["visiting-manager-name"], game_stats["visiting-start-pitcher-id"],
|
||||||
|
game_stats["visiting-start-pitcher-name"], game_stats["visiting-starting-1-id"], game_stats["visiting-starting-1-name"],
|
||||||
|
game_stats["visiting-starting-1-position"], game_stats["visiting-starting-2-id"], game_stats["visiting-starting-2-name"],
|
||||||
|
game_stats["visiting-starting-2-position"], game_stats["visiting-starting-3-id"], game_stats["visiting-starting-3-name"],
|
||||||
|
game_stats["visiting-starting-3-position"], game_stats["visiting-starting-4-id"], game_stats["visiting-starting-4-name"],
|
||||||
|
game_stats["visiting-starting-4-position"], game_stats["visiting-starting-5-id"], game_stats["visiting-starting-5-name"],
|
||||||
|
game_stats["visiting-starting-5-position"], game_stats["visiting-starting-6-id"], game_stats["visiting-starting-6-name"],
|
||||||
|
game_stats["visiting-starting-6-position"], game_stats["visiting-starting-7-id"], game_stats["visiting-starting-7-name"],
|
||||||
|
game_stats["visiting-starting-7-position"], game_stats["visiting-starting-8-id"], game_stats["visiting-starting-8-name"],
|
||||||
|
game_stats["visiting-starting-8-position"], game_stats["visiting-starting-9-id"], game_stats["visiting-starting-9-name"],
|
||||||
|
game_stats["visiting-starting-9-position"]
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def parse_csv(file_path):
|
def parse_csv(file_path):
|
||||||
# Function to parse a CSV file and return an array of dictionaries
|
# Function to parse a CSV file and return an array of dictionaries
|
||||||
|
|||||||
4
main.py
4
main.py
@@ -1,6 +1,7 @@
|
|||||||
import numpy as np # helps with the math
|
import numpy as np # helps with the math
|
||||||
import matplotlib.pyplot as plt # to plot error during training
|
import matplotlib.pyplot as plt # to plot error during training
|
||||||
from data.db_connect import Database
|
from data.db_connect import Database
|
||||||
|
from data.stats_importer import parse_csv
|
||||||
|
|
||||||
# input data
|
# input data
|
||||||
inputs = np.array([[0, 0, 1, 0],
|
inputs = np.array([[0, 0, 1, 0],
|
||||||
@@ -68,6 +69,9 @@ if __name__ == '__main__':
|
|||||||
db_conn.run_sql_file(fill_parks_path)
|
db_conn.run_sql_file(fill_parks_path)
|
||||||
db_conn.run_sql_file(fill_teams_path)
|
db_conn.run_sql_file(fill_teams_path)
|
||||||
|
|
||||||
|
test_csv = "./data/stats/gl2022.csv"
|
||||||
|
print(parse_csv(test_csv))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# create neural network
|
# create neural network
|
||||||
NN = NeuralNetwork(inputs, outputs)
|
NN = NeuralNetwork(inputs, outputs)
|
||||||
|
|||||||
Reference in New Issue
Block a user