ChatGPTとゴルフスイングデータを色々と
はじめに
こんにちは!ChatGPT部の原田です!今回は、ChatGPTとゴルフのスイングデータを使って色々とやらかしていきたいと思います。
だいぶ前にも似たようなことをしたのですが、今シリーズではもっと色々やらかしてみようと思っています。最終的には簡単な可視化アプリやデータ分析に必要なデータの前処理などを中心に進めていけたらと思います。
今回は、データを見て今後何をしていくかなどを、
早速本編へ
1. データを見てみる
まずは使用するスイングデータを見ていきましょう。
このデータは、ゴルフスイング解析機「GC2」から出力したデータになります。カラムが数値ですが、以下の項目になっています。
クラブの種類
ヘッドスピード
ボールスピード
打ち上げ角度
左右打出角
サイドスピン
バックスピン
総スピン量
最大の高さ
キャリー
総距離
軸からのずれ
落下角度
以降のN/Aに関しては、省略します。
また、+(+表記はなし)は右に、-は左にそれぞれ中心からズレたことになります。
サイドスピンに関しては、+(+表記はなし)は右スピン、-は左スピンがかかっていることになります。
ミート率に関しては1.45固定となっており、ヘッドスピードはボールスピードから逆算されています。
2. 今後必要なこと
最終的に簡単な可視化アプリを作成するうえで、必要なことをまとめます。
もちろんChatGPTに聞きます笑
以下ChatGPTからの回答です。↓
2.1 準備
ⅰ)必要なツールと環境の準備
必要なもの:
・Pythonインストール済み環境(推奨バージョン: 3.12.4)
・IDEまたはコードエディタ(例: VS Code, PyCharm)
・ライブラリ: pandas, matplotlib, seaborn, streamlit
・CSVデータ(カラムが未設定の場合は、設定のためのリスト)やること:
必要なPythonライブラリをインストール:
pip install pandas matplotlib seaborn streamlit
ⅱ)データの作成または収集
必要なもの:
・データ(初速、ミート率、その他必要なデータ)
・カラム名リスト(例: ["スイング速度", "初速", "飛距離", "角度"])やること:
CSVファイルに適切なカラム名を設定する。
例: スイング速度,初速,飛距離,角度 40,60,150,20 42,62,155,22
2.2 データ処理
ⅰ)CSVデータの読み込み
必要なもの:
pandasライブラリ
上記で作成したCSVファイル
やること:
データを読み込み、内容を確認するコードを作成:
import pandas as pd
# データの読み込み
data = pd.read_csv("data/swing_data.csv")
# データ確認
print(data.head())
試しにやってみると、
こんな感じです。
ⅱ)データの前処理
必要なもの:
・数値データのチェック、欠損値処理やること:
欠損値や異常値を処理:
# 欠損値の確認
print(data.isnull().sum())
# 欠損値を埋める
data.fillna(0, inplace=True)
2.3 可視化の実装
ⅰ)グラフ作成
必要なもの:
・matplotlib, seabornライブラリやること:
ヒストグラムや散布図を作成:
import matplotlib.pyplot as plt
import seaborn as sns
# 初速と飛距離の散布図
sns.scatterplot(data=data, x="初速", y="飛距離")
plt.show()
実際にやってみると、
こんな感じです。
データの前処理をまだしていないので、コード・軸ラベルは、
初速=2(カラム2番目), 飛距離=10(カラム10番目)
になっています。
ⅱ)可視化アプリの構築
必要なもの:
・streamlitライブラリやること:
Streamlitアプリの雛形を作成:
import streamlit as st
import pandas as pd
# データの読み込み
data = pd.read_csv("data/swing_data.csv")
# アプリUI
st.title("ゴルフスイングデータ可視化")
st.write("データプレビュー:")
st.dataframe(data)
# グラフ作成
st.write("散布図:")
st.bar_chart(data["飛距離"])
実際にやってみると、
コードを”app.py”ファイルに書き込み保存、
コマンドプロンプトで起動!
これだけで簡単な可視化アプリはできてしまいます。
散布図と言いながら棒グラフ…
コードを見てみると
しっかりバーチャート(棒グラフ)になっているので、
動作的にはエラーなし!
…..
今後修正していきます。
2.4 高度な機能の追加
ⅰ)インタラクティブなフィルタリング
必要なもの:
・Streamlitのウィジェット(スライダー、セレクトボックス)やること:
範囲指定スライダーを追加:
min_speed, max_speed = st.slider("スイング速度の範囲を選択", 0, 100, (20, 80))
filtered_data = data[(data["スイング速度"] >= min_speed) & (data["スイング速度"] <= max_speed)]
st.dataframe(filtered_data)
ⅱ)グラフの保存機能
必要なもの:
・matplotlibで生成したグラフの保存やること:
グラフ保存
# グラフ保存
fig, ax = plt.subplots()
sns.scatterplot(data=filtered_data, x="初速", y="飛距離", ax=ax)
plt.savefig("scatterplot.png")
2.5 テストとデプロイ
ⅰ)ローカル環境でテスト
やること:
・アプリの動作確認を行う。
ⅱ)デプロイ(必要に応じて)
必要なもの:
Streamlit Cloudやローカルでの利用設定。
これらのステップを順番に進めることで、CSVデータを使った直感的なゴルフスイングデータ可視化アプリが作成できます!質問があれば教えてください。
アプリの機能まで親切ですね。
やることをもっと簡単にまとめると、
データの前処理(カラム、N/A削除等)
アプリ構成を考える
作成準備(環境等)
アプリ作成
お試し
といった感じです。
まとめ
今回は、ゴルフのスイングデータを使った可視化アプリ作成へ向けた事前準備などを行っていきました。次回はデータの前処理をしていきます。
以上です!