質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

304閲覧

エラーの意味がよく分からない

kento.k0505

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/08/23 06:25

編集2023/08/25 03:44

実現したいこと

エラーを直し、実行できるようにしたい

前提

サッカーのオープンデータとしてStatsBombが提供しているものを扱っている。そのデータをダウンロードして分析しようとしている。

発生している問題・エラーメッセージ

/usr/local/lib/python3.10/dist-packages/kloppy/infra/datasets/core/loading.py in load(dataset_name, options, **dataset_kwargs) 71 deserializer = builder.deserializer_cls(**options) 72 dataset = deserializer.deserialize( ---> 73 inputs=builder.inputs_cls(**file_handlers) 74 ) 75 finally: TypeError: StatsBombInputs.__new__() missing 1 required positional argument: 'three_sixty_data

該当のソースコード

python

1!pip install statsbomb 2!pip install kloppy==3.12.0 3 4import requests 5import math 6import itertools 7 8import numpy as np 9import pandas as pd 10 11import statsbomb as sb 12from kloppy import datasets 13 14BASE_URL = 'https://raw.githubusercontent.com/statsbomb/open-data/master/data' 15 16comps_df = sb.Competitions().get_dataframe() 17 18def get_matches_df(competition_id, season_id=None, comps_df=None): 19 """試合情報を返すメソッド 20 Args: 21 - competition_id(int) : 大会id 22 - season_id(int, default=None) : シーズンid 23 - comps_df(pd.DataFrame, default=None) : 大会情報 24 Returns: 25 pd.DataFrame : 試合情報 26 """ 27 # if文、season_idがあれば、シーズンを指定してjson形式のデータをdataframe形式に変換する 28 # season_idが指定されなければ、大会情報からseason_idをfor loopで回しながらダウンロード、変換する 29 if season_id: 30 matches_df = pd.DataFrame(requests.get(f'{BASE_URL}/matches/{competition_id}/{season_id}.json').json()) 31 else: 32 # リストの内包表記 33 matches_df = pd.concat([pd.DataFrame(requests.get(f'{BASE_URL}/matches/{competition_id}/{season_id}.json').json()) for season_id in comps_df[comps_df.competition_id==competition_id].season_id.tolist()]) 34 35 # ここでのmatches_dfは、エクセルで言うセルの中に辞書形式(dict)で値が入っていて分析しづらいので、それらをカラムに分解する 36 c_list = ['competition', 'season', 'home_team', 'away_team', 'stadium', 'competition_stage'] 37 if competition_id == 53: 38 c_list.remove('stadium') 39 for c in c_list: 40 if c in ['stadium', 'competition_stage']: 41 key_list = ['id', 'name'] 42 c_fixed_list = [f'{c}_{k}' for k in key_list] 43 44 else: 45 key_list = [f'{c}_{k}' for k in ['id', 'name']] 46 c_fixed_list = key_list 47 48 for k, c_fixed in zip(key_list, c_fixed_list): 49 matches_df[c_fixed] = matches_df[c].apply(lambda x: x[k] if type(x)==dict else None) 50 51 # 必要なカラムのみを残して最終形とする 52 matches_df = matches_df.drop(c_list+['metadata','referee'], axis=1).sort_values('match_date').reset_index(drop=True) 53 54 return matches_df 55 56competition_id = 53 57season_id = 106 58 59get_matches_df(competition_id=competition_id, season_id=season_id, comps_df=comps_df) 60 61match_id = 3835319 62dataset = datasets.load(dataset_name='statsbomb', match_id=match_id)

試したこと

loadin.pyを見てみたが、StatsBombInputsのクラスがなかった。また、kloppyのgithubを確認してみたが見つけられなかった。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chirimen

2023/08/24 08:00 編集

kloppy のサイトにある Statsbomb の使用例とは使い方が異なるようですが、コードは何を参考にしましたか? https://kloppy.pysport.org/getting-started/statsbomb/ また、「該当のソースコード」は、エラーが出たところを示すのではなく、全体を示す方がよいです。
chirimen

2023/08/28 00:27

まだコードの方は見てないのですが、参照しているページでは anaconda3-5.3.0 を使っているようなので バージョンが古すぎて現行とは使い方が異なっているのかもしれません。 新しめのページを参考にするのがよいと思います。
guest

回答1

0

ベストアンサー

参考にしたページの kloppy が 1.4.x なので、現行バージョン 3.12.x と使い方が異なっているのでしょう。

kloppy の公式ページでの statsbomb の使用例 https://kloppy.pysport.org/getting-started/statsbomb/ を参考にすると、以下のようにデータが取得できます(ライセンスのwarningは削除しています)。

python

1from kloppy import statsbomb 2 3match_id = 3835319 4dataset = statsbomb.load_open_data(match_id=match_id) 5 6df = dataset.to_df() 7print(df[:5])
event_id event_type result ... body_part_type pass_type duel_type 0 219204da-e612-43e4-8778-fd2a4322da14 GENERIC:Starting XI None ... None None None 1 04b61421-15fe-4e29-a65d-8862b17ad333 GENERIC:Starting XI None ... None None None 2 c8733c62-8e66-487d-bdcc-496fcce691ce GENERIC:Half Start None ... None None None 3 f06d2ac1-4574-4b8f-bb01-6a388fc91790 GENERIC:Half Start None ... None None None 4 4df14347-74ec-441e-9261-41ee9d6c490d PASS COMPLETE ... RIGHT_FOOT None None [5 rows x 20 columns]

投稿2023/08/28 01:33

chirimen

総合スコア189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問