#python #arrays #data-cleaning #shapes #valueerror
Вопрос:
Я использую этот учебник для очистки футбольных данных. Учебник
Когда я пытаюсь выполнить этот фрагмент кода для своих данных:
# Gets the goals scored agg arranged by teams and matchweek
def get_goals_scored(playing_stat):
# Create a dictionary with team names as keys
teams = {}
for i in playing_stat.groupby('HomeTeam').mean().T.columns:
teams[i] = []
# the value corresponding to keys is a list containing the match location.
for i in range(len(playing_stat)):
HTGS = playing_stat.iloc[i]['FTHG']
ATGS = playing_stat.iloc[i]['FTAG']
teams[playing_stat.iloc[i].HomeTeam].append(HTGS)
teams[playing_stat.iloc[i].AwayTeam].append(ATGS)
# Create a dataframe for goals scored where rows are teams and cols are matchweek.
GoalsScored = pd.DataFrame(data=teams, index = [i for i in range(1,37)]).T
GoalsScored[0] = 0
# Aggregate to get uptil that point
for i in range(2,37):
GoalsScored[i] = GoalsScored[i] GoalsScored[i-1]
return GoalsScored
# Gets the goals conceded agg arranged by teams and matchweek
def get_goals_conceded(playing_stat):
# Create a dictionary with team names as keys
teams = {}
for i in playing_stat.groupby('HomeTeam').mean().T.columns:
teams[i] = []
# the value corresponding to keys is a list containing the match location.
for i in range(len(playing_stat)):
ATGC = playing_stat.iloc[i]['FTHG']
HTGC = playing_stat.iloc[i]['FTAG']
teams[playing_stat.iloc[i].HomeTeam].append(HTGC)
teams[playing_stat.iloc[i].AwayTeam].append(ATGC)
# Create a dataframe for goals scored where rows are teams and cols are matchweek.
GoalsConceded = pd.DataFrame(data=teams, index = [i for i in range(1,37)]).T
GoalsConceded[0] = 0
# Aggregate to get uptil that point
for i in range(2,37):
GoalsConceded[i] = GoalsConceded[i] GoalsConceded[i-1]
return GoalsConceded
def get_gss(playing_stat):
GC = get_goals_conceded(playing_stat)
GS = get_goals_scored(playing_stat)
j = 0
HTGS = []
ATGS = []
HTGC = []
ATGC = []
for i in range(313):
ht = playing_stat.iloc[i].HomeTeam
at = playing_stat.iloc[i].AwayTeam
HTGS.append(GS.loc[ht][j])
ATGS.append(GS.loc[at][j])
HTGC.append(GC.loc[ht][j])
ATGC.append(GC.loc[at][j])
if ((i 1)% 10) == 0:
j = j 1
playing_stat['HTGS'] = HTGS
playing_stat['ATGS'] = ATGS
playing_stat['HTGC'] = HTGC
playing_stat['ATGC'] = ATGC
return playing_stat
# Apply to each dataset
playing_statistics_1 = get_gss(playing_statistics_1)
playing_statistics_2 = get_gss(playing_statistics_2)
playing_statistics_3 = get_gss(playing_statistics_3)
playing_statistics_4 = get_gss(playing_statistics_4)
Я получаю эту ошибку: ValueError: could not broadcast input array from shape (34) into shape (36)
Мои данные содержат 313 записей и выглядят так:
Я знаю, что это как-то связано с длиной данных, но я не могу точно понять, что это такое.
Любая помощь очень ценится, и если нужна какая-либо дополнительная информация, пожалуйста, сообщите мне!
Комментарии:
1. Сообщение об ошибке обычно указывает на строку, в которой произошла ошибка. Не могли бы вы поделиться этим, пожалуйста? (Кроме того, я знаю, что суть вопроса не в этом, и я сую свой нос, но в этом учебнике есть некоторые сомнительные методы кодирования (много повторений), поэтому, если вы хотите изучать панд, а не просто получать данные, я предлагаю поискать другие учебные пособия для дополнения)
Ответ №1:
Хотя в этом уроке требуется довольно много исправлений (я не собираюсь вдаваться в это). Я вообще не получаю этой ошибки. Возможно ли, что один из файлов поврежден, когда вы его загрузили (я получаю 380 строк/записей, а не 318)?? Попробуйте изменить первый блок, в котором вы читаете файлы локально, на приведенный ниже код, чтобы вы читали файл непосредственно из источника. Доложите, что происходит:
loc = "https://raw.githubusercontent.com/RudrakshTuwani/Football-Data-Analysis-and-Prediction/master/Datasets/"
raw_data_1 = pd.read_csv(loc '2000-01.csv')
raw_data_2 = pd.read_csv(loc '2001-02.csv')
raw_data_3 = pd.read_csv(loc '2002-03.csv')
raw_data_4 = pd.read_csv(loc '2003-04.csv')
raw_data_5 = pd.read_csv(loc '2004-05.csv')
raw_data_6 = pd.read_csv(loc '2005-06.csv')
raw_data_7 = pd.read_csv(loc '2006-07.csv')
raw_data_8 = pd.read_csv(loc '2007-08.csv')
raw_data_9 = pd.read_csv(loc '2008-09.csv')
raw_data_10 = pd.read_csv(loc '2009-10.csv')
raw_data_11 = pd.read_csv(loc '2010-11.csv')
raw_data_12 = pd.read_csv(loc '2011-12.csv')
raw_data_13 = pd.read_csv(loc '2012-13.csv')
raw_data_14 = pd.read_csv(loc '2013-14.csv')
raw_data_15 = pd.read_csv(loc '2014-15.csv')
raw_data_16 = pd.read_csv(loc '2015-16.csv')
Комментарии:
1. Спасибо за ответ! Ошибка произошла из-за того, что разные команды в моих данных не сыграли одинаковое количество игр, поэтому в них отсутствовали некоторые из разных команд.