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

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

新規登録して質問してみよう
ただいま回答率
86.12%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

解決済

pythonで異なる行サイズのDataFrameの要素を全て足し合わせたい

gp13_trece
gp13_trece

総合スコア1

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

2回答

0リアクション

0クリップ

234閲覧

投稿2022/09/14 15:26

編集2022/09/14 15:27

前提

pythonでバスケットボールのシュート確率の分析を行うプログラムを作りたいと思っています。

APIを利用して、ある選手の・あるシーズンにおけるシュートの様子を以下のような形のDataFrame形式で複数(50個ほど)取得することができました。以下、DataFrameの特徴を記します。

  • 一つのDataFrameは1試合あたりのシュートに関する情報で、N本目のシュートが決まった(MADE_FRAG=1)か外れたか(MADE_FRAG=0)を示している
  • 一つのDataFrameの行数は、1試合ごとのシュート本数であり、試合ごとに本数は異なるため行数も異なる→DataFrameのサイズが異なる
  • SHOT_ATTEMPTED_FLAGは常に1。
SHOT_MADE_FLAGSHOT_ATTEMPTED_FLAG
001
111
201
311
SHOT_MADE_FLAGSHOT_ATTEMPTED_FLAG
011
111
201
311
411
501

実現したいこと

  • シーズンを通して、N本目のシュート確率がどうだったかを知りたい
  • そのために、50個ほどあるDataFrame内の値を全て足し合わせたい→足し合わせた結果SHOT_ATTEMPTED_FLAGの値=DataFrameの個数=試合数となれば良い
  • 例えば、50試合のデータがあったとすると、「1本目のシュートは確率○%、2本目のシュートは確率○%で入り」

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

  • DataFrameのサイズが揃っていないためか、計算が上手くいきません
  • 正しいかは分からないですが、十分な行数のあるDataFrame(値は全て0)を用意して、for文で上記のDataFrameを.addで足し合わせています。
  • その結果、以下のように、全てが0のDataFrameが返されます。
SHOT_MADE_FLAG SHOT_ATTEMPTED_FLAG 0 0 0 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 0 0 20 0 0 21 0 0

該当のソースコード

python

import matplotlib.pyplot as plt import matplotlib.patches as patches import pandas as pd import json from nba_api.stats.endpoints import playergamelogs,shotchartdetail import numpy as np from IPython.display import display import seaborn as sns #値が全て0で十分な行数のあるDataFrameを作成 shooting = [] for k in range(50): shooting.append(k) feature = ['SHOT_MADE_FLAG', 'SHOT_ATTEMPTED_FLAG'] primary_data = pd.DataFrame(index=shooting, columns=feature) primary_data.fillna(0, inplace=True) def get_game_id(player_id="",Season=""):#playerAのplayer_idと情報を取得したいシーズンを入力 #playerAが当該シーズンに出場した試合idを取得する player_game_id = playergamelogs.PlayerGameLogs(player_id_nullable=player_id,season_nullable=Season) player_game_id = json.loads(player_game_id.get_json()) rowdata = player_game_id["resultSets"][0]["rowSet"] headers = player_game_id["resultSets"][0]["headers"] game_df = pd.DataFrame(rowdata, columns=headers) game_id_list = game_df.GAME_ID #取得した試合idをリストにする game_id_list = game_id_list.values.tolist() for i in game_id_list:#試合idリストの番号とplayerAのplayer_idを元に、試合iにおけるAのシュート結果を取得 player_shots = shotchartdetail.ShotChartDetail(player_id=player_id,season_nullable=Season,game_id_nullable=i,context_measure_simple="FGA", team_id=1610612757) player_shots = json.loads(player_shots.get_json()) shots = player_shots["resultSets"][0]["rowSet"] headers = player_shots["resultSets"][0]["headers"] shot_df = pd.DataFrame(shots, columns=headers) #取得したシュート結果から必要部分を抜き出してDataFrame化(ここまではできていることを確認済み) shot_df = shot_df.loc[:,['SHOT_MADE_FLAG','SHOT_ATTEMPTED_FLAG']] #関数外に作っておいた「値が全て0で十分な行数のあるDataFrame」に抜き出したDataFrameの値を足す primary_data.add(shot_df) print(primary_data) get_game_id(player_id=203081, Season="2020-21")

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。