見出し画像

Pythonでボートレース情報を扱う。データ収集環境を再整備!

こんにちは!今回は、過去に作成したボートレースのデータ収集プログラムを改修した話を共有します。2年前くらいに書いたプログラムを久しぶりに見返してみると、いくつか手を入れたい箇所が目に留まりました。
新しいPC環境でPythonの仮想環境を整え、データベース処理を強化したので、そのプロセスや考えたポイントをまとめていきます。特に、データ分析や公営ギャンブル好きな方には楽しめる連載シリーズにしたいです!


今回やったことの概要

過去の反省として、「データ収集で満足してしまった」と感じています。
別件でPythonでWebアプリを構築したことで知識も得られたため、今回はきちんとデータ分析まで実施できるように、改修が容易となるよう再整備したいと思います。

なので、、、

  • 扱いに慣れてるSQLite3を採用して、VScodeでCSV並みにデータの扱いを簡単にする

  • SQLを書く代わりにSQLAlchemyを採用してSQLを勉強する時間を減らす

ことで、データ分析に至るまでのハードルを下げるところから始めたいと思います。

今回実施したのは次の通りです:

  1. 新しいPCにPythonの仮想環境をセットアップ

  2. ボートレースの開催場ごとのデータをSQLite3に書き込む機能を実装

これにより、将来的なデータ分析やAI予測モデルへの応用がしやすくなる基盤を整えました。


具体的にやったこと

1. Python仮想環境の構築

まずは、新しいPC環境でPythonを動かす準備をしました。仮想環境を使う理由は、プロジェクトごとに依存関係を管理しやすくするためです。なので`venv`を使って仮想環境を構築しました。
私の場合は、「myapp」という親フォルダにして、既に別Webサービスの仮想環境が存在していました。なので、今回は別に「myapp」直下に「boatvenv」をフォルダを作ってから、

python -m venv boatvenv

を実行。あとはエクスプローラーで元のプログラムを「boatvenv」フォルダに配置してから、

>cd boatvenv
boatvenv>.\Scripts\activate

を実行。あとは、既存プログラムで使っているモジュールのbeautifulsoupとpandas、それと今回新たに使うSQLを使わないで済むようにsqlalchemyをインストール。

pip install beautifulsoup4 pandas sqlalchemy

これで無事に開発環境を作ることができました。


2. 日付指定でボートレースの開催データを取得しSQLite3へ保存

これまでのプログラムでは抽出したデータをCSV出力していましたが、SQLite3を使うことで、データのクエリや結合操作を簡単にしたいと思います。

こでこで、時代の進化を感じます。

これまでは、SQLalchemyやSQLite3を書籍やネット調べながら適したコードを張り付けて実行と修正を繰り返していました。元々開発者ではない私は、調べているうちに嫌になり、やっとデータベース挿入機能が出来上がる頃には1ヶ月くらいかかったことを覚えています。

2024年の今。修正要件をchatGPTに指示すればプログラムを書いてくれます。
元プログラムを添付して、要件をchatGPTに書く。投げかけたプロンプトは以下の2つ。

元プログラムを添付して要件を書く

添付の.pySQLITE3SQLalchemyで挿入するコードに変換してください。

作ってくれたプログラムだと拡張性がないので以下を追加


今後の拡張性を考えて.pyファイルの共通化を図りたいです。 


「SQLAlchemyモデル定義」と「# SQLite3データベース作成」は
別の.pyプログラムからでも呼び出せるように、別の.pyファイルに書くようにしてください。

この出力プログラムを実行して完了。たったのこれだけです。
元のプログラムがあったり、モジュール指定したのもありますが、今までより開発時間が大幅に短縮されてビックリです。

これからの予定

今回の改修はまだ第一段階に過ぎません。次は以下のような作業を進める予定です:

  1. 出走データや払い戻し結果の保存
    開催データだけでなく、出走メンバーやオッズ情報も同じSQLite3データベースに追加します。これにより、より高度な分析が可能になります。

  2. 過去データの移行
    CSV形式で保管している過去のデータを整理し、SQLite3にまとめます。このステップは、データの一貫性を保つためにも重要です。

  3. 定期実行環境への移植
    最終的には、このプログラムを定期収集サーバーに移植し。これにより、自動で最新データを取得し続けられる仕組みを刷新します。


まとめ

これからさらに出走データや払い戻し情報を統合し、データ分析やAI予測モデル構築に活用していく予定です。

プログラムを手直しする中で感じたのは、プログラム開発の世界が大きく変わっていること。如何に要件を言語化してプロンプトを書き、chatGPTに思ったとおりのプログラムを書いてもらうか。プロンプトエンジニアリングという言葉を耳にすることが多くなりましたが重要性を再認識しました。


それでは、次回の更新をお楽しみに!


いいなと思ったら応援しよう!