Advertisement
PyNoob1

Predictor

Jun 10th, 2021
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 17.26 KB | None | 0 0
  1. print("Importing libraries")
  2. from datetime import datetime
  3.  
  4. import pandas as pd
  5. from sklearn import preprocessing
  6. from sklearn.ensemble import RandomForestClassifier
  7. from sklearn.ensemble import RandomForestRegressor
  8. from sklearn.model_selection import train_test_split
  9. from tabulate import tabulate
  10.  
  11. start = datetime.now()
  12. print("Importing libraries completed")
  13. # Set option to display all the rows and columns in the dataset. If there are more rows, adjust number accordingly.
  14. print("Set Option")
  15. pd.set_option('display.max_rows', 5000)
  16. pd.set_option('display.max_columns', 500)
  17. pd.set_option('display.width', 1000)
  18.  
  19. print("Define Data Describe")
  20.  
  21. print("Getting files")
  22. # Files
  23. print("Reading Training Data")
  24. data_train = pd.read_csv(r"C:\Users\harsh\Google Drive\sportsintel.shop\Files\Output\dataset_updated.csv",
  25.                          low_memory=False)
  26. print("Reading Testing Data")
  27. data_test = pd.read_excel(r"C:\Users\harsh\Google Drive\sportsintel.shop\Files\Output\Backtest.xlsx",
  28.                           sheet_name='Testing', engine='openpyxl')
  29. print("Reading files complete")
  30.  
  31. print("Keeping columns")
  32. dtr = data_train
  33. dte = data_test
  34.  
  35. dtr = dtr.loc[:, dtr.columns.intersection(
  36.     ['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'HS', 'AS', 'HST', 'AST', 'HF', 'AF', 'HC', 'AC', 'HY', 'AY', 'HR',
  37.      'AR', 'B365H', 'B365D', 'B365A'])]
  38.  
  39. print("Dropping all NA")
  40. dtr = dtr.dropna()
  41. dte = dte.dropna()
  42.  
  43. data_test_pred = dte
  44. # print("Splitting Date column")
  45. dtr[['Date', 'Time']] = dtr['Date'].str.split(' ', expand=True)
  46. dtr['Date'] = pd.to_datetime(dtr['Date'])
  47. dtr['DOW'] = dtr['Date'].dt.dayofweek
  48. dtr['Month'] = dtr['Date'].dt.month
  49. dtr = dtr.loc[:, dtr.columns.intersection(
  50.     ['HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'HS', 'AS', 'HST', 'AST', 'HF', 'AF', 'HC', 'AC', 'HY', 'AY', 'HR', 'AR',
  51.      'DOW', 'Month', 'B365H', 'B365D', 'B365A'])]
  52.  
  53. rcolumndict = {
  54.     'HomeTeam': str,
  55.     'AwayTeam': str,
  56.     'FTHG': int,
  57.     'FTAG': int,
  58.     'B365H': float,
  59.     'B365D': float,
  60.     'B365A': float,
  61.     'HS': int,
  62.     'AS': int,
  63.     'HST': int,
  64.     'AST': int,
  65.     'HF': int,
  66.     'AF': int,
  67.     'HC': int,
  68.     'AC': int,
  69.     'HY': int,
  70.     'AY': int,
  71.     'HR': int,
  72.     'AR': int,
  73.     'DOW': int,
  74.     'Month': int
  75. }
  76. # print("Converting column types")
  77. dtr = dtr.astype(rcolumndict)
  78. # print("Using and splitting date columns to Day of week and month numbers for training data")
  79. # dte['Date'] = dte['Date'].str.replace('/', '-')
  80. dte['DateTime'] = pd.to_datetime(dte['DateTime'])
  81. dte['DOW'] = dte['DateTime'].dt.dayofweek
  82. dte['Month'] = dte['DateTime'].dt.month
  83. dte_input = dte
  84.  
  85. # print("Adding NAN columns to Training Data")
  86. dte = dte.reindex(
  87.     columns=dte.columns.tolist() + ['FTHG', 'FTAG', 'HS', 'AS', 'HST', 'AST', 'HF', 'AF', 'HC', 'AC', 'HY', 'AY', 'HR',
  88.                                     'AR'])
  89. # print("Keeping columns")
  90. dte = dte.loc[:, dte.columns.intersection(
  91.     ['HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'HS', 'AS', 'HST', 'AST', 'HF', 'AF', 'HC', 'AC', 'HY', 'AY', 'HR', 'AR',
  92.      'DOW', 'Month', 'B365H', 'B365D', 'B365A'])]
  93.  
  94. dte_input = dte_input.loc[:, dte_input.columns.intersection(
  95.     ['League', 'DateTime', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'HS', 'AS', 'HST', 'AST', 'HF', 'AF', 'HC', 'AC',
  96.      'HY', 'AY', 'HR', 'AR',
  97.      'DOW', 'Month', 'B365H', 'B365D', 'B365A'])]
  98.  
  99. # print("Defining Team names from test dataset as string")
  100. dte[['HomeTeam', 'AwayTeam']] = dte[['HomeTeam', 'AwayTeam']].astype(str)
  101. # print("Converting Days to weekend or weekday match")
  102. dtr['Weekend/Weekday'] = dtr['DOW'].apply(lambda x: 1 if (4 < x or x < 1) else 2)
  103. dte['Weekend/Weekday'] = dte['DOW'].apply(lambda x: 1 if (4 < x or x < 1) else 2)
  104. # print("Dropping DOW")
  105.  
  106.  
  107. dtr = dtr.drop(['DOW'], axis=1)
  108. dte = dte.drop(['DOW'], axis=1)
  109.  
  110.  
  111. # print("Defining feature columns 'text = team names'")
  112.  
  113.  
  114. def encode_features(df_train, df_test):
  115.     features = ['HomeTeam', 'AwayTeam']
  116.     df_combined = pd.concat([df_train[features], df_test[features]])
  117.  
  118.     for feature in features:
  119.         le = preprocessing.LabelEncoder()
  120.         le = le.fit(df_combined[feature])
  121.         df_train[feature] = le.transform(df_train[feature])
  122.         df_test[feature] = le.transform(df_test[feature])
  123.     return df_train, df_test
  124.  
  125.  
  126. # print("Encoding text columns")
  127. dtr, dte = encode_features(dtr, dte)
  128.  
  129. print("Part: Predicting Goals")
  130.  
  131. dtr_g = dtr.loc[:, dte.columns.intersection(
  132.     ['HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  133. dte_g = dte.loc[:, dte.columns.intersection(
  134.     ['HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  135.  
  136. dtr_g_h = dtr_g.drop(['FTAG'], axis=1)
  137. dtr_g_a = dtr_g.drop(['FTHG'], axis=1)
  138. dte_g = dte_g.drop(['FTHG', 'FTAG'], axis=1)
  139. dte_g = dte_g.dropna()
  140.  
  141. # print("Dropping home goals for home predictions")
  142. X_g_h = dtr_g_h.drop(['FTHG'], axis=1)
  143. y_g_h = dtr_g_h['FTHG']
  144. # print("Dropping away goals for away predictions")
  145. X_g_a = dtr_g_a.drop(['FTAG'], axis=1)
  146. y_g_a = dtr_g_a['FTAG']
  147. print("Splitting for Home")
  148. train_X_g_h, val_X_g_h, train_y_g_h, val_y_g_h = train_test_split(X_g_h, y_g_h, test_size=0.2, random_state=1)
  149. print("Splitting for away goals")
  150. train_X_g_a, val_X_g_a, train_y_g_a, val_y_a = train_test_split(X_g_a, y_g_a, test_size=0.2, random_state=1)
  151. # print("Running Random Forest model")
  152. rf_model_on_full_data_g_h = RandomForestRegressor()
  153. rf_model_on_full_data_g_a = RandomForestRegressor()
  154.  
  155. print("Fitting for home goals")
  156. rf_model_on_full_data_g_h.fit(X_g_h, y_g_h)
  157. rf_model_on_full_data_g_a.fit(X_g_a, y_g_a)
  158.  
  159. print("Predicting goals for Home Team")
  160. test_preds_h_g = rf_model_on_full_data_g_h.predict(dte_g)
  161.  
  162. print("Predicting goals for Away Team")
  163. test_preds_a_g = rf_model_on_full_data_g_a.predict(dte_g)
  164.  
  165. print("Part: Predicting Corners")
  166. dtr_c = dtr.loc[:, dte.columns.intersection(
  167.     ['HomeTeam', 'AwayTeam', 'HC', 'AC', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  168. dte_c = dte.loc[:, dte.columns.intersection(
  169.     ['HomeTeam', 'AwayTeam', 'HC', 'AC', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  170. dtr_c_h = dtr_c.drop(['AC'], axis=1)
  171. dtr_c_a = dtr_c.drop(['HC'], axis=1)
  172. dte_c = dte_c.drop(['HC', 'AC'], axis=1)
  173. dte_c = dte_c.dropna()
  174. # print("Dropping home corners for home predictions")
  175. X_c_h = dtr_c_h.drop(['HC'], axis=1)
  176. y_c_h = dtr_c_h['HC']
  177. # print("Dropping away corners for away predictions")
  178. X_c_a = dtr_c_a.drop(['AC'], axis=1)
  179. y_c_a = dtr_c_a['AC']
  180. print("Splitting for Home")
  181. train_X_c_h, val_X_c_h, train_y_c_h, val_y_c_h = train_test_split(X_c_h, y_c_h, test_size=0.2, random_state=1)
  182. print("Splitting for Away")
  183. train_X_c_a, val_X_c_a, train_y_c_a, val_c_a = train_test_split(X_c_a, y_c_a, test_size=0.2, random_state=1)
  184. # print("Running Random Forest model")
  185. rf_model_on_full_data_c_h = RandomForestRegressor()
  186. rf_model_on_full_data_c_a = RandomForestRegressor()
  187. print("Fitting for home corners")
  188. rf_model_on_full_data_c_h.fit(X_c_h, y_c_h)
  189. rf_model_on_full_data_c_a.fit(X_c_a, y_c_a)
  190. print("Predicting corners for Home Team")
  191. test_preds_h_c = rf_model_on_full_data_c_h.predict(dte_c)
  192. print("Predicting corners for Away Team")
  193. test_preds_a_c = rf_model_on_full_data_c_a.predict(dte_c)
  194.  
  195. print("Part: Predicting Shots")
  196. dtr_s = dtr.loc[:, dte.columns.intersection(
  197.     ['HomeTeam', 'AwayTeam', 'HS', 'AS', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  198. dte_s = dte.loc[:, dte.columns.intersection(
  199.     ['HomeTeam', 'AwayTeam', 'HS', 'AS', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  200. dtr_s_h = dtr_s.drop(['AS'], axis=1)
  201. dtr_s_a = dtr_s.drop(['HS'], axis=1)
  202. dte_s = dte_s.drop(['HS', 'AS'], axis=1)
  203. dte_s = dte_s.dropna()
  204. # print("Dropping home shots for home predictions")
  205. X_s_h = dtr_s_h.drop(['HS'], axis=1)
  206. y_s_h = dtr_s_h['HS']
  207. # print("Dropping away shots for away predictions")
  208. X_s_a = dtr_s_a.drop(['AS'], axis=1)
  209. y_s_a = dtr_s_a['AS']
  210. print("Splitting for Home")
  211. train_X_s_h, val_X_s_h, train_y_s_h, val_y_s_h = train_test_split(X_s_h, y_s_h, test_size=0.2, random_state=1)
  212. # print("Running Random Forest model")
  213. rf_model_on_full_data_s_h = RandomForestRegressor()
  214. rf_model_on_full_data_s_a = RandomForestRegressor()
  215. print("Fitting for shots")
  216. rf_model_on_full_data_s_h.fit(X_s_h, y_s_h)
  217. rf_model_on_full_data_s_a.fit(X_s_a, y_s_a)
  218.  
  219. print("Predicting shots for Home Team")
  220. test_preds_h_s = rf_model_on_full_data_s_h.predict(dte_c)
  221.  
  222. print("Predicting shots for Away Team")
  223. test_preds_a_s = rf_model_on_full_data_s_a.predict(dte_c)
  224.  
  225. print("Part: Predicting Shots on target")
  226. dtr_st = dtr.loc[:, dte.columns.intersection(
  227.     ['HomeTeam', 'AwayTeam', 'HST', 'AST', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  228. dte_st = dte.loc[:, dte.columns.intersection(
  229.     ['HomeTeam', 'AwayTeam', 'HST', 'AST', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  230. dtr_st_h = dtr_st.drop(['AST'], axis=1)
  231. dtr_st_a = dtr_st.drop(['HST'], axis=1)
  232. dte_st = dte_st.drop(['HST', 'AST'], axis=1)
  233. dte_st = dte_st.dropna()
  234. X_st_h = dtr_st_h.drop(['HST'], axis=1)
  235. y_st_h = dtr_st_h['HST']
  236. X_st_a = dtr_st_a.drop(['AST'], axis=1)
  237. y_st_a = dtr_st_a['AST']
  238. print("Splitting for Home")
  239. train_X_st_h, val_X_st_h, train_y_st_h, val_y_st_h = train_test_split(X_st_h, y_st_h, test_size=0.2, random_state=1)
  240. print("Splitting for Away")
  241. train_X_st_a, val_X_st_a, train_y_st_a, val_st_a = train_test_split(X_st_a, y_st_a, test_size=0.2, random_state=1)
  242. rf_model_on_full_data_st_h = RandomForestRegressor()
  243. rf_model_on_full_data_st_a = RandomForestRegressor()
  244. print("Fitting for shots on target")
  245. rf_model_on_full_data_st_h.fit(X_st_h, y_st_h)
  246. rf_model_on_full_data_st_a.fit(X_st_a, y_st_a)
  247. print("Predicting shots on target for Home Team")
  248. test_preds_h_st = rf_model_on_full_data_st_h.predict(dte_st)
  249. print("Predicting shots on target for Away Team")
  250. test_preds_a_st = rf_model_on_full_data_st_a.predict(dte_st)
  251.  
  252. print("Part: Predicting Fouls")
  253. dtr_f = dtr.loc[:, dte.columns.intersection(
  254.     ['HomeTeam', 'AwayTeam', 'HF', 'AF', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  255. dte_f = dte.loc[:, dte.columns.intersection(
  256.     ['HomeTeam', 'AwayTeam', 'HF', 'AF', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  257. dtr_f_h = dtr_f.drop(['AF'], axis=1)
  258. dtr_f_a = dtr_f.drop(['HF'], axis=1)
  259. dte_f = dte_f.drop(['HF', 'AF'], axis=1)
  260. dte_f = dte_f.dropna()
  261. # print("Dropping home fouls for home predictions")
  262. X_f_h = dtr_f_h.drop(['HF'], axis=1)
  263. y_f_h = dtr_f_h['HF']
  264. # print("Dropping away fouls for away predictions")
  265. X_f_a = dtr_f_a.drop(['AF'], axis=1)
  266. y_f_a = dtr_f_a['AF']
  267. print("Splitting for Home")
  268. train_X_f_h, val_X_f_h, train_y_f_h, val_y_f_h = train_test_split(X_f_h, y_f_h, test_size=0.2, random_state=1)
  269. print("Splitting for Away")
  270. train_X_f_a, val_X_f_a, train_y_f_a, val_f_a = train_test_split(X_f_a, y_f_a, test_size=0.2, random_state=1)
  271. # print("Running Random Forest model")
  272. rf_model_on_full_data_f_h = RandomForestRegressor()
  273. rf_model_on_full_data_f_a = RandomForestRegressor()
  274. print("Fitting for fouls")
  275. rf_model_on_full_data_f_h.fit(X_f_h, y_f_h)
  276. rf_model_on_full_data_f_a.fit(X_f_a, y_f_a)
  277. print("Predicting fouls for Home Team")
  278. test_preds_h_f = rf_model_on_full_data_f_h.predict(dte_f)
  279. print("Predicting fouls for Away Team")
  280. test_preds_a_f = rf_model_on_full_data_f_a.predict(dte_f)
  281.  
  282. print("Part: Predicting Yellow Cards")
  283. dtr_y = dtr.loc[:, dte.columns.intersection(
  284.     ['HomeTeam', 'AwayTeam', 'HY', 'AY', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  285. dte_y = dte.loc[:, dte.columns.intersection(
  286.     ['HomeTeam', 'AwayTeam', 'HY', 'AY', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  287. dtr_y_h = dtr_y.drop(['AY'], axis=1)
  288. dtr_y_a = dtr_y.drop(['HY'], axis=1)
  289. dte_y = dte_y.drop(['HY', 'AY'], axis=1)
  290. dte_y = dte_y.dropna()
  291. # print("Dropping home yellow cards for home predictions")
  292. X_y_h = dtr_y_h.drop(['HY'], axis=1)
  293. y_y_h = dtr_y_h['HY']
  294. # print("Dropping away yellow cards for away predictions")
  295. X_y_a = dtr_y_a.drop(['AY'], axis=1)
  296. y_y_a = dtr_y_a['AY']
  297. print("Splitting for Home")
  298. train_X_y_h, val_X_y_h, train_y_y_h, val_y_y_h = train_test_split(X_y_h, y_y_h, test_size=0.2, random_state=1)
  299. print("Splitting for Away")
  300. train_X_y_a, val_X_y_a, train_y_y_a, val_y_y_a = train_test_split(X_y_a, y_y_a, test_size=0.2, random_state=1)
  301. # print("Running Random Forest model")
  302. rf_model_on_full_data_y_h = RandomForestRegressor()
  303. rf_model_on_full_data_y_a = RandomForestRegressor()
  304. print("Fitting for yellow cards")
  305. rf_model_on_full_data_y_h.fit(X_y_h, y_y_h)
  306. rf_model_on_full_data_y_a.fit(X_y_a, y_y_a)
  307. print("Predicting yellow cards for Home Team")
  308. test_preds_h_y = rf_model_on_full_data_y_h.predict(dte_y)
  309. print("Predicting yellow cards for Away Team")
  310. test_preds_a_y = rf_model_on_full_data_y_a.predict(dte_y)
  311.  
  312. print("Part: Predicting Red Cards")
  313. dtr_r = dtr.loc[:, dte.columns.intersection(
  314.     ['HomeTeam', 'AwayTeam', 'HR', 'AR', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  315. dte_r = dte.loc[:, dte.columns.intersection(
  316.     ['HomeTeam', 'AwayTeam', 'HR', 'AR', 'Weekend/Weekday', 'Month', 'B365H', 'B365D', 'B365A'])]
  317. dtr_r_h = dtr_r.drop(['AR'], axis=1)
  318. dtr_r_a = dtr_r.drop(['HR'], axis=1)
  319. dte_r = dte_r.drop(['HR', 'AR'], axis=1)
  320. dte_r = dte_r.dropna()
  321. X_r_h = dtr_r_h.drop(['HR'], axis=1)
  322. y_r_h = dtr_r_h['HR']
  323. X_r_a = dtr_r_a.drop(['AR'], axis=1)
  324. y_r_a = dtr_r_a['AR']
  325. print("Splitting for Home")
  326. train_X_r_h, val_X_r_h, train_y_r_h, val_y_r_h = train_test_split(X_r_h, y_r_h, test_size=0.2, random_state=1)
  327. print("Splitting for Away")
  328. train_X_r_a, val_X_r_a, train_y_r_a, val_y_r_a = train_test_split(X_r_a, y_r_a, test_size=0.2, random_state=1)
  329. # print("Running Random Forest model")
  330. rf_model_on_full_data_r_h = RandomForestRegressor()
  331. rf_model_on_full_data_r_a = RandomForestRegressor()
  332. print("Fitting for red cards")
  333. rf_model_on_full_data_r_h.fit(X_r_h, y_r_h)
  334. rf_model_on_full_data_r_a.fit(X_r_a, y_r_a)
  335. print("Predicting red cards for Home Team")
  336. test_preds_h_r = rf_model_on_full_data_r_h.predict(dte_r)
  337. print("Predicting red cards for Away Team")
  338. test_preds_a_r = rf_model_on_full_data_r_a.predict(dte_r)
  339. print("Bringing it all together")
  340.  
  341. print(tabulate(dte_input, headers='keys'))
  342.  
  343. # print(tabulate(test_preds_h_g, headers='keys'))
  344. #
  345. # print(tabulate(test_preds_a_r, headers='keys'))
  346.  
  347. result = pd.DataFrame({
  348.     'League': dte_input.League,
  349.     'Match DateTime': dte_input.DateTime,
  350.     'Home Team': dte_input.HomeTeam,
  351.     'Away Team': dte_input.AwayTeam,
  352.     'Full time Home Goals': test_preds_h_g,
  353.     'Full time Away Goals': test_preds_a_g,
  354.     'Home Team Corners': test_preds_h_c,
  355.     'Away Team Corners': test_preds_a_c,
  356.     'Home Team shots on goal': test_preds_h_s,
  357.     'Away Team shots on goal': test_preds_a_s,
  358.     'Home Team shots on target': test_preds_h_st,
  359.     'Away Team shots on target': test_preds_a_st,
  360.     'Home Team fouls': test_preds_h_f,
  361.     'Away Team fouls': test_preds_a_f,
  362.     'Home Team yellow cards': test_preds_h_y,
  363.     'Away Team yellow cards': test_preds_a_y,
  364.     'Home Team red cards': test_preds_h_r,
  365.     'Away Team red cards': test_preds_a_r})
  366.  
  367. print(tabulate(result, headers='keys'))
  368. # print(tabulate(dte_input, headers='keys'))
  369. # print(tabulate(dte_g, headers='keys'))
  370. result.to_csv(r"C:\Users\harsh\Google Drive\sportsintel.shop\Files\Output\output.csv")
  371. result.to_csv(r"C:\Users\harsh\OneDrive\Documents\SportsIntel Files\output.csv")
  372. print("Saving to historical runs")
  373. df_hist = pd.read_excel(r"C:\Users\harsh\Google Drive\sportsintel.shop\Files\Output\Backtest.xlsx",
  374.                         sheet_name='Historical', engine='openpyxl')
  375.  
  376.  
  377. def write_excel(filename, sheetname, dataframe):
  378.     with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
  379.         workBook = writer.book
  380.         try:
  381.             workBook.remove(workBook[sheetname])
  382.         except:
  383.             print("Worksheet does not exist")
  384.         finally:
  385.             dataframe.to_excel(writer, sheet_name=sheetname, index=False)
  386.             writer.save()
  387.  
  388.  
  389. Run_Date = pd.to_datetime('today')
  390. result['Run_Date'] = Run_Date
  391. print('Appending to historical')
  392. df_hist = df_hist.append(result)
  393.  
  394. write_excel(r"C:\Users\harsh\Google Drive\sportsintel.shop\Files\Output\Backtest.xlsx", 'Historical', df_hist)
  395. # write_excel(r"C:\Users\harsh\OneDrive\Documents\SportsIntel Files\Backtest.xlsx", 'Historical', df_hist)
  396. df_hist.to_csv(r"C:\Users\harsh\Google Drive\sportsintel.shop\Files\Output\hist.csv")
  397.  
  398. output_dtypes = {'Full time Home Goals': int,
  399.                  'Full time Away Goals': int,
  400.                  'Home Team Corners': int,
  401.                  'Away Team Corners': int,
  402.                  'Home Team shots on goal': int,
  403.                  'Away Team shots on goal': int,
  404.                  'Home Team shots on target': int,
  405.                  'Away Team shots on target': int,
  406.                  'Home Team fouls': int,
  407.                  'Away Team fouls': int,
  408.                  'Home Team yellow cards': int,
  409.                  'Away Team yellow cards': int,
  410.                  'Home Team red cards': int,
  411.                  'Away Team red cards': int}
  412. result_con = result.astype(output_dtypes)
  413. print(tabulate(result_con, headers='keys'))
  414. result_con.to_csv(r"C:\Users\harsh\Google Drive\sportsintel.shop\Files\Output\output_int.csv")
  415.  
  416.  
  417. print("Success!")
  418. end = datetime.now()
  419. time_taken = end - start
  420. print('Time taken to complete: ', time_taken)
  421.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement