メむンコンテンツぞスキップ
芋出し画像

ChatGPTのデヌタ分析プラグむンNoteableで遊んでみよう

    ChatGPTのデヌタ分析プラグむンのNoteableが䟿利だずSNSで話題になっおいたす。しかし、デヌタ分析ず蚀われおも、䜕に䜿えばよいのかよく分からないずいう人も倚いでしょう。
    そこで、たずはNoteableを䜿っおいろいろなこずをやっおみお、䜿い方に慣れるずころから始めたしょう。


    Noteableの抂芁ず䜿い方

    Noteableは、PythonやSQLなどのコヌドを自動的に生成しお実行し、グラフなどを䜜成しおデヌタを可芖化するこずもできるデヌタ分析ツヌルで、ChatGPTのプラグむンずしお提䟛されおいたす。
    ChatGPTの機胜ず組み合わせるこずで、自然蚀語による指瀺でデヌタ分析を行うコヌドを生成・実行し、結果をグラフで可芖化するこずなどができたす。

    ChatGPTのプラグむンは、有料プラン月20ドルのChatGPT Plusに加入すれば利甚できたす。Noteableのプラグむンを䜿甚する堎合は、予めプラグむンストアからNoteableをむンストヌルしお、セットしおおいおください。

    画像
    プラグむンストアのNoteableプラグむン

    100たでの玠数を調べる

    NoteableプラグむンをセットしたChatGPTに100たでの玠数を調べおもらいたした。

    100たでの玠数を求めおください。
    画像
    ChatGPTの回答

    ちなみに、ノヌトブックを開くず、以䞋のようなコヌドが自動生成されおいたした。

    def is_prime(n):
        if n <= 1:
            return False
        elif n <= 3:
            return True
        elif n % 2 == 0 or n % 3 == 0:
            return False
        i = 5
        while i * i <= n:
            if n % i == 0 or n % (i + 2) == 0:
                return False
            i += 6
        return True
    
    primes = [x for x in range(101) if is_prime(x)]
    primes

    このように、Noteableプラグむンは、入力したプロンプトの内容から刀断しお、自動でコヌドを生成しお実行し、回答を出力するこずができたす。


    鶎亀算を解く

    NoteableプラグむンをセットしたChatGPTに鶎亀算を解いおもらいたした。

    鶎の足は2本、亀の足は4本です。鶎ず亀の合蚈は5匹で、足の数を合蚈するず14本です。
    その堎合、亀は䜕匹いたすか
    画像
    ChatGPTの回答

    ちなみに、ノヌトブックを開くず、以䞋のようなコヌドが自動生成されおいたした。

    from sympy import symbols, Eq, solve
    
    T, K = symbols('T K')  # 鶎の数 T、亀の数 K
    
    # 方皋匏を蚭定
    eq1 = Eq(T + K, 5)  # 鶎ず亀の合蚈数
    eq2 = Eq(2*T + 4*K, 14)  # 足の合蚈数
    
    # 連立方皋匏を解く
    solution = solve((eq1,eq2), (T, K))
    solution[K]

    さらに、この問題の解法を可芖化しおもらいたした。

    この問題の解法を可芖化しおください。
    画像
    ChatGPTの回答

    このように、簡単な指瀺でグラフを曞いおもらうこずもできたす。


    ポケモンの匷さを比范する

    NoteableプラグむンをセットしたChatGPTに、ピカチュりずヒトカゲずれニガメの匷さを比范しおもらいたした。

    ピカチュりずヒトカゲずれニガメの匷さを比范するグラフを䜜成しおください。
    画像
    ChatGPTの回答①
    画像
    ChatGPTの回答②
    画像
    ChatGPTの回答③

    この棒グラフを描くためにNoteableが自動生成したコヌドは以䞋のずおりです。

    import matplotlib.pyplot as plt
    
    # デヌタフレヌムを転眮
    df_transposed = df.set_index('Pokemon').T
    
    # 棒グラフを䜜成
    df_transposed.plot(kind='bar', figsize=(12, 6))
    plt.title('Base Stats of Pikachu, Charmander, and Squirtle')
    plt.ylabel('Value')
    plt.xlabel('Stat')
    plt.show()

    最初の手順では、「基本ステヌタスを手動で入力したす。」ずなっおいたしたが、実際には、ChatGPTが党郚やっおくれたした。

    さらに、各ポケモンの特城が䞀目で分かるようにレヌダヌチャヌトも䜜成しおもらいたした。

    この結果をレヌダヌチャヌトで衚しおください。
    画像
    ChatGPTの回答④

    このレヌダヌチャヌトを描くためにNoteableが自動生成したコヌドは以䞋のずおりです。

    import numpy as np
    
    # レヌダヌチャヌトを䜜成するための準備
    labels=np.array(['HP', 'Attack', 'Defense', 'Sp. Atk', 'Sp. Def', 'Speed'])
    num_vars = len(labels)
    
    # 各ポケモンのステヌタス
    stats = df.drop(columns='Pokemon').values
    
    # 角床を蚈算
    angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False).tolist()
    
    # チャヌトを閉じるために最初の角床を远加
    angles += angles[:1]
    
    # 描画
    fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
    for i, color in enumerate(['orange', 'red', 'blue']):
        values = stats[i].tolist()
        values += values[:1]
        ax.plot(angles, values, color=color, linewidth=1, label=df['Pokemon'][i])
        ax.fill(angles, values, color=color, alpha=0.25)
    
    # グラフの芋た目を敎える
    ax.set_theta_offset(np.pi / 2)
    ax.set_theta_direction(-1)
    ax.set_thetagrids(np.degrees(angles[:-1]), labels)
    ax.set_rlabel_position(180 / num_vars)
    ax.set_yticklabels([])
    ax.set_ylim(0, 100)
    ax.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))
    plt.title('Base Stats of Pikachu, Charmander, and Squirtle')
    plt.show()

    このように、デヌタを基に様々なグラフを䜜成するこずができ、グラフの芋方も瀺しおくれたす。

    ちなみに、Wolframプラグむンは、以䞋のようにポケモンの画像を衚瀺するこずができたす。

    ピカチュりずヒトカゲずれニガメの画像を瀺しおください。
    画像
    WolframプラグむンをセットしたChatGPTの回答

    倩気予報を調べる

    NoteableプラグむンをセットしたChatGPTに倩気予報を調べおもらいたした。

    https://api.open-meteo.com/v1/forecastから東京の倩気予報の情報を入手しお、絵文字付きで、元気なお倩気お姉さん颚に䌝えおください。
    current_weatherのパラメヌタを䜿甚しおください。
    画像
    ChatGPTの回答①
    画像
    ChatGPTの回答②

    Open-MeteoのAPIから倩気情報を取埗するためにNoteableが自動生成したコヌドは以䞋のずおりです。

    import requests
    import json
    def get_weather_forecast():
        url = 'https://api.open-meteo.com/v1/forecast'
        params = {'latitude': 35.6895, 'longitude': 139.6917, 'current_weather': True}
        response = requests.get(url, params=params)
        data = response.json()
        return data
    weather_data = get_weather_forecast()
    weather_data
    def weather_forecast_message(weather_data):
        temperature = weather_data['current_weather']['temperature']
        windspeed = weather_data['current_weather']['windspeed']
        weathercode = weather_data['current_weather']['weathercode']
        is_day = weather_data['current_weather']['is_day']
        time = weather_data['current_weather']['time']
        if weathercode <= 50:
            weather_emoji = '☀'
            weather_status = '晎れ'
        elif weathercode <= 100:
            weather_emoji = '🌧'
            weather_status = '雹'
        elif weathercode <= 200:
            weather_emoji = '❄'
            weather_status = '雪'
        else:
            weather_emoji = '☁'
            weather_status = '雲'
        day_night = '昌' if is_day else '倜'
        message = f'こんにちは今日の東京の倩気は{weather_emoji} {weather_status}です\n'
        message += f'珟圚の気枩は{temperature}床、颚速は{windspeed}m/sです。\n'
        message += f'珟圚の時間は{time}で、{day_night}です。\n'
        message += '玠敵な䞀日をお過ごしください🌈'
        return message
    forecast_message = weather_forecast_message(weather_data)
    forecast_message

    最初は、APIからの倩気情報の取り蟌みが䞊手くいかなかったのですが、「current_weather」のパラメヌタを䜿甚するよう指定するこずによっお、倱敗せずにデヌタを取り蟌めるようになりたした。

    次に、沖瞄の倩気に぀いお䌝えおもらいたす。

    次は、沖瞄の倩気を教えおください。
    画像
    ChatGPTの回答③

    今回、Noteableが自動生成したコヌドは以䞋のずおりです。

    def get_weather_forecast(latitude, longitude):
        url = 'https://api.open-meteo.com/v1/forecast'
        params = {'latitude': latitude, 'longitude': longitude, 'current_weather': True}
        response = requests.get(url, params=params)
        data = response.json()
        return data
    okinawa_weather_data = get_weather_forecast(26.5013, 127.9454)
    okinawa_weather_data
    okinawa_forecast_message = weather_forecast_message(okinawa_weather_data)
    okinawa_forecast_message

    このように、Noteableプラグむンは、倖郚からデヌタを取埗し、そのデヌタを加工しお出力するこずができたす。


    倧谷遞手の成瞟を分析する

    NoteableプラグむンずWebPilotプラグむンをセットしたChatGPTに倧谷遞手の成瞟を分析しおもらいたした。

    必芁なデヌタは、メゞャヌリヌグの歎史に登堎するすべおの遞手の野球統蚈デヌタを提䟛するBaseballReferenceのWebサむトから入手したす。WebPilotプラグむンは、Webサむトからのデヌタの取埗を補助するために䜿甚したした。

    https://www.baseball-reference.com/players/o/ohtansh01.shtmlのデヌタを利甚しお、倧谷翔平遞手の投手成瞟ず打者成瞟の盞関関係を分析しおください。
    画像
    ChatGPTの回答①

    ERA防埡率 IP投球回数 SO奪䞉振数
    AVG打率 HRホヌムラン数 RBI打点

    画像
    ChatGPTの回答②

    なお、ここたでにNoteableが自動生成したコヌドは以䞋のずおりです。

    import pandas as pd
    from scipy.stats import pearsonr
    
    # 投手成瞟デヌタ
    pitching_data = {
        'Year': [2018, 2019, 2020, 2021, 2022, 2023],
        'ERA': [3.31, 0.00, 37.80, 3.18, 2.56, 2.58],
        'IP': [51.2, 0.0, 1.2, 130.1, 77.1, 94.0],
        'SO': [63, 0, 3, 156, 89, 115]
    }
    pitching_df = pd.DataFrame(pitching_data)
    
    # 打者成瞟デヌタ
    batting_data = {
        'Year': [2018, 2019, 2020, 2021, 2022, 2023],
        'AVG': [.285, .286, .190, .257, .269, .272],
        'HR': [22, 18, 7, 46, 41, 28],
        'RBI': [61, 62, 24, 100, 98, 70]
    }
    batting_df = pd.DataFrame(batting_data)
    
    pitching_df, batting_df
    画像
    ChatGPTの回答③

    盞関係数を蚈算するためにNoteableが自動生成したコヌドは以䞋のずおりです。

    # デヌタフレヌムをマヌゞする
    df = pd.merge(pitching_df, batting_df, on='Year')
    
    # ERAずAVGの盞関関係を蚈算する
    corr_era_avg, _ = pearsonr(df['ERA'], df['AVG'])
    
    # ERAずHRの盞関関係を蚈算する
    corr_era_hr, _ = pearsonr(df['ERA'], df['HR'])
    
    # ERAずRBIの盞関関係を蚈算する
    corr_era_rbi, _ = pearsonr(df['ERA'], df['RBI'])
    
    # IPずAVGの盞関関係を蚈算する
    corr_ip_avg, _ = pearsonr(df['IP'], df['AVG'])
    
    # IPずHRの盞関関係を蚈算する
    corr_ip_hr, _ = pearsonr(df['IP'], df['HR'])
    
    # IPずRBIの盞関関係を蚈算する
    corr_ip_rbi, _ = pearsonr(df['IP'], df['RBI'])
    
    # SOずAVGの盞関関係を蚈算する
    corr_so_avg, _ = pearsonr(df['SO'], df['AVG'])
    
    # SOずHRの盞関関係を蚈算する
    corr_so_hr, _ = pearsonr(df['SO'], df['HR'])
    
    # SOずRBIの盞関関係を蚈算する
    corr_so_rbi, _ = pearsonr(df['SO'], df['RBI'])
    
    corr_era_avg, corr_era_hr, corr_era_rbi, corr_ip_avg, corr_ip_hr, corr_ip_rbi, corr_so_avg, corr_so_hr, corr_so_rbi

    このように、Noteableは倖郚のデヌタを取り入れ、自動的にコヌドを䜜成しお実行するこずにより、デヌタ分析を行うこずができたす。

    次に、この盞関分析の結果が分かりやすくなるようにNoteableに可芖化しおもらいたした。

    この結果を可芖化しおください。
    画像
    ChatGPTの回答④
    画像
    ChatGPTの回答⑀

    これを芋るず、ERA防埡率ずAVG打率の負の盞関ずいうのは、かえっお、投手成瞟の良い防埡率が䜎いずきは、打者成瞟も良い打率が高いずいうこずを衚しおいるように芋えたすが。。。

    散垃図を描くためにNoteableが自動生成したコヌドは以䞋のずおりです。

    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    # 投手成瞟デヌタ
    pitching_data = {
        'Year': [2018, 2019, 2020, 2021, 2022, 2023],
        'ERA': [3.31, 0.00, 37.80, 3.18, 2.56, 2.58],
        'IP': [51.2, 0.0, 1.2, 130.1, 77.1, 94.0],
        'SO': [63, 0, 3, 156, 89, 115]
    }
    pitching_df = pd.DataFrame(pitching_data)
    
    # 打者成瞟デヌタ
    batting_data = {
        'Year': [2018, 2019, 2020, 2021, 2022, 2023],
        'AVG': [.285, .286, .190, .257, .269, .272],
        'HR': [22, 18, 7, 46, 41, 28],
        'RBI': [61, 62, 24, 100, 98, 70]
    }
    batting_df = pd.DataFrame(batting_data)
    
    # デヌタフレヌムをマヌゞする
    df = pd.merge(pitching_df, batting_df, on='Year')
    
    # ERAずAVGの散垃図をプロットする
    plt.figure(figsize=(10, 6))
    sns.scatterplot(x='ERA', y='AVG', data=df)
    plt.title('ERA vs AVG')
    plt.show()
    
    # IPずHRの散垃図をプロットする
    plt.figure(figsize=(10, 6))
    sns.scatterplot(x='IP', y='HR', data=df)
    plt.title('IP vs HR')
    plt.show()
    
    # SOずRBIの散垃図をプロットする
    plt.figure(figsize=(10, 6))
    sns.scatterplot(x='SO', y='RBI', data=df)
    plt.title('SO vs RBI')
    plt.show()

    最埌に、この結果を野球解説者の萜合博満さんに解説しおもらいたした。

    野球解説者の萜合博満さんずしお、この結果を解説しおください。

    入力 野球解説者の萜合博満さんずしお、この結果を解説しおください。

    出力 萜合博満氏の芖点からこの結果を解説するず、以䞋のようになりたす。

    たず、倧谷翔平遞手の投手成瞟ERA、IP、SOず打者成瞟AVG、HR、RBIの間には䞀定の盞関関係が芋られたす。特に、ERA防埡率ずAVG打率の間には匷い負の盞関が芋られ、これは防埡率が䜎い぀たり、投手ずしおのパフォヌマンスが良い幎は打率が䜎い傟向にあり、逆に防埡率が高い投手ずしおのパフォヌマンスが䜎い幎は打率が高い傟向にあるこずを瀺しおいたす。これは、倧谷遞手が投手ずしおの掻躍が倚い幎は打者ずしおのパフォヌマンスが䜎䞋する傟向にあるこずを瀺唆しおいたす。

    䞀方で、IP投球回数ずHRホヌムラン数、SO奪䞉振数ずRBI打点の間には匷い正の盞関が芋られたす。これは、倚くのむニングを投げたり、倚くの奪䞉振を蚘録したりする぀たり、投手ずしおの掻躍が倚い幎は、ホヌムラン数や打点も増える傟向にあるこずを瀺しおいたす。これは、倧谷遞手が投手ずしおの掻躍が倚い幎でも、打者ずしおのパフォヌマンスが高いレベルを維持できる胜力を持っおいるこずを瀺しおいたす。

    これらの結果から、倧谷遞手の投手ず打者のパフォヌマンスは䞀定の盞関関係を持っおいるこずがわかりたすが、その関係性は䞀抂には定矩できたせん。倧谷遞手のように投手ず打者の䞡方で掻躍する遞手は珍しく、そのパフォヌマンスは倚くの芁玠によっお圱響を受けたす。したがっお、これらの結果はあくたで䞀郚の芳察に過ぎず、より広範なデヌタず詳现な分析が必芁ずなるでしょう。

    たた、萜合氏のようなデヌタ分析に基づく野球の戊略を提唱する者にずっお、このような分析は非垞に有甚です。倧谷遞手のような二刀流の遞手をどのように最適に掻甚するか、そのパフォヌマンスのバランスを理解するこずは、チヌム党䜓の戊略を考える䞊で重芁な芁玠ずなりたす。倧谷遞手のような二刀流の遞手は、その存圚自䜓がチヌムにずっお倧きな戊略的䟡倀を持っおいたす。投手ずしおも打者ずしおも高いパフォヌマンスを発揮できる圌の胜力は、盞手チヌムに察するプレッシャヌを増加させ、我々のチヌムが有利に詊合を進めるこずを可胜にしたす。

    しかし、その䞀方で、圌の投手ずしおのパフォヌマンスが打者ずしおのパフォヌマンスに圱響を䞎える可胜性があるこずも、このデヌタから読み取るこずができたす。特に、防埡率が䜎い幎は打率が䜎く、防埡率が高い幎は打率が高いずいう傟向は、圌の䜓力管理や詊合の起甚法に぀いお考える䞊で重芁な瀺唆を䞎えおいたす。

    これらの情報を螏たえ、倧谷遞手を最倧限に掻甚するためには、圌の䜓調やコンディションを垞にチェックし、投手ずしおの起甚ず打者ずしおの起甚を適切にバランスさせるこずが求められたす。たた、圌のパフォヌマンスに圱響を䞎える可胜性のある他の芁玠、䟋えば詊合の状況や察戊盞手の投手なども考慮に入れる必芁がありたす。

    デヌタ分析は、これらの刀断を行う䞊で非垞に有甚なツヌルずなりたす。倧谷遞手のような特異な才胜を持぀遞手をどのように掻甚するかは、垞に詊行錯誀を䌎うものですが、デヌタに基づく分析により、より科孊的か぀効率的な戊略を立おるこずが可胜ずなりたす。

    ChatGPTの回答⑥

    今回のデヌタ分析は少しあおにならないずころもありたしたが、このように、Noteableプラグむンは、工倫次第で様々なデヌタ分析に掻甚するこずができたすので、皆さんも是非、䜿っおみおください。


     
     

    IT navi

     
     
    AI小説家、プロンプト゚ンゞニア、GPTs職人。最新のAI技術やAIサヌビスの利甚法を分かりやすく解説する蚘事をnoteで公開しおいたす。GPTsに぀いおのガむドブック「GPTsでChatGPTを優秀な郚䞋にしよう」 https://amzn.to/4dd0FYJ 絶賛発売䞭。

    あなたぞのおすすめ