From fa870f3f540ccc6739f77b630a057f2314e05945 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 31 Mar 2025 16:07:09 -0400 Subject: [PATCH 1/2] Skeleton of importing data from the csv --- data/db_connect.py | 23 +++++++++++++++++++++++ data/get_data.py | 0 data/{ => stats}/gl2022.csv | 0 data/stats_importer.py | 28 ++++++++++++++++++++++++++++ data.py => data/stats_struct.py | 8 ++++++-- 5 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 data/db_connect.py create mode 100644 data/get_data.py rename data/{ => stats}/gl2022.csv (100%) create mode 100644 data/stats_importer.py rename data.py => data/stats_struct.py (98%) diff --git a/data/db_connect.py b/data/db_connect.py new file mode 100644 index 0000000..081bf67 --- /dev/null +++ b/data/db_connect.py @@ -0,0 +1,23 @@ +import sqlite3 + +class Database: + def __init__(self, database_file): + self.db = sqlite3.connect(database_file) + + def select(self, index): + # Query the database for the specified index + cursor = self.db.cursor() + query = "SELECT name, address FROM people WHERE id = ?" + cursor.execute(query, (index,)) + result = cursor.fetchone() + if result: + return result + else: + return None + + def insert(self, name, address): + # Insert new entry into the database + cursor = self.db.cursor() + query = "INSERT INTO people (name, address) VALUES (?, ?)" + cursor.execute(query, (name, address)) + self.db.commit() diff --git a/data/get_data.py b/data/get_data.py new file mode 100644 index 0000000..e69de29 diff --git a/data/gl2022.csv b/data/stats/gl2022.csv similarity index 100% rename from data/gl2022.csv rename to data/stats/gl2022.csv diff --git a/data/stats_importer.py b/data/stats_importer.py new file mode 100644 index 0000000..e3118e0 --- /dev/null +++ b/data/stats_importer.py @@ -0,0 +1,28 @@ +import csv + +def parse_csv(file_path): + # Function to parse a CSV file and return an array of dictionaries + # Each dictionary corresponds to a row in the CSV with keys: name, address, number_of_kids, night_or_day + + # Open and read the CSV file + with open(file_path, 'r') as csvfile: + # Read each row using csv.reader + reader = csv.reader(ciphertextcsvfile) + + # Initialize an empty list to store the result + result = [] + + # Iterate over each row in the CSV + for row in reader: + # Create a dictionary for the current row + person_dict = { + 'name': row[0], + 'address': row[1], + 'number_of_kids': int(row[2]), + 'night_or_day': row[3] + } + + # Append the dictionary to the result list + result.append(person_dict) + + return result \ No newline at end of file diff --git a/data.py b/data/stats_struct.py similarity index 98% rename from data.py rename to data/stats_struct.py index 186923a..1a46822 100644 --- a/data.py +++ b/data/stats_struct.py @@ -1,4 +1,4 @@ -bb_game_data = { +baseball_game_stats = { "date-yyyymmdd": "", "num-of-game": 0, "day-of-week": "", @@ -155,11 +155,15 @@ bb_game_data = { "days-since-last-game": 0, - # Weather + # Location "latitude": 0, "longitude": 0, + "elevation": 0, + + # Weather "temperature-f": 0, "air-pressure": 0, + "humidity": 0, "average-wind-speed": 0, "percipitation": "", "percipitation-amuont-in": 0, From c78aa38db99dc5b8f8142b7eb9885ef7d002af56 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 2 Apr 2025 15:11:46 -0400 Subject: [PATCH 2/2] Building the database using sql file --- .gitignore | 2 + Pipfile | 13 ++ Pipfile.lock | 441 +++++++++++++++++++++++++++++++++++++++++ data/build_db.sql | 148 ++++++++++++++ data/db_connect.py | 9 + data/stats/gl2022.csv | 1 + data/stats_importer.py | 21 +- main.py | 41 ++-- 8 files changed, 642 insertions(+), 34 deletions(-) create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 data/build_db.sql diff --git a/.gitignore b/.gitignore index eb5a316..9a274f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ +.Trash-1000 target +database diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..0730e3f --- /dev/null +++ b/Pipfile @@ -0,0 +1,13 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +numpy = "*" +matplotlib = "*" + +[dev-packages] + +[requires] +python_version = "3.11" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..c5659f5 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,441 @@ +{ + "_meta": { + "hash": { + "sha256": "e540abdff28d409846f750f9fedb2971e542d6c15b86b99496a68bd9839717bc" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.11" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "contourpy": { + "hashes": [ + "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1", + "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda", + "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d", + "sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509", + "sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6", + "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f", + "sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e", + "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751", + "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86", + "sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b", + "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc", + "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546", + "sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec", + "sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f", + "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82", + "sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c", + "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b", + "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c", + "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c", + "sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53", + "sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80", + "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242", + "sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85", + "sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124", + "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5", + "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2", + "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3", + "sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d", + "sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc", + "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342", + "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1", + "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1", + "sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595", + "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30", + "sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab", + "sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3", + "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2", + "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd", + "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7", + "sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277", + "sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453", + "sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697", + "sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b", + "sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454", + "sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9", + "sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1", + "sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6", + "sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291", + "sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750", + "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", + "sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e", + "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81", + "sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9", + "sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375" + ], + "markers": "python_version >= '3.10'", + "version": "==1.3.1" + }, + "cycler": { + "hashes": [ + "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", + "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c" + ], + "markers": "python_version >= '3.8'", + "version": "==0.12.1" + }, + "fonttools": { + "hashes": [ + "sha256:003548eadd674175510773f73fb2060bb46adb77c94854af3e0cc5bc70260049", + "sha256:0073b62c3438cf0058488c002ea90489e8801d3a7af5ce5f7c05c105bee815c3", + "sha256:1088182f68c303b50ca4dc0c82d42083d176cba37af1937e1a976a31149d4d14", + "sha256:133bedb9a5c6376ad43e6518b7e2cd2f866a05b1998f14842631d5feb36b5786", + "sha256:14a3e3e6b211660db54ca1ef7006401e4a694e53ffd4553ab9bc87ead01d0f05", + "sha256:17f39313b649037f6c800209984a11fc256a6137cbe5487091c6c7187cae4685", + "sha256:193b86e9f769320bc98ffdb42accafb5d0c8c49bd62884f1c0702bc598b3f0a2", + "sha256:2d351275f73ebdd81dd5b09a8b8dac7a30f29a279d41e1c1192aedf1b6dced40", + "sha256:300c310bb725b2bdb4f5fc7e148e190bd69f01925c7ab437b9c0ca3e1c7cd9ba", + "sha256:331954d002dbf5e704c7f3756028e21db07097c19722569983ba4d74df014000", + "sha256:38b947de71748bab150259ee05a775e8a0635891568e9fdb3cdd7d0e0004e62f", + "sha256:3cf4f8d2a30b454ac682e12c61831dcb174950c406011418e739de592bbf8f76", + "sha256:3fd3fccb7b9adaaecfa79ad51b759f2123e1aba97f857936ce044d4f029abd71", + "sha256:442ad4122468d0e47d83bc59d0e91b474593a8c813839e1872e47c7a0cb53b10", + "sha256:47b5e4680002ae1756d3ae3b6114e20aaee6cc5c69d1e5911f5ffffd3ee46c6b", + "sha256:53f5e9767978a4daf46f28e09dbeb7d010319924ae622f7b56174b777258e5ba", + "sha256:62b4c6802fa28e14dba010e75190e0e6228513573f1eeae57b11aa1a39b7e5b1", + "sha256:62cc1253827d1e500fde9dbe981219fea4eb000fd63402283472d38e7d8aa1c6", + "sha256:654ac4583e2d7c62aebc6fc6a4c6736f078f50300e18aa105d87ce8925cfac31", + "sha256:661a8995d11e6e4914a44ca7d52d1286e2d9b154f685a4d1f69add8418961563", + "sha256:6c1d38642ca2dddc7ae992ef5d026e5061a84f10ff2b906be5680ab089f55bb8", + "sha256:6e81c1cc80c1d8bf071356cc3e0e25071fbba1c75afc48d41b26048980b3c771", + "sha256:705837eae384fe21cee5e5746fd4f4b2f06f87544fa60f60740007e0aa600311", + "sha256:7ef04bc7827adb7532be3d14462390dd71287644516af3f1e67f1e6ff9c6d6df", + "sha256:86b2a1013ef7a64d2e94606632683f07712045ed86d937c11ef4dde97319c086", + "sha256:8d1613abd5af2f93c05867b3a3759a56e8bf97eb79b1da76b2bc10892f96ff16", + "sha256:965d0209e6dbdb9416100123b6709cb13f5232e2d52d17ed37f9df0cc31e2b35", + "sha256:96a4271f63a615bcb902b9f56de00ea225d6896052c49f20d0c91e9f43529a29", + "sha256:9d94449ad0a5f2a8bf5d2f8d71d65088aee48adbe45f3c5f8e00e3ad861ed81a", + "sha256:9da650cb29bc098b8cfd15ef09009c914b35c7986c8fa9f08b51108b7bc393b4", + "sha256:a05d1f07eb0a7d755fbe01fee1fd255c3a4d3730130cf1bfefb682d18fd2fcea", + "sha256:a114d1567e1a1586b7e9e7fc2ff686ca542a82769a296cef131e4c4af51e58f4", + "sha256:a1af375734018951c31c0737d04a9d5fd0a353a0253db5fbed2ccd44eac62d8c", + "sha256:b23d30a2c0b992fb1c4f8ac9bfde44b5586d23457759b6cf9a787f1a35179ee0", + "sha256:bc871904a53a9d4d908673c6faa15689874af1c7c5ac403a8e12d967ebd0c0dc", + "sha256:bce60f9a977c9d3d51de475af3f3581d9b36952e1f8fc19a1f2254f1dda7ce9c", + "sha256:bd9825822e7bb243f285013e653f6741954d8147427aaa0324a862cdbf4cbf62", + "sha256:ca7962e8e5fc047cc4e59389959843aafbf7445b6c08c20d883e60ced46370a5", + "sha256:d0cb73ccf7f6d7ca8d0bc7ea8ac0a5b84969a41c56ac3ac3422a24df2680546f", + "sha256:d54a45d30251f1d729e69e5b675f9a08b7da413391a1227781e2a297fa37f6d2", + "sha256:d6ca96d1b61a707ba01a43318c9c40aaf11a5a568d1e61146fafa6ab20890793", + "sha256:d6f195c14c01bd057bc9b4f70756b510e009c83c5ea67b25ced3e2c38e6ee6e9", + "sha256:e2cad98c94833465bcf28f51c248aaf07ca022efc6a3eba750ad9c1e0256d278", + "sha256:e2e993e8db36306cc3f1734edc8ea67906c55f98683d6fd34c3fc5593fdbba4c", + "sha256:e9270505a19361e81eecdbc2c251ad1e1a9a9c2ad75fa022ccdee533f55535dc", + "sha256:f20e2c0dfab82983a90f3d00703ac0960412036153e5023eed2b4641d7d5e692", + "sha256:f36a0868f47b7566237640c026c65a86d09a3d9ca5df1cd039e30a1da73098a0", + "sha256:f59746f7953f69cc3290ce2f971ab01056e55ddd0fb8b792c31a8acd7fee2d28", + "sha256:fa760e5fe8b50cbc2d71884a1eff2ed2b95a005f02dda2fa431560db0ddd927f", + "sha256:ffda9b8cd9cb8b301cae2602ec62375b59e2e2108a117746f12215145e3f786c" + ], + "markers": "python_version >= '3.8'", + "version": "==4.56.0" + }, + "kiwisolver": { + "hashes": [ + "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", + "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", + "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", + "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", + "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", + "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", + "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", + "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", + "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", + "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", + "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", + "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", + "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", + "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", + "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", + "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", + "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", + "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", + "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", + "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", + "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", + "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", + "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", + "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", + "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", + "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", + "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", + "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", + "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", + "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", + "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", + "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", + "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", + "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", + "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", + "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", + "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", + "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", + "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", + "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", + "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", + "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", + "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", + "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", + "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", + "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", + "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", + "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", + "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", + "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", + "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", + "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", + "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", + "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", + "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", + "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", + "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", + "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", + "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", + "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", + "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", + "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", + "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", + "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", + "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", + "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", + "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", + "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", + "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", + "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", + "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", + "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", + "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", + "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", + "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", + "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", + "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", + "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", + "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", + "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794" + ], + "markers": "python_version >= '3.10'", + "version": "==1.4.8" + }, + "matplotlib": { + "hashes": [ + "sha256:01e63101ebb3014e6e9f80d9cf9ee361a8599ddca2c3e166c563628b39305dbb", + "sha256:02582304e352f40520727984a5a18f37e8187861f954fea9be7ef06569cf85b4", + "sha256:057206ff2d6ab82ff3e94ebd94463d084760ca682ed5f150817b859372ec4401", + "sha256:0721a3fd3d5756ed593220a8b86808a36c5031fce489adb5b31ee6dbb47dd5b2", + "sha256:0f69dc9713e4ad2fb21a1c30e37bd445d496524257dfda40ff4a8efb3604ab5c", + "sha256:11b65088c6f3dae784bc72e8d039a2580186285f87448babb9ddb2ad0082993a", + "sha256:1985ad3d97f51307a2cbfc801a930f120def19ba22864182dacef55277102ba6", + "sha256:19b06241ad89c3ae9469e07d77efa87041eac65d78df4fcf9cac318028009b01", + "sha256:2589659ea30726284c6c91037216f64a506a9822f8e50592d48ac16a2f29e044", + "sha256:35e87384ee9e488d8dd5a2dd7baf471178d38b90618d8ea147aced4ab59c9bea", + "sha256:3f06bad951eea6422ac4e8bdebcf3a70c59ea0a03338c5d2b109f57b64eb3972", + "sha256:4c59af3e8aca75d7744b68e8e78a669e91ccbcf1ac35d0102a7b1b46883f1dd7", + "sha256:4f0647b17b667ae745c13721602b540f7aadb2a32c5b96e924cd4fea5dcb90f1", + "sha256:56c5d9fcd9879aa8040f196a235e2dcbdf7dd03ab5b07c0696f80bc6cf04bedd", + "sha256:5d45d3f5245be5b469843450617dcad9af75ca50568acf59997bed9311131a0b", + "sha256:648406f1899f9a818cef8c0231b44dcfc4ff36f167101c3fd1c9151f24220fdc", + "sha256:66e907a06e68cb6cfd652c193311d61a12b54f56809cafbed9736ce5ad92f107", + "sha256:7e496c01441be4c7d5f96d4e40f7fca06e20dcb40e44c8daa2e740e1757ad9e6", + "sha256:8e875b95ac59a7908978fe307ecdbdd9a26af7fa0f33f474a27fcf8c99f64a19", + "sha256:8e8e25b1209161d20dfe93037c8a7f7ca796ec9aa326e6e4588d8c4a5dd1e473", + "sha256:a144867dd6bf8ba8cb5fc81a158b645037e11b3e5cf8a50bd5f9917cb863adfe", + "sha256:a3dfb036f34873b46978f55e240cff7a239f6c4409eac62d8145bad3fc6ba5a3", + "sha256:a97ff127f295817bc34517255c9db6e71de8eddaab7f837b7d341dee9f2f587f", + "sha256:aa3854b5f9473564ef40a41bc922be978fab217776e9ae1545c9b3a5cf2092a3", + "sha256:bc411ebd5889a78dabbc457b3fa153203e22248bfa6eedc6797be5df0164dbf9", + "sha256:c42eee41e1b60fd83ee3292ed83a97a5f2a8239b10c26715d8a6172226988d7b", + "sha256:c96f2c2f825d1257e437a1482c5a2cf4fee15db4261bd6fc0750f81ba2b4ba3d", + "sha256:cfd414bce89cc78a7e1d25202e979b3f1af799e416010a20ab2b5ebb3a02425c", + "sha256:d0673b4b8f131890eb3a1ad058d6e065fb3c6e71f160089b65f8515373394698", + "sha256:d3809916157ba871bcdd33d3493acd7fe3037db5daa917ca6e77975a94cef779", + "sha256:dc6ab14a7ab3b4d813b88ba957fc05c79493a037f54e246162033591e770de6f", + "sha256:e8d2d0e3881b129268585bf4765ad3ee73a4591d77b9a18c214ac7e3a79fb2ba", + "sha256:e9b4bb156abb8fa5e5b2b460196f7db7264fc6d62678c03457979e7d5254b7be", + "sha256:ff2ae14910be903f4a24afdbb6d7d3a6c44da210fc7d42790b87aeac92238a16" + ], + "index": "pypi", + "version": "==3.10.1" + }, + "numpy": { + "hashes": [ + "sha256:05c076d531e9998e7e694c36e8b349969c56eadd2cdcd07242958489d79a7286", + "sha256:0d54974f9cf14acf49c60f0f7f4084b6579d24d439453d5fc5805d46a165b542", + "sha256:11c43995255eb4127115956495f43e9343736edb7fcdb0d973defd9de14cd84f", + "sha256:188dcbca89834cc2e14eb2f106c96d6d46f200fe0200310fc29089657379c58d", + "sha256:1974afec0b479e50438fc3648974268f972e2d908ddb6d7fb634598cdb8260a0", + "sha256:1cf4e5c6a278d620dee9ddeb487dc6a860f9b199eadeecc567f777daace1e9e7", + "sha256:207a2b8441cc8b6a2a78c9ddc64d00d20c303d79fba08c577752f080c4007ee3", + "sha256:218f061d2faa73621fa23d6359442b0fc658d5b9a70801373625d958259eaca3", + "sha256:2aad3c17ed2ff455b8eaafe06bcdae0062a1db77cb99f4b9cbb5f4ecb13c5146", + "sha256:2fa8fa7697ad1646b5c93de1719965844e004fcad23c91228aca1cf0800044a1", + "sha256:31504f970f563d99f71a3512d0c01a645b692b12a63630d6aafa0939e52361e6", + "sha256:3387dd7232804b341165cedcb90694565a6015433ee076c6754775e85d86f1fc", + "sha256:4ba5054787e89c59c593a4169830ab362ac2bee8a969249dc56e5d7d20ff8df9", + "sha256:4f92084defa704deadd4e0a5ab1dc52d8ac9e8a8ef617f3fbb853e79b0ea3592", + "sha256:65ef3468b53269eb5fdb3a5c09508c032b793da03251d5f8722b1194f1790c00", + "sha256:6f527d8fdb0286fd2fd97a2a96c6be17ba4232da346931d967a0630050dfd298", + "sha256:7051ee569db5fbac144335e0f3b9c2337e0c8d5c9fee015f259a5bd70772b7e8", + "sha256:7716e4a9b7af82c06a2543c53ca476fa0b57e4d760481273e09da04b74ee6ee2", + "sha256:79bd5f0a02aa16808fcbc79a9a376a147cc1045f7dfe44c6e7d53fa8b8a79392", + "sha256:7a4e84a6283b36632e2a5b56e121961f6542ab886bc9e12f8f9818b3c266bfbb", + "sha256:8120575cb4882318c791f839a4fd66161a6fa46f3f0a5e613071aae35b5dd8f8", + "sha256:81413336ef121a6ba746892fad881a83351ee3e1e4011f52e97fba79233611fd", + "sha256:8146f3550d627252269ac42ae660281d673eb6f8b32f113538e0cc2a9aed42b9", + "sha256:879cf3a9a2b53a4672a168c21375166171bc3932b7e21f622201811c43cdd3b0", + "sha256:892c10d6a73e0f14935c31229e03325a7b3093fafd6ce0af704be7f894d95687", + "sha256:92bda934a791c01d6d9d8e038363c50918ef7c40601552a58ac84c9613a665bc", + "sha256:9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f", + "sha256:9eeea959168ea555e556b8188da5fa7831e21d91ce031e95ce23747b7609f8a4", + "sha256:a0258ad1f44f138b791327961caedffbf9612bfa504ab9597157806faa95194a", + "sha256:a761ba0fa886a7bb33c6c8f6f20213735cb19642c580a931c625ee377ee8bd39", + "sha256:a7b9084668aa0f64e64bd00d27ba5146ef1c3a8835f3bd912e7a9e01326804c4", + "sha256:a84eda42bd12edc36eb5b53bbcc9b406820d3353f1994b6cfe453a33ff101775", + "sha256:ab2939cd5bec30a7430cbdb2287b63151b77cf9624de0532d629c9a1c59b1d5c", + "sha256:ac0280f1ba4a4bfff363a99a6aceed4f8e123f8a9b234c89140f5e894e452ecd", + "sha256:adf8c1d66f432ce577d0197dceaac2ac00c0759f573f28516246351c58a85020", + "sha256:b4adfbbc64014976d2f91084915ca4e626fbf2057fb81af209c1a6d776d23e3d", + "sha256:bb649f8b207ab07caebba230d851b579a3c8711a851d29efe15008e31bb4de24", + "sha256:bce43e386c16898b91e162e5baaad90c4b06f9dcbe36282490032cec98dc8ae7", + "sha256:bd3ad3b0a40e713fc68f99ecfd07124195333f1e689387c180813f0e94309d6f", + "sha256:c3f7ac96b16955634e223b579a3e5798df59007ca43e8d451a0e6a50f6bfdfba", + "sha256:cf28633d64294969c019c6df4ff37f5698e8326db68cc2b66576a51fad634880", + "sha256:d0f35b19894a9e08639fd60a1ec1978cb7f5f7f1eace62f38dd36be8aecdef4d", + "sha256:db1f1c22173ac1c58db249ae48aa7ead29f534b9a948bc56828337aa84a32ed6", + "sha256:dbe512c511956b893d2dacd007d955a3f03d555ae05cfa3ff1c1ff6df8851854", + "sha256:df2f57871a96bbc1b69733cd4c51dc33bea66146b8c63cacbfed73eec0883017", + "sha256:e2f085ce2e813a50dfd0e01fbfc0c12bbe5d2063d99f8b29da30e544fb6483b8", + "sha256:e642d86b8f956098b564a45e6f6ce68a22c2c97a04f5acd3f221f57b8cb850ae", + "sha256:e9e0a277bb2eb5d8a7407e14688b85fd8ad628ee4e0c7930415687b6564207a4", + "sha256:ea2bb7e2ae9e37d96835b3576a4fa4b3a97592fbea8ef7c3587078b0068b8f09", + "sha256:ee4d528022f4c5ff67332469e10efe06a267e32f4067dc76bb7e2cddf3cd25ff", + "sha256:f05d4198c1bacc9124018109c5fba2f3201dbe7ab6e92ff100494f236209c960", + "sha256:f34dc300df798742b3d06515aa2a0aee20941c13579d7a2f2e10af01ae4901ee", + "sha256:f4162988a360a29af158aeb4a2f4f09ffed6a969c9776f8f3bdee9b06a8ab7e5", + "sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c", + "sha256:f7de08cbe5551911886d1ab60de58448c6df0f67d9feb7d1fb21e9875ef95e91" + ], + "index": "pypi", + "version": "==2.2.4" + }, + "packaging": { + "hashes": [ + "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", + "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f" + ], + "markers": "python_version >= '3.8'", + "version": "==24.2" + }, + "pillow": { + "hashes": [ + "sha256:015c6e863faa4779251436db398ae75051469f7c903b043a48f078e437656f83", + "sha256:0a2f91f8a8b367e7a57c6e91cd25af510168091fb89ec5146003e424e1558a96", + "sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65", + "sha256:2062ffb1d36544d42fcaa277b069c88b01bb7298f4efa06731a7fd6cc290b81a", + "sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352", + "sha256:3362c6ca227e65c54bf71a5f88b3d4565ff1bcbc63ae72c34b07bbb1cc59a43f", + "sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20", + "sha256:36ba10b9cb413e7c7dfa3e189aba252deee0602c86c309799da5a74009ac7a1c", + "sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114", + "sha256:3a5fe20a7b66e8135d7fd617b13272626a28278d0e578c98720d9ba4b2439d49", + "sha256:3cdcdb0b896e981678eee140d882b70092dac83ac1cdf6b3a60e2216a73f2b91", + "sha256:4637b88343166249fe8aa94e7c4a62a180c4b3898283bb5d3d2fd5fe10d8e4e0", + "sha256:4db853948ce4e718f2fc775b75c37ba2efb6aaea41a1a5fc57f0af59eee774b2", + "sha256:4dd43a78897793f60766563969442020e90eb7847463eca901e41ba186a7d4a5", + "sha256:54251ef02a2309b5eec99d151ebf5c9904b77976c8abdcbce7891ed22df53884", + "sha256:54ce1c9a16a9561b6d6d8cb30089ab1e5eb66918cb47d457bd996ef34182922e", + "sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c", + "sha256:5bb94705aea800051a743aa4874bb1397d4695fb0583ba5e425ee0328757f196", + "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", + "sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861", + "sha256:73ddde795ee9b06257dac5ad42fcb07f3b9b813f8c1f7f870f402f4dc54b5269", + "sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1", + "sha256:7d33d2fae0e8b170b6a6c57400e077412240f6f5bb2a342cf1ee512a787942bb", + "sha256:7fdadc077553621911f27ce206ffcbec7d3f8d7b50e0da39f10997e8e2bb7f6a", + "sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081", + "sha256:837060a8599b8f5d402e97197d4924f05a2e0d68756998345c829c33186217b1", + "sha256:89dbdb3e6e9594d512780a5a1c42801879628b38e3efc7038094430844e271d8", + "sha256:8c730dc3a83e5ac137fbc92dfcfe1511ce3b2b5d7578315b63dbbb76f7f51d90", + "sha256:8e275ee4cb11c262bd108ab2081f750db2a1c0b8c12c1897f27b160c8bd57bbc", + "sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5", + "sha256:93a18841d09bcdd774dcdc308e4537e1f867b3dec059c131fde0327899734aa1", + "sha256:9409c080586d1f683df3f184f20e36fb647f2e0bc3988094d4fd8c9f4eb1b3b3", + "sha256:96f82000e12f23e4f29346e42702b6ed9a2f2fea34a740dd5ffffcc8c539eb35", + "sha256:9aa9aeddeed452b2f616ff5507459e7bab436916ccb10961c4a382cd3e03f47f", + "sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c", + "sha256:a07dba04c5e22824816b2615ad7a7484432d7f540e6fa86af60d2de57b0fcee2", + "sha256:a3cd561ded2cf2bbae44d4605837221b987c216cff94f49dfeed63488bb228d2", + "sha256:a697cd8ba0383bba3d2d3ada02b34ed268cb548b369943cd349007730c92bddf", + "sha256:a76da0a31da6fcae4210aa94fd779c65c75786bc9af06289cd1c184451ef7a65", + "sha256:a85b653980faad27e88b141348707ceeef8a1186f75ecc600c395dcac19f385b", + "sha256:a8d65b38173085f24bc07f8b6c505cbb7418009fa1a1fcb111b1f4961814a442", + "sha256:aa8dd43daa836b9a8128dbe7d923423e5ad86f50a7a14dc688194b7be5c0dea2", + "sha256:ab8a209b8485d3db694fa97a896d96dd6533d63c22829043fd9de627060beade", + "sha256:abc56501c3fd148d60659aae0af6ddc149660469082859fa7b066a298bde9482", + "sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe", + "sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc", + "sha256:b20be51b37a75cc54c2c55def3fa2c65bb94ba859dde241cd0a4fd302de5ae0a", + "sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec", + "sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3", + "sha256:b6123aa4a59d75f06e9dd3dac5bf8bc9aa383121bb3dd9a7a612e05eabc9961a", + "sha256:bd165131fd51697e22421d0e467997ad31621b74bfc0b75956608cb2906dda07", + "sha256:bf902d7413c82a1bfa08b06a070876132a5ae6b2388e2712aab3a7cbc02205c6", + "sha256:c12fc111ef090845de2bb15009372175d76ac99969bdf31e2ce9b42e4b8cd88f", + "sha256:c1eec9d950b6fe688edee07138993e54ee4ae634c51443cfb7c1e7613322718e", + "sha256:c640e5a06869c75994624551f45e5506e4256562ead981cce820d5ab39ae2192", + "sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0", + "sha256:cfd5cd998c2e36a862d0e27b2df63237e67273f2fc78f47445b14e73a810e7e6", + "sha256:d3d8da4a631471dfaf94c10c85f5277b1f8e42ac42bade1ac67da4b4a7359b73", + "sha256:d44ff19eea13ae4acdaaab0179fa68c0c6f2f45d66a4d8ec1eda7d6cecbcc15f", + "sha256:dd0052e9db3474df30433f83a71b9b23bd9e4ef1de13d92df21a52c0303b8ab6", + "sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547", + "sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9", + "sha256:e06695e0326d05b06833b40b7ef477e475d0b1ba3a6d27da1bb48c23209bf457", + "sha256:e1abe69aca89514737465752b4bcaf8016de61b3be1397a8fc260ba33321b3a8", + "sha256:e267b0ed063341f3e60acd25c05200df4193e15a4a5807075cd71225a2386e26", + "sha256:e5449ca63da169a2e6068dd0e2fcc8d91f9558aba89ff6d02121ca8ab11e79e5", + "sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab", + "sha256:f189805c8be5ca5add39e6f899e6ce2ed824e65fb45f3c28cb2841911da19070", + "sha256:f7955ecf5609dee9442cbface754f2c6e541d9e6eda87fad7f7a989b0bdb9d71", + "sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9", + "sha256:fbd43429d0d7ed6533b25fc993861b8fd512c42d04514a0dd6337fb3ccf22761" + ], + "markers": "python_version >= '3.9'", + "version": "==11.1.0" + }, + "pyparsing": { + "hashes": [ + "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", + "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be" + ], + "markers": "python_version >= '3.9'", + "version": "==3.2.3" + }, + "python-dateutil": { + "hashes": [ + "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", + "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.9.0.post0" + }, + "six": { + "hashes": [ + "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", + "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==1.17.0" + } + }, + "develop": {} +} diff --git a/data/build_db.sql b/data/build_db.sql new file mode 100644 index 0000000..f376dff --- /dev/null +++ b/data/build_db.sql @@ -0,0 +1,148 @@ +CREATE TABLE IF NOT EXISTS teams ( + team CHAR(3) NOT NULL, + park_id CHAR(5) NOT NULL, + league CHAR(2) NOT NULL, + FOREIGN KEY (park_id) REFERENCES parks(park_id), + PRIMARY KEY (team) +); + +CREATE TABLE IF NOT EXISTS games ( + id INTEGER NOT NULL, + game_date date NOT NULL, + game_number TINYINT UNSIGNED NOT NULL, + day_of_week TINYINT UNSIGNED NOT NULL, + length_in_outs TINYINT UNSIGNED NOT NULL, + day_night BIT NOT NULL, + completion_info VARCHAR, + forfeit CHAR(1), + protest CHAR(1), + park_id CHAR(5) NOT NULL, + attendence INT UNSIGNED NOT NULL, + length_in_minutes INT UNSIGNED NOT NULL, + home_plate_ump_id CHAR(8), + home_plate_ump_name VARCHAR, + b1_ump_id CHAR(8), + b1_ump_name VARCHAR, + b2_ump_id CHAR(8), + b2 ump_name VARCHAR, + b3_ump_id CHAR(8), + b3_ump_name VARCHAR, + lf_ump_id CHAR(8), + lf_ump_name VARCHAR, + rf_ump_id CHAR(8), + rf_ump_name VARCHAR, + weather_id INT NOT NULL, + FOREIGN KEY (weather_id) REFERENCES weather(id) + PRIMARY KEY (id) +); + +CREATE TABLE IF NOT EXISTS parks ( + park_id CHAR(5) NOT NULL, + park_name VARCHAR, + latitude FLOAT, + longitude FLOAT, + FOREIGN KEY (park_id) REFERENCES games(park_id), + PRIMARY KEY (park_id) +); + +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 team_game ( + game INTEGER NOT NULL, + team CHAR(3) NOT NULL, + game_num TINYINT UNSIGNED, + score TINYINT UNSIGNED, + line_score CHAR(9), + + at_bats TINYINT UNSIGNED, + hits TINYINT UNSIGNED, + doubles TINYINT UNSIGNED, + triples TINYINT UNSIGNED, + homeruns TINYINT UNSIGNED, + rbis TINYINT UNSIGNED, + sacrifice_hits TINYINT UNSIGNED, + sacrifice_flies TINYINT UNSIGNED, + hit_by_pitch TINYINT UNSIGNED, + walks TINYINT UNSIGNED, + intentional_walks TINYINT UNSIGNED, + strikeouts TINYINT UNSIGNED, + stolen_bases TINYINT UNSIGNED, + caught_stealing TINYINT UNSIGNED, + grounded_double TINYINT UNSIGNED, + interference TINYINT UNSIGNED, + left_on_base TINYINT UNSIGNED, + pitchers_used TINYINT UNSIGNED, + individual_earned_runs TINYINT UNSIGNED, + earned_runs TINYINT UNSIGNED, + wild_pitches TINYINT UNSIGNED, + balks TINYINT UNSIGNED, + putouts TINYINT UNSIGNED, + assists TINYINT UNSIGNED, + errors TINYINT UNSIGNED, + passed TINYINT UNSIGNED, + double_play TINYINT UNSIGNED, + triple_play TINYINT UNSIGNED, + + manager_id CHAR(8), + manager_name VARCHAR, + + starting_pitchter_id CHAR(8), + starting_pitcher_name VARCHAR, + + starting_1_id CHAR(8), + starting_1_name VARCHAR, + starting_1_position TINYINT UNSIGNED, + + starting_2_id CHAR(8), + starting_2_name VARCHAR, + starting_2_position TINYINT UNSIGNED, + + starting_3_id CHAR(8), + starting_3_name VARCHAR, + starting_3_position TINYINT UNSIGNED, + + starting_4_id CHAR(8), + starting_4_name VARCHAR, + starting_4_position TINYINT UNSIGNED, + + starting_5_id CHAR(8), + starting_5_name VARCHAR, + starting_5_position TINYINT UNSIGNED, + + starting_6_id CHAR(8), + starting_6_name VARCHAR, + starting_6_position TINYINT UNSIGNED, + + starting_7_id CHAR(8), + starting_7_name VARCHAR, + starting_7_position TINYINT UNSIGNED, + + starting_8_id CHAR(8), + starting_8_name VARCHAR, + starting_8_position TINYINT UNSIGNED, + + starting_9_id CHAR(8), + starting_9_name VARCHAR, + starting_9_position TINYINT UNSIGNED, + + FOREIGN KEY (game) REFERENCES games(id), + FOREIGN KEY (team) REFERENCES teams(team) + PRIMARY KEY (game, team) +); + + diff --git a/data/db_connect.py b/data/db_connect.py index 081bf67..adba167 100644 --- a/data/db_connect.py +++ b/data/db_connect.py @@ -4,6 +4,15 @@ class Database: def __init__(self, database_file): self.db = sqlite3.connect(database_file) + def build_database(self, sql_file_path): + sql_script_string = '' + with open(sql_file_path, 'r') as sql_file: + sql_script_string = sql_file.read() + + cursor = self.db.cursor() + cursor.executescript(sql_script_string) + self.db.commit() + def select(self, index): # Query the database for the specified index cursor = self.db.cursor() diff --git a/data/stats/gl2022.csv b/data/stats/gl2022.csv index 8a02376..e80db81 100644 --- a/data/stats/gl2022.csv +++ b/data/stats/gl2022.csv @@ -1,3 +1,4 @@ +"date","num-of-game","day-of-week","visiting-team","visiting-league","visiting-game-num","home-team","home-league","home-game-num","visiting-score","home-score","length-in-outs","day-night","completion-info","forfeit","protest","park-id","attendance","length-in-min","visiting-line-scores","home-line-scores","visiting-at-bats","visiting-hits","visiting-doubles","visiting-triples","visiting-homeruns","visiting-rbi","visiting-sacrifice-hits","visiting-sacrifice-flies","visiting-hit-by-pitch","visiting-walks","visiting-intentional-walks","visiting-strikeouts","visiting-stolen-bases","visiting-caught-stealing","visiting-grounded-double","visiting-interference","visiting-left-on-base","visiting-pitchers-used","visiting-individual-earned-runs","visiting-team-earned-runs","visiting-wild-pitches","visiting-balks","visiting-putouts","visiting-assists","visiting-errors","visiting-passed","visiting-double-play","visiting-triple-play","home-at-bats","home-hits","home-doubles","home-triples","home-homeruns","home-rbi","home-sacrifice-hits","home-sacrifice-flies","home-hit-by-pitch","home-walks","home-intentional-walks","home-strikeouts","home-stolen-bases","home-caught-stealing","home-grounded-double","home-interference","home-left-on-base","home-pitchers-used","home-individual-earned-runs","home-team-earned-runs","home-wild-pitches","home-balks","home-putouts","home-assists","home-errors","home-passed","home-double-play","home-triple-play","home-plate-ump-id",home-plate-ump-name","1b-plate-ump-id","1b-plate-ump-name","2b-plate-ump-id","2b-plate-ump-name","3b-plate-ump-id","3b-plate-ump-name","lf-plate-ump-id","lf-plate-ump-name","rf-plate-ump-id","rf-plate-ump-name","visiting-manager-id","visiting-manager-name","home-manager-id","home-manager-name","winning-pitcher-id","winning-pitcher-name","losing-pitcher-id","losing-pitcher-name","saving-pitcher-id","saving-pitcher-name","rbi-batter-id","rbi-batter-name","visiting-start-pitcher-id","visiting-start-pitcher-name","home-start-pitcher-id","home-start-pitcher-name","visiting-starting-1-id","visiting-starting-1-name","visiting-starting-1-position","visiting-starting-2-id","visiting-starting-2-name","visiting-starting-2-position","visiting-starting-3-id","visiting-starting-3-name","visiting-starting-3-position","visiting-starting-4-id","visiting-starting-4-name","visiting-starting-4-position","visiting-starting-5-id","visiting-starting-5-name","visiting-starting-5-position","visiting-starting-6-id","visiting-starting-6-name","visiting-starting-6-position","visiting-starting-7-id","visiting-starting-7-name","visiting-starting-7-position","visiting-starting-8-id","visiting-starting-8-name","visiting-starting-8-position","visiting-starting-9-id","visiting-starting-9-name","visiting-starting-9-position","home-starting-1-id","home-starting-1-name","home-starting-1-position","home-starting-2-id","home-starting-2-name","home-starting-2-position","home-starting-3-id","home-starting-3-name","home-starting-3-position","home-starting-4-id","home-starting-4-name","home-starting-4-position","home-starting-5-id","home-starting-5-name","home-starting-5-position","home-starting-6-id","home-starting-6-name","home-starting-6-position","home-starting-7-id","home-starting-7-name","home-starting-7-position","home-starting-8-id","home-starting-8-name","home-starting-8-position","home-starting-9-id","home-starting-9-name","home-starting-9-position","additional-info","aquisition-info" "20220407","0","Thu","SDN","NL",1,"ARI","NL",1,2,4,51,"N","","","","PHO01",35508,198,"001100000","000000004",29,4,1,0,0,2,0,0,0,7,0,5,1,0,2,0,7,5,4,4,2,0,24,8,0,0,1,0,26,3,0,0,1,3,0,0,1,7,0,6,0,0,1,0,6,6,2,2,0,0,27,9,0,0,2,0,"vanol901","Larry Vanover","belld901","Dan Bellino","barbs901","Sean Barber","valej901","Junior Valentine","","(none)","","(none)","melvb001","Bob Melvin","lovut001","Tony Lovullo","mantj002","Joe Mantiply","suarr002","Robert Suarez","","(none)","beers001","Seth Beer","darvy001","Yu Darvish","bumgm001","Madison Bumgarner","nolaa002","Austin Nola",2,"machm001","Manny Machado",5,"cronj001","Jake Cronenworth",4,"voitl001","Luke Voit",10,"myerw001","Wil Myers",9,"hosme001","Eric Hosmer",3,"profj001","Jurickson Profar",7,"kim-h002","Ha-Seong Kim",6,"grist001","Trent Grisham",8,"varsd001","Daulton Varsho",8,"martk001","Ketel Marte",4,"perad001","David Peralta",7,"walkc002","Christian Walker",3,"smitp002","Pavin Smith",9,"kellc002","Carson Kelly",2,"beers001","Seth Beer",10,"ellid002","Drew Ellis",5,"perdg001","Gerardo Perdomo",6,"","Y" "20220407","0","Thu","CIN","NL",1,"ATL","NL",1,6,3,54,"N","","","","ATL03",40545,181,"012003000","001000020",35,10,0,0,1,6,0,1,1,1,0,13,0,0,1,0,5,5,2,2,0,0,27,7,1,0,0,0,31,4,0,0,1,2,0,0,0,5,0,13,0,0,0,0,6,4,6,6,0,0,27,7,0,0,1,0,"laynj901","Jerry Layne","wendh902","Hunter Wendelstedt","whitc901","Chad Whitson","hamaa901","Adam Hamari","","(none)","","(none)","belld002","David Bell","snitb801","Brian Snitker","mahlt001","Tyler Mahle","friem001","Max Fried","santt001","Tony Santillan","farmk001","Kyle Farmer","mahlt001","Tyler Mahle","friem001","Max Fried","indij001","Jonathan India",4,"aquia001","Aristides Aquino",9,"phamt001","Tommy Pham",7,"vottj001","Joey Votto",3,"stept001","Tyler Stephenson",2,"senzn001","Nick Senzel",8,"mousm001","Mike Moustakas",10,"farmk001","Kyle Farmer",6,"drurb001","Brandon Drury",5,"rosae001","Eddie Rosario",9,"olsom001","Matt Olson",3,"rilea001","Austin Riley",5,"ozunm001","Marcell Ozuna",7,"albio001","Ozzie Albies",4,"duvaa001","Adam Duvall",8,"darnt001","Travis d'Arnaud",2,"dicka001","Alex Dickerson",10,"swand001","Dansby Swanson",6,"","Y" "20220407","0","Thu","MIL","NL",1,"CHN","NL",1,4,5,51,"D","","","","CHI11",35112,198,"000100210","00003020x",33,10,4,0,0,4,0,2,1,4,0,9,1,0,2,0,9,3,5,5,0,0,24,10,0,0,1,0,29,8,3,0,1,5,0,1,1,4,0,7,0,1,1,0,6,6,4,4,0,0,27,9,0,0,2,0,"barrt901","Ted Barrett","barkl901","Lance Barksdale","lentn901","Nic Lentz","cejan901","Nestor Ceja","","(none)","","(none)","counc001","Craig Counsell","rossd001","David Ross","givem001","Mychal Givens","ashba003","Aaron Ashby","robed002","David Robertson","happi001","Ian Happ","burnc002","Corbin Burnes","hendk001","Kyle Hendricks","wongk001","Kolten Wong",4,"adamw002","Willy Adames",6,"yelic001","Christian Yelich",7,"mccua001","Andrew McCutchen",10,"tellr001","Rowdy Tellez",3,"renfh001","Hunter Renfroe",9,"narvo001","Omar Narvaez",2,"cainl001","Lorenzo Cain",8,"petej002","Jace Peterson",5,"orter001","Rafael Ortega",10,"madrn001","Nick Madrigal",4,"contw001","Willson Contreras",2,"happi001","Ian Happ",7,"schwf001","Frank Schwindel",3,"suzus001","Seiya Suzuki",9,"heywj001","Jason Heyward",8,"wisdp001","Patrick Wisdom",5,"hoern001","Nico Hoerner",6,"","Y" diff --git a/data/stats_importer.py b/data/stats_importer.py index e3118e0..fc6131f 100644 --- a/data/stats_importer.py +++ b/data/stats_importer.py @@ -7,22 +7,7 @@ def parse_csv(file_path): # Open and read the CSV file with open(file_path, 'r') as csvfile: # Read each row using csv.reader - reader = csv.reader(ciphertextcsvfile) + reader = csv.DictReader(ciphertextcsvfile) + list_of_dict = list(reader) - # Initialize an empty list to store the result - result = [] - - # Iterate over each row in the CSV - for row in reader: - # Create a dictionary for the current row - person_dict = { - 'name': row[0], - 'address': row[1], - 'number_of_kids': int(row[2]), - 'night_or_day': row[3] - } - - # Append the dictionary to the result list - result.append(person_dict) - - return result \ No newline at end of file + return list_of_dict \ No newline at end of file diff --git a/main.py b/main.py index fdeff2b..6db24a1 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ import numpy as np # helps with the math import matplotlib.pyplot as plt # to plot error during training +from data.db_connect import Database # input data inputs = np.array([[0, 0, 1, 0], @@ -55,22 +56,30 @@ class NeuralNetwork: prediction = self.sigmoid(np.dot(new_input, self.weights)) return prediction -# create neural network -NN = NeuralNetwork(inputs, outputs) -# train neural network -NN.train() +if __name__ == '__main__': + sql_file = "./data/build_db.sql" + db_file = "./database/baseball.db" -# create two new examples to predict -example = np.array([[1, 1, 1, 0]]) -example_2 = np.array([[0, 0, 1, 1]]) + db_conn = Database(db_file) + db_conn.build_database(sql_file) -# print the predictions for both examples -print(NN.predict(example), ' - Correct: ', example[0][0]) -print(NN.predict(example_2), ' - Correct: ', example_2[0][0]) +else: + # create neural network + NN = NeuralNetwork(inputs, outputs) + # train neural network + NN.train() -# plot the error over the entire training duration -plt.figure(figsize=(15,5)) -plt.plot(NN.epoch_list, NN.error_history) -plt.xlabel('Epoch') -plt.ylabel('Error') -plt.savefig('plot.png') \ No newline at end of file + # create two new examples to predict + example = np.array([[1, 1, 1, 0]]) + example_2 = np.array([[0, 0, 1, 1]]) + + # print the predictions for both examples + print(NN.predict(example), ' - Correct: ', example[0][0]) + print(NN.predict(example_2), ' - Correct: ', example_2[0][0]) + + # plot the error over the entire training duration + plt.figure(figsize=(15,5)) + plt.plot(NN.epoch_list, NN.error_history) + plt.xlabel('Epoch') + plt.ylabel('Error') + plt.savefig('plot.png') \ No newline at end of file