oksmith / snooker-matches

Exploratory analysis on the features that affect the outcome of a snooker match, and an attempt to model the winner.
0 stars 0 forks source link

Mistake in 2. Exploratory Data Analysis.ipynb #1

Open obtim opened 2 years ago

obtim commented 2 years ago

Use Anaconda3-2021.05-Windows-x86_64 on Win 7 x64 1. Fetch data with snooker.org API.ipynb - works fine in 2. Exploratory Data Analysis.ipynb got error: **TypeError Traceback (most recent call last)

in ----> 1 grouped_win_rate_when_player1 = match_data.groupby('Player1ID')['WIN'].agg(['mean', 'count']).rename_axis('PlayerID', 0) 2 grouped_win_rate_when_player2 = match_data.groupby('Player2ID')['WIN'].agg(['mean', 'count']).rename_axis('PlayerID', 0) 3 4 grouped_win_rate = ( 5 grouped_win_rate_when_player1['mean']*grouped_win_rate_when_player1['count'] + \ C:\ProgramData\Anaconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs) 310 @wraps(func) 311 def wrapper(*args, **kwargs) -> Callable[..., Any]: --> 312 return func(*args, **kwargs) 313 314 kind = inspect.Parameter.POSITIONAL_OR_KEYWORD TypeError: rename_axis() takes from 1 to 2 positional arguments but 3 were given** What to do in this case?
oksmith commented 2 years ago

It could be that we are using different versions of pandas. Maybe instead of rename_axis you could change this line to:

grouped_win_rate_when_player1 = match_data.groupby('Player1ID')['WIN'].agg(['mean', 'count']).reset_index().rename(columns={'Player1ID': 'PlayerID'})
grouped_win_rate_when_player2 = match_data.groupby('Player2ID')['WIN'].agg(['mean', 'count']).reset_index().rename(columns={'Player2ID': 'PlayerID'})

I think this should work too.

obtim commented 2 years ago

Don't work :(

**--------------------------------------------------------------------------- KeyError Traceback (most recent call last)

in 11 axis=1 12 ) ---> 13 grouped_win_rate_and_counts = grouped_win_rate_and_counts.merge( 14 players[['ID', 'FullName']], 15 how='left', C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in merge(self, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate) 8193 from pandas.core.reshape.merge import merge 8194 -> 8195 return merge( 8196 self, 8197 right, C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate) 72 validate=None, 73 ) -> "DataFrame": ---> 74 op = _MergeOperation( 75 left, 76 right, C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in __init__(self, left, right, how, on, left_on, right_on, axis, left_index, right_index, sort, suffixes, copy, indicator, validate) 666 self.right_join_keys, 667 self.join_names, --> 668 ) = self._get_merge_keys() 669 670 # validate the merge keys dtypes. We may need to coerce C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in _get_merge_keys(self) 1044 right_keys.append(rk) 1045 if lk is not None: -> 1046 left_keys.append(left._get_label_or_level_values(lk)) 1047 join_names.append(lk) 1048 else: C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in _get_label_or_level_values(self, key, axis) 1682 values = self.axes[axis].get_level_values(key)._values 1683 else: -> 1684 raise KeyError(key) 1685 1686 # Check for duplicates KeyError: 'PlayerID'** My JupiterNotebook is 6.3.0 What's yours?