environnement:
Dans cet article, je souhaite analyser moi-même les données de baseball comme Sabre Metrics! Ceci est un résumé du flux jusqu'au point où j'ai apporté les données nécessaires que j'ai faites et les ai mises dans la base de données.
Le 29 octobre 2015, Softbank a remporté la série japonaise au Japon et les Royals ont remporté la série mondiale pour la deuxième fois consécutive, ce qui est une saison très excitante pour moi en tant que passionné de baseball.
La raison pour laquelle je m'intéressais à Sabre était que je voulais d'abord étudier l'analyse des données. Ensuite, quand j'ai réfléchi au type de données que je devais analyser et comment en tirer le meilleur parti, je suis arrivé à l'idée de pirater mes données de baseball préférées avec Python.
Par conséquent, j'espère que cet article sera d'une certaine aide pour ceux qui pensent à la même chose.
Retrosheet Malheureusement, NPB n'est pas aussi détaillé que MLB et ne peut pas être téléchargé (il peut être collecté par grattage).
Donc, cette fois, je vais télécharger les données MLB depuis Retrosheet (il y a d'autres Lahman etc.) et les mettre dans la base de données.
(1) py-retrosheet, Chadwick Les données Retrosheet sont très difficiles à lire telles quelles et le nettoyage des données est très gênant. Cependant, il y a des gens qui ont organisé ces données soigneusement, donc je vais utiliser ce code.
$ brew update
$ brew install chadwick
$ git clone https://github.com/wellsoliver/py-retrosheet.git
Il télécharge également les bibliothèques nécessaires pour utiliser py-retrosheet. mysql-python requis pour sqlalchemy et MySQL utilisé cette fois.
$ pip install sqlalchemy mysql-python
(2) MySQL Le téléchargement et l'importation de données vers SQL se font également avec py-retrosheet, le reste est donc de maintenir une base de données telle que MySQL.
$ brew install mysql
Ensuite, définissez divers paramètres pour MySQL. (Cette fois, créez et utilisez un utilisateur de test)
$ mysql_secure_installation #Paramètres de sécurité tels que le mot de passe
$ mysql.server start
$ mysql -u root -p
Enter password:Ce que vous définissez
mysql> CREATE DATABASE retrosheet #Créer une base de données
mysql> CREATE USER test IDENTIFIED BY "*****(Your Password)" #Créer un utilisateur de test nommé test
mysql> GRANT ALL ON retrosheet.* TO test #Définir l'accès à la base de données de feuilles rétrospectives pour les utilisateurs de test
Après cela, importez le schéma avec l'utilisateur de test créé précédemment
$ mysql -u test[USER_NAME] -p retrosheet[DB_NAME] < sql/schema.sql
Ceci termine les paramètres MySQL.
parse.py[line58-59,61]
sql = 'SELECT * FROM rosters WHERE year = %s AND player_id = %s AND team_tx = %s'
res = conn.execute(sql, [row[0], row[1], row[6]])
if results.rowcount() == 1:
parse.py[modifié]
sql = 'SELECT * FROM rosters WHERE year = ? AND player_id = ? AND team_tx = ?'
res = conn.execute(sql, [row[0], row[1], row[6]])
if len(results.fetchall()) == 1:
Enfin, éditez congit.ini et configurez la base de données que vous venez de créer
$ cd scripts
$ cp config.ini.dist config.ini
$ vim config.ini # config.édition ini
config.ini
[database]
engine = mysql # or sqlite, postgresql
host = localhost
database = retrosheet
schema = retrosheet
user = test
password = ****** # your password
Ensuite, téléchargez les données avec download.py et importez-les dans SQL avec parse.py!
$ python download.py -y 2014 #Précisez l'année à télécharger dans le calendrier, aucune option n'est possible
$ python parse.py -y 2014 #Importer dans SQL
Vérifiez le contenu de SQL avec ceci, et s'il peut être importé correctement, il se termine. Il ne vous reste plus qu'à analyser les données comme vous le souhaitez!
mysql> select * from retrosheet.teams;
+---------+-------+---------------+--------------+
| TEAM_ID | LG_ID | LOC_TEAM_TX | NAME_TEAM_TX |
+---------+-------+---------------+--------------+
| ANA | A | Anaheim | Angels |
| BAL | A | Baltimore | Orioles |
| BOS | A | Boston | Red Sox |
| CHA | A | Chicago | White Sox |
| CLE | A | Cleveland | Indians |
| DET | A | Detroit | Tigers |
| HOU | A | Houston | Astros |
| KCA | A | Kansas City | Royals |
| MIN | A | Minnesota | Twins |
| NYA | A | New York | Yankees |
| OAK | A | Oakland | Athletics |
| SEA | A | Seattle | Mariners |
| TBA | A | Tampa Bay | Rays |
| TEX | A | Texas | Rangers |
| TOR | A | Toronto | Blue Jays |
| ARI | N | Arizona | Diamondbacks |
| ATL | N | Atlanta | Braves |
| CHN | N | Chicago | Cubs |
| CIN | N | Cincinnati | Reds |
| COL | N | Colorado | Rockies |
| LAN | N | Los Angeles | Dodgers |
| MIA | N | Miami | Marlins |
| MIL | N | Milwaukee | Brewers |
| NYN | N | New York | Mets |
| PHI | N | Philadelphia | Phillies |
| PIT | N | Pittsburgh | Pirates |
| SDN | N | San Diego | Padres |
| SFN | N | San Francisco | Giants |
| SLN | N | St. Louis | Cardinals |
| WAS | N | Washington | Nationals |
+---------+-------+---------------+--------------+
Recommended Posts