見出し画像

ChatGPTとゴルフスイングデータを色々と(データの前処理その1)

はじめに

こんにちは、ChatGPT部の原田です。スイングデータシリーズ、

今回は、データの前処理をやっていこうと思います。
前回記事はこちら↓


1. やること

まずはデータを見ながら前処理としてやりたいことを上げていきます。

1.1 カラム

データを見ると、カラムが数値になっています。これをヘッドスピード等わかりやすいように書き換えます。

1.2 N/Aの削除

NaNは邪魔になるので、削除します。

1.3 その他

今のところ上記の2つだけでいいかなと思っていますが、必要があれば都度調整していきます。

2. いざ実戦

では早速やっていきます。と、やることは2つですが、初心者なので、1つずつ実践していきます。今回はカラムの変更です。

2.1 カラムの用意

カラムを書き換える手順として、まずはカラム名の辞書を用意します。


こんな感じでメモ帳に書きました。

2.2 コード作成

辞書が用意できたら次はコードです。

以下ChatGPTからの回答です↓


以下は、辞書を使用してカラム名を変更する方法です。例として、キーに元のカラム名、値に新しいカラム名を持つ辞書を作成し、それを使ってPandasでカラム名を一括変更します。


コード例

import pandas as pd

# 辞書を用意
column_mapping = {
    "0": "クラブの種類",
    "1": "ヘッドスピード",
    "2": "ボール初速",
    "3": "打ち出し角",
    "4": "スピン量"
}

# CSVを読み込み
df = pd.read_csv('data.csv')

# カラム名を変更
df.rename(columns=column_mapping, inplace=True)

# 変更後のデータフレームを確認
print(df.head())

# 変更後のCSVを保存
df.to_csv('updated_data.csv', index=False)

ポイント

  1. 辞書の形式: 辞書 column_mapping には、元のカラム名: 新しいカラム名 の形式でマッピングを記述します。

  2. inplace=True: 元のデータフレームを直接変更します。

  3. to_csv: 変更後のCSVを保存します。index=False にすることでインデックス列を出力しません。


CSVファイル例(元の形式)

0,1,2,3,4
Driver,45.5,65.8,12.3,2800
Iron,38.0,50.2,15.0,3500

出力結果(変更後の形式)

クラブの種類,ヘッドスピード,ボール初速,打ち出し角,スピン量
Driver,45.5,65.8,12.3,2800
Iron,38.0,50.2,15.0,3500

このコードを実行すれば、辞書に基づいてカラム名が変更されます!


流石です。コードはわかったので、辞書の作成だけChatGPTにお願いします。こういったちょっと面倒なところはゴリゴリに頼っていきます。

以下出力された辞書です。

column_mapping = {
    "0": "クラブの種類",
    "1": "ヘッドスピード",
    "2": "ボールスピード",
    "3": "打ち上げ角度",
    "4": "左右打出角",
    "5": "サイドスピン",
    "6": "バックスピン",
    "7": "総スピン量",
    "8": "最大の高さ",
    "9": "キャリー",
    "10": "総距離",
    "11": "軸からのずれ",
    "12": "落下角度"
}

2.3 コード書き換え

先程書いてもらったコードを書き換えていきます。

まずはcsvの読み込みなど

import pandas as pd


# CSVファイルの読み込みとデータフレームへの変換
df = pd.read_csv("データ階層")

# データ確認
print(df)

実行すると

こんな感じです。

次に辞書を書き込みます。

ここでカラム名の変更を。

# カラム名を辞書に基づいて変更
df.rename(columns=column_mapping, inplace=True)

df.rename(辞書名,◯◯)でカラム名を書き換えます。

◯◯の部分については、
inplace=True は、Pandasのメソッドで 元のデータ(DataFrameやSeries)を直接変更する ことを指定するオプションです。
簡単に言うと

inplace=True
消しゴムで消して書き直す。元の内容が上書きされます。

inplace=False
新しいページに書く。元の内容はそのままで、新しい内容を別の場所に作ります。

といった感じです。(個人的解釈なので、間違っていたらすみません。)

実行すると、

そうです。書き換えただけなので、何も出力されません。printで出力し確認しましょう。

カラムが変わっていますね。エラーもなく成功です。

まとめ

今回は、データの前処理その1、カラム名を書き換えを行っていきました。
この調子でどんどん進めていきます。今回は以上です。

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