Ошибка типа: не удалось преобразовать ['CIN'] в числовоеPython

Программы на Python
Anonymous
Ошибка типа: не удалось преобразовать ['CIN'] в числовое

Сообщение Anonymous »

Я знаю, что это распространенный вопрос, и я прочитал многие из них. Однако они не касаются моей конкретной ситуации, так что это разновидность этого вопроса, как я объясню.
Я новичок в Python, у меня есть только прошел один онлайн-курс в MIT. Но я предпочитаю учиться по ходу дела, поэтому начинаю с кода других людей, модифицирую его под свои конкретные нужды, исследую и изменяю по мере необходимости и запоминаю это для использования в будущем.
У меня возникла проблема с поиском решения проблемы, с которой я столкнулся в разделе скрипта Python. Я опубликую здесь изображение ошибки как снимок того, что происходит, но последую за ним любым соответствующим кодом, тем, что я пробовал, и т. д.
введите описание изображения здесь
В этом разделе кода создается список из пяти последних игр («матчей») каждой из 32 команд НФЛ. Это рисунок из таблицы в формате 26 столбцов по 7678 строк. Заголовки столбцов следующие:
['Date', 'Name', 'PointsScored', 'Pass_Attempts', 'Passes_Comp', 'Pass_Yards', 'Pass_Int', 'Sacks', 'Sack_Yards', 'Rush_Attempts', 'Rush_Yards', 'Penalties', 'Penalty_Yards', 'Result', 'PointsScored', 'Pass_Attempts', 'Pass_Comp', 'Pass_Yards', 'Pass_Int', 'Sacks', 'Sack_Yards ', 'Rush_Attempts', 'Rush_Yards', 'Penalties', 'Penalty_Yards', 'home_or_away']
Каждая строка представляет собой список показателей производительности вместе со сравнимой статистикой для каждого из двух команды в игре. При необходимости я могу предоставить более подробную информацию о полях.
Я искал решение на многочисленных форумах, но не смог найти ни одного, которое было бы достаточно конкретным для того, с чем я столкнулся, чтобы использовать какой-либо из них. Что, по моему мнению, делает мой вопрос уникальным, так это то, что Я ХОЧУ использовать «CIN» в виде строки (она хранится в поле «Имя» в таблице), а не числового значения. Это одно из сокращений команды, поэтому оно необходимо для чего я хочу достичь.
Когда я работал над кодом, я столкнулся с аналогичной ошибкой (в той же строке кода), однако этот экземпляр был связан с «Дата» После некоторых исследований я понял, что даты в моем импортированном CSV-файле были в формате дд/мм/гг, который, как я подозреваю, был проблемой (но я не уверен). ). Итак, я преобразовал даты в реальные числа, и это решило проблему (но опять же, я не знаю, почему). Но теперь я вижу ошибку выше, я просмотрел CSV на наличие каких-либо аномалий и не обнаружил ни одной. также попробовал loc вместо iloc и получил ту же ошибку.
Однако я ДЕЙСТВИТЕЛЬНО знаю, что WASWASWAS.... в сообщении об ошибке представляет собой объединение сокращений команды для "WASHington". Источник импорта создается с использованием трехсимвольного кода, а не всего названия команды. В приведенном ниже коде я выделил рассматриваемый код между двумя двойными строками кавычек (#).
Я хочу добавить CSV для тестирования, но не знаю, как прикрепить файл. . В предыдущем вопросе мне сказали НЕ включать ссылки, поэтому я не буду использовать их здесь. Поэтому, если кто-то может сказать мне, как добавить файл, сделайте это.
Я добавлю столько кода, сколько считаю необходимым, но он будет ограничен тем, что работает в данный момент. Я не верю, что в коде есть что-то важное, и когда я попытался добавить весь сценарий перед этим, я не смог его опубликовать, потому что редактор сказал, что это «похоже на спам». Но я могу предоставить все, что вы захотите, если кто-нибудь подскажет мне, как это сделать.
Как уже упоминалось, я решил подобную ошибку, придумав обходной путь для проблемы формата даты. Я тщательно просмотрел исходные данные, чтобы убедиться в отсутствии ошибок, опечаток, неправильных типов символов и т. д. Я также прочитал немало сообщений об этой ошибке, но, как я уже сказал, все они относились к преобразованию в числовой формат, а не к использованию строковое значение как есть.
Ниже приведен код до строки, в которой произошел сбой. В самой последней строке это не работает.
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

# TEAM FEATURE EXTRACTION

# Load the datasets for the 2023 and 2024 seasons that include a "HomeWon" column.
# This column indicates if the home team won the game (1 for win, 0 for loss).

# (Right click source files to get the path and paste them within the quotes below)
data_2023_updated = pd.read_csv(r"C:\Users\richa\PythonFootball\My_NFL_Forecaster\2023.csv")
data_2024_updated = pd.read_csv(r"C:\Users\richa\PythonFootball\My_NFL_Forecaster\2024.csv")
#all_data = pd.read_csv(r"/Users/richardcartier/Documents/PythonProjects/My_NFL_Forecaster/MYSource.csv")

# Load the dataset containing the upcoming games schedule.
upcoming_games = pd.read_csv(r"C:\Users\richa\PythonFootball\My_NFL_Forecaster\This_Weeks_Schedule.csv")

# Combine the data from the 2023 and 2024 seasons into a single DataFrame.
all_data = pd.concat([data_2023_updated, data_2024_updated])
#print(all_data)

# Now extract columns from the source csv file
raw_match_stats = all_data[[
'Date',
'Season',
'Week',
'Visitor',
'Home',
'Visitor_Score',
'Visitor_Pass_Att',
'Visitor_Pass_Comp',
'Visitor_Pass_Yds',
'Visitor_Pass_TD',
'Visitor_Pass_Int',
'Visitor_Sacks',
'Visitor_Sack_Yds',
'Visitor_Rush_Att',
'Visitor_Rush_Yds',
'Visitor_Rush_TD',
'Visitor_Pen',
'Visitor_Pen_Yds',
'Visitor_Won',
'Visitor_Line',
'Visitor_Covered',
'Home_Score',
'Home_Pass_Att',
'Home_Pass_Comp',
'Home_Pass_Yds',
'Home_Pass_TD',
'Home_Pass_Int',
'Home_Sacks',
'Home_Sack_Yds',
'Home_Rush_Att',
'Home_Rush_Yds',
'Home_Rush_TD',
'Home_Pen',
'Home_Pen_Yds',
'Home_Won',
'Home_Line',
'Home_Covered',
'OU_Line',
'OU_Result'
]]

# Determine number of Wins, Losses and Ties

raw_match_stats.loc[raw_match_stats['Home_Score'] == raw_match_stats['Visitor_Score'], 'home_team_result'] = 0
raw_match_stats.loc[raw_match_stats['Home_Score'] > raw_match_stats['Visitor_Score'], 'home_team_result'] = 1
raw_match_stats.loc[raw_match_stats['Home_Score'] < raw_match_stats['Visitor_Score'], 'home_team_result'] = -1

raw_match_stats.loc[raw_match_stats['Home_Score'] == raw_match_stats['Visitor_Score'], 'away_team_result'] = 0
raw_match_stats.loc[raw_match_stats['Home_Score'] > raw_match_stats['Visitor_Score'], 'away_team_result'] = 1
raw_match_stats.loc[raw_match_stats['Home_Score'] < raw_match_stats['Visitor_Score'], 'away_team_result'] = -1

# Split the raw_match_stats to two datasets (home_team_stats and away_team_stats)
home_team_stats = raw_match_stats[[
'Date',
'Home',
'Home_Score',
'Home_Pass_Att',
'Home_Pass_Comp',
'Home_Pass_Yds',
'Home_Pass_TD',
'Home_Pass_Int',
'Home_Sacks',
'Home_Sack_Yds',
'Home_Rush_Att',
'Home_Rush_Yds',
'Home_Rush_TD',
'Home_Pen',
'Home_Pen_Yds',
'Home_Won',
'Visitor_Score',
'Visitor_Pass_Att',
'Visitor_Pass_Comp',
'Visitor_Pass_Yds',
'Visitor_Pass_TD',
'Visitor_Pass_Int',
'Visitor_Sacks',
'Visitor_Sack_Yds',
'Visitor_Rush_Att',
'Visitor_Rush_Yds',
'Visitor_Rush_TD',
'Visitor_Pen',
'Visitor_Pen_Yds',
'Visitor_Won'
]]

home_team_stats = home_team_stats.rename(columns={'Home':'Name',
'Home_Score':'Points_Scored',
'Home_Pass_Att':'Pass_Attempts',
'Home_Pass_Comp':'Passes_Comp',
'Home_Pass_Yds':'Pass_Yards',
'Home_Pass_TD':'Pass_TD',
'Home_Pass_Int':'Pass_Int',
'Home_Sacks':'Sacks',
'Home_Sack_Yds':'Sack_Yards',
'Home_Rush_Att':'Rush_Attempts',
'Home_Rush_Yds':'Rush_Yards',
'Home_Rush_TD':'Rush_TD',
'Home_Pen':'Penalties',
'Home_Pen_Yds':'Penalty_Yards',
'Home_Won':'Result',
'Visitor_Score':'Points_Scored',
'Visitor_Pass_Att':'Pass_Attempts',
'Visitor_Pass_Comp':'Passes_Comp',
'Visitor_Pass_Yds':'Pass_Yards',
'Visitor_Pass_TD':'Pass_TD',
'Visitor_Pass_Int':'Pass_Int',
'Visitor_Sacks':'Sacks',
'Visitor_Sack_Yds':'Sack_Yards',
'Visitor_Rush_Att':'Rush_Attempts',
'Visitor_Rush_Yds':'Rush_Yards',
'Visitor_Rush_TD':'Rush_TD',
'Visitor_Pen':'Penalties',
'Visitor_Pen_Yds':'Penalty_Yards',
'Visitor_Won':'Result'
})

away_team_stats = raw_match_stats[[
'Date',
'Visitor',
'Visitor_Score',
'Visitor_Pass_Att',
'Visitor_Pass_Comp',
'Visitor_Pass_Yds',
'Visitor_Pass_TD',
'Visitor_Pass_Int',
'Visitor_Sacks',
'Visitor_Sack_Yds',
'Visitor_Rush_Att',
'Visitor_Rush_Yds',
'Visitor_Rush_TD',
'Visitor_Pen',
'Visitor_Pen_Yds',
'Visitor_Won',
'Home_Score',
'Home_Pass_Att',
'Home_Pass_Comp',
'Home_Pass_Yds',
'Home_Pass_TD',
'Home_Pass_Int',
'Home_Sacks',
'Home_Sack_Yds',
'Home_Rush_Att',
'Home_Rush_Yds',
'Home_Rush_TD',
'Home_Pen',
'Home_Pen_Yds',
'Home_Won'
]]

away_team_stats = away_team_stats.rename(columns={'Visitor':'Name',
'Visitor_Score':'Points_Scored',
'Visitor_Pass_Att':'Pass_Attempts',
'Visitor_Pass_Comp':'Passes_Comp',
'Visitor_Pass_Yds':'Pass_Yards',
'Visitor_Pass_TD':'Pass_TD',
'Visitor_Pass_Int':'Pass_Int',
'Visitor_Sacks':'Sacks',
'Visitor_Sack_Yds':'Sack_Yards',
'Visitor_Rush_Att':'Rush_Attempts',
'Visitor_Rush_Yds':'Rush_Yards',
'Visitor_Rush_TD':'Rush_TD',
'Visitor_Pen':'Penalties',
'Visitor_Pen_Yds':'Penalty_Yards',
'Visitor_Won':'Result',
'Home_Score':'Points_Scored',
'Home_Pass_Att':'Pass_Attempts',
'Home_Pass_Comp':'Passes_Comp',
'Home_Pass_Yds':'Pass_Yards',
'Home_Pass_TD':'Pass_TD',
'Home_Pass_Int':'Pass_Int',
'Home_Sacks':'Sacks',
'Home_Sack_Yds':'Sack_Yards',
'Home_Rush_Att':'Rush_Attempts',
'Home_Rush_Yds':'Rush_Yards',
'Home_Rush_TD':'Rush_TD',
'Home_Pen':'Penalties',
'Home_Pen_Yds':'Penalty_Yards',
'Home_Won':'Result'
})

# add an additional column to denote whether the team is playing at home or away - this will help us later
home_team_stats['home_or_away']= 1
away_team_stats['home_or_away']= 0

# stack these two datasets so that each row is the stats for a team for one match (team_stats_per_match)
team_stats_per_match = pd.concat([home_team_stats,away_team_stats])
print(team_stats_per_match)
print(team_stats_per_match.columns.tolist())

# Export the predictions to a CSV file
team_stats_per_match.to_csv('predictions.csv', index=False)

# At each row of this dataset, get the team name, find the stats for that team during the last 10 games, and average these stats (avg_stats_per_team).
avg_stat_columns = ['points_per_game','pass_att_per_game','pass_comp_per_game','pass_yds_per_game','rush_att_per_game', 'rush_yds_per_game']
stats_list = []
for index, row in team_stats_per_match.iterrows():
team_stats_last_five_matches = team_stats_per_match.loc[(team_stats_per_match['Name']==row['Name']) & (team_stats_per_match['Date']

Подробнее здесь: https://stackoverflow.com/questions/790 ... to-numeric

Вернуться в «Python»