Update after matchday 15
This commit is contained in:
@@ -0,0 +1,826 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "fd8a6cb9",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Scraping for playing probability for the current Serie A matchday.\n",
|
||||
"\n",
|
||||
"Data from http://fantacalcio.it"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "4c7b7d26",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"from bs4 import BeautifulSoup\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import re\n",
|
||||
"import sys, getopt\n",
|
||||
"import csv\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "91897dbb",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"res = requests.get('https://www.fantacalcio.it/probabili-formazioni-serie-a')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "7ba89027",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>player</th>\n",
|
||||
" <th>starter</th>\n",
|
||||
" <th>percentage</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>Vicario</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>Ebuehi</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>Ismajli</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>Walukiewicz</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>Parisi</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>444</th>\n",
|
||||
" <td>Basic</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>445</th>\n",
|
||||
" <td>Bertini</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>10.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>446</th>\n",
|
||||
" <td>Marcos Antonio</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>50.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>447</th>\n",
|
||||
" <td>Romero L.</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>50.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>448</th>\n",
|
||||
" <td>Cancellieri</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>449 rows × 3 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" player starter percentage\n",
|
||||
"0 Vicario 1 100.0\n",
|
||||
"1 Ebuehi 1 100.0\n",
|
||||
"2 Ismajli 1 100.0\n",
|
||||
"3 Walukiewicz 1 100.0\n",
|
||||
"4 Parisi 1 100.0\n",
|
||||
".. ... ... ...\n",
|
||||
"444 Basic 0 55.0\n",
|
||||
"445 Bertini 0 10.0\n",
|
||||
"446 Marcos Antonio 0 50.0\n",
|
||||
"447 Romero L. 0 50.0\n",
|
||||
"448 Cancellieri 0 55.0\n",
|
||||
"\n",
|
||||
"[449 rows x 3 columns]"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"soup = BeautifulSoup(res.text)\n",
|
||||
"\n",
|
||||
"groups = soup.findAll('ul', attrs = {'class' : 'player-list'})\n",
|
||||
"\n",
|
||||
"probables = pd.DataFrame(columns = ['player', 'starter', 'percentage'])\n",
|
||||
"\n",
|
||||
"for i in range (len(groups)):\n",
|
||||
" players = groups[i].findAll('a', attrs = {'class' : 'player-name'})\n",
|
||||
" bars = groups[i].findAll('div', attrs = {'class' : 'progress-bar'})\n",
|
||||
" \n",
|
||||
" starter_string = groups[i]['class'][1]\n",
|
||||
" if(starter_string == 'starters'):\n",
|
||||
" starter = 1\n",
|
||||
" else:\n",
|
||||
" starter = 0\n",
|
||||
" \n",
|
||||
" for j in range(len(players)):\n",
|
||||
" player = players[j].contents[0].replace('\\n \\n ', '')\n",
|
||||
" perc = float(bars[j]['aria-valuenow'])\n",
|
||||
" \n",
|
||||
" row_df = pd.DataFrame([[player, starter, perc]], columns = probables.columns)\n",
|
||||
" \n",
|
||||
" probables = pd.concat([probables, row_df], ignore_index = True)\n",
|
||||
" \n",
|
||||
"probables "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "29e5b389",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"probables = probables.set_index('player')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "d711726e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>player1</th>\n",
|
||||
" <th>player2</th>\n",
|
||||
" <th>percentage</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>Lozano</td>\n",
|
||||
" <td>Politano</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>Zambo Anguissa</td>\n",
|
||||
" <td>Ndombele'</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>Mario Rui</td>\n",
|
||||
" <td>Olivera</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>Elmas</td>\n",
|
||||
" <td>Raspadori</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>Beto</td>\n",
|
||||
" <td>Success</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>5</th>\n",
|
||||
" <td>Lovric</td>\n",
|
||||
" <td>Samardzic</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>6</th>\n",
|
||||
" <td>Ehizibue</td>\n",
|
||||
" <td>Nuytinck</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>7</th>\n",
|
||||
" <td>Rincon</td>\n",
|
||||
" <td>Vieira</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>8</th>\n",
|
||||
" <td>Augello</td>\n",
|
||||
" <td>Murru</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>9</th>\n",
|
||||
" <td>Djuricic</td>\n",
|
||||
" <td>Leris</td>\n",
|
||||
" <td>65.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>10</th>\n",
|
||||
" <td>Caputo</td>\n",
|
||||
" <td>Montevago</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>11</th>\n",
|
||||
" <td>Di Francesco F.</td>\n",
|
||||
" <td>Banda</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>12</th>\n",
|
||||
" <td>Colombo</td>\n",
|
||||
" <td>Ceesay</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>13</th>\n",
|
||||
" <td>Gonzalez J.</td>\n",
|
||||
" <td>Bistrovic</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>14</th>\n",
|
||||
" <td>Lykogiannis</td>\n",
|
||||
" <td>Cambiaso</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>15</th>\n",
|
||||
" <td>Barrow</td>\n",
|
||||
" <td>Orsolini</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>16</th>\n",
|
||||
" <td>Ferguson</td>\n",
|
||||
" <td>Schouten</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>17</th>\n",
|
||||
" <td>Traore' Hj.</td>\n",
|
||||
" <td>Berardi</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>18</th>\n",
|
||||
" <td>Rogerio</td>\n",
|
||||
" <td>Kyriakopoulos</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>19</th>\n",
|
||||
" <td>Djimsiti</td>\n",
|
||||
" <td>Scalvini</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>20</th>\n",
|
||||
" <td>Zapata D.</td>\n",
|
||||
" <td>Hojlund</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>21</th>\n",
|
||||
" <td>Pasalic</td>\n",
|
||||
" <td>Malinovskyi</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>22</th>\n",
|
||||
" <td>Bastoni</td>\n",
|
||||
" <td>Acerbi</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>23</th>\n",
|
||||
" <td>Brozovic</td>\n",
|
||||
" <td>Mkhitaryan</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>24</th>\n",
|
||||
" <td>Skriniar</td>\n",
|
||||
" <td>D'ambrosio</td>\n",
|
||||
" <td>65.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>25</th>\n",
|
||||
" <td>Lazovic</td>\n",
|
||||
" <td>Depaoli</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>26</th>\n",
|
||||
" <td>Verdi</td>\n",
|
||||
" <td>Hongla</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>27</th>\n",
|
||||
" <td>Dawidowicz</td>\n",
|
||||
" <td>Hien</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>28</th>\n",
|
||||
" <td>Verde</td>\n",
|
||||
" <td>Gyasi</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>29</th>\n",
|
||||
" <td>Bastoni S.</td>\n",
|
||||
" <td>Amian</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>30</th>\n",
|
||||
" <td>Carlos Augusto</td>\n",
|
||||
" <td>D'alessandro</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>31</th>\n",
|
||||
" <td>Birindelli</td>\n",
|
||||
" <td>Ciurria</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>32</th>\n",
|
||||
" <td>Petagna</td>\n",
|
||||
" <td>Gytkjaer</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>33</th>\n",
|
||||
" <td>Caldirola</td>\n",
|
||||
" <td>Carboni</td>\n",
|
||||
" <td>65.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>34</th>\n",
|
||||
" <td>Lovato</td>\n",
|
||||
" <td>Bronn</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>35</th>\n",
|
||||
" <td>Piatek</td>\n",
|
||||
" <td>Bonazzoli</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>36</th>\n",
|
||||
" <td>Candreva</td>\n",
|
||||
" <td>Bradaric</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>37</th>\n",
|
||||
" <td>Zalewski</td>\n",
|
||||
" <td>El Shaarawy</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>38</th>\n",
|
||||
" <td>Volpato</td>\n",
|
||||
" <td>Dybala</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>39</th>\n",
|
||||
" <td>Matic</td>\n",
|
||||
" <td>Camara Ma.</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>40</th>\n",
|
||||
" <td>Vojvoda</td>\n",
|
||||
" <td>Singo</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>41</th>\n",
|
||||
" <td>Sanabria</td>\n",
|
||||
" <td>Pellegri</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>42</th>\n",
|
||||
" <td>Miranchuk</td>\n",
|
||||
" <td>Radonjic</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>43</th>\n",
|
||||
" <td>Kjaer</td>\n",
|
||||
" <td>Gabbia</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>44</th>\n",
|
||||
" <td>De Ketelaere</td>\n",
|
||||
" <td>Diaz B.</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>45</th>\n",
|
||||
" <td>Bennacer</td>\n",
|
||||
" <td>Pobega</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>46</th>\n",
|
||||
" <td>Martinez Quarta</td>\n",
|
||||
" <td>Igor</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>47</th>\n",
|
||||
" <td>Bonaventura</td>\n",
|
||||
" <td>Mandragora</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>48</th>\n",
|
||||
" <td>Dodo'</td>\n",
|
||||
" <td>Venuti</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>49</th>\n",
|
||||
" <td>Ikone'</td>\n",
|
||||
" <td>Saponara</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>50</th>\n",
|
||||
" <td>Locatelli</td>\n",
|
||||
" <td>Paredes</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>51</th>\n",
|
||||
" <td>Milik</td>\n",
|
||||
" <td>Vlahovic</td>\n",
|
||||
" <td>65.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>52</th>\n",
|
||||
" <td>Miretti</td>\n",
|
||||
" <td>Di Maria</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>53</th>\n",
|
||||
" <td>Immobile</td>\n",
|
||||
" <td>Cancellieri</td>\n",
|
||||
" <td>60.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>54</th>\n",
|
||||
" <td>Vecino</td>\n",
|
||||
" <td>Luis Alberto</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" player1 player2 percentage\n",
|
||||
"0 Lozano Politano 60.0\n",
|
||||
"1 Zambo Anguissa Ndombele' 60.0\n",
|
||||
"2 Mario Rui Olivera 55.0\n",
|
||||
"3 Elmas Raspadori 55.0\n",
|
||||
"4 Beto Success 60.0\n",
|
||||
"5 Lovric Samardzic 55.0\n",
|
||||
"6 Ehizibue Nuytinck 60.0\n",
|
||||
"7 Rincon Vieira 60.0\n",
|
||||
"8 Augello Murru 55.0\n",
|
||||
"9 Djuricic Leris 65.0\n",
|
||||
"10 Caputo Montevago 60.0\n",
|
||||
"11 Di Francesco F. Banda 55.0\n",
|
||||
"12 Colombo Ceesay 55.0\n",
|
||||
"13 Gonzalez J. Bistrovic 60.0\n",
|
||||
"14 Lykogiannis Cambiaso 55.0\n",
|
||||
"15 Barrow Orsolini 55.0\n",
|
||||
"16 Ferguson Schouten 55.0\n",
|
||||
"17 Traore' Hj. Berardi 55.0\n",
|
||||
"18 Rogerio Kyriakopoulos 60.0\n",
|
||||
"19 Djimsiti Scalvini 60.0\n",
|
||||
"20 Zapata D. Hojlund 60.0\n",
|
||||
"21 Pasalic Malinovskyi 55.0\n",
|
||||
"22 Bastoni Acerbi 55.0\n",
|
||||
"23 Brozovic Mkhitaryan 55.0\n",
|
||||
"24 Skriniar D'ambrosio 65.0\n",
|
||||
"25 Lazovic Depaoli 55.0\n",
|
||||
"26 Verdi Hongla 60.0\n",
|
||||
"27 Dawidowicz Hien 60.0\n",
|
||||
"28 Verde Gyasi 55.0\n",
|
||||
"29 Bastoni S. Amian 55.0\n",
|
||||
"30 Carlos Augusto D'alessandro 60.0\n",
|
||||
"31 Birindelli Ciurria 60.0\n",
|
||||
"32 Petagna Gytkjaer 55.0\n",
|
||||
"33 Caldirola Carboni 65.0\n",
|
||||
"34 Lovato Bronn 55.0\n",
|
||||
"35 Piatek Bonazzoli 55.0\n",
|
||||
"36 Candreva Bradaric 55.0\n",
|
||||
"37 Zalewski El Shaarawy 60.0\n",
|
||||
"38 Volpato Dybala 55.0\n",
|
||||
"39 Matic Camara Ma. 55.0\n",
|
||||
"40 Vojvoda Singo 60.0\n",
|
||||
"41 Sanabria Pellegri 55.0\n",
|
||||
"42 Miranchuk Radonjic 55.0\n",
|
||||
"43 Kjaer Gabbia 55.0\n",
|
||||
"44 De Ketelaere Diaz B. 55.0\n",
|
||||
"45 Bennacer Pobega 60.0\n",
|
||||
"46 Martinez Quarta Igor 55.0\n",
|
||||
"47 Bonaventura Mandragora 55.0\n",
|
||||
"48 Dodo' Venuti 55.0\n",
|
||||
"49 Ikone' Saponara 55.0\n",
|
||||
"50 Locatelli Paredes 60.0\n",
|
||||
"51 Milik Vlahovic 65.0\n",
|
||||
"52 Miretti Di Maria 55.0\n",
|
||||
"53 Immobile Cancellieri 60.0\n",
|
||||
"54 Vecino Luis Alberto 55.0"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"groups = soup.findAll('ul', attrs = {'class' : 'ballot-list'})\n",
|
||||
"\n",
|
||||
"ballots = pd.DataFrame(columns = ['player1', 'player2', 'percentage'])\n",
|
||||
"for i in range (len(groups)):\n",
|
||||
" players = groups[i].findAll('a', attrs = {'class' : 'player-name'})\n",
|
||||
" percs = groups[i].findAll('strong', attrs = {'class' : 'percentage'})\n",
|
||||
" \n",
|
||||
" player1 = players[0].contents[0].replace('\\n \\n ', '')\n",
|
||||
" player2 = players[1].contents[0].replace('\\n \\n ', '')\n",
|
||||
" perc = float(percs[0].contents[0].replace('%', ''))\n",
|
||||
" \n",
|
||||
" row_df = pd.DataFrame([[player1, player2, perc]], columns = ballots.columns)\n",
|
||||
" \n",
|
||||
" ballots = pd.concat([ballots, row_df], ignore_index = True)\n",
|
||||
" \n",
|
||||
"ballots"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "0171c61d",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>starter</th>\n",
|
||||
" <th>percentage</th>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>player</th>\n",
|
||||
" <th></th>\n",
|
||||
" <th></th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>Vicario</th>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Ebuehi</th>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Ismajli</th>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Walukiewicz</th>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Parisi</th>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>100.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Basic</th>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Bertini</th>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>10.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Marcos Antonio</th>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>50.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Romero L.</th>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>50.0</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Cancellieri</th>\n",
|
||||
" <td>0.4</td>\n",
|
||||
" <td>55.0</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>449 rows × 2 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" starter percentage\n",
|
||||
"player \n",
|
||||
"Vicario 1 100.0\n",
|
||||
"Ebuehi 1 100.0\n",
|
||||
"Ismajli 1 100.0\n",
|
||||
"Walukiewicz 1 100.0\n",
|
||||
"Parisi 1 100.0\n",
|
||||
"... ... ...\n",
|
||||
"Basic 0 55.0\n",
|
||||
"Bertini 0 10.0\n",
|
||||
"Marcos Antonio 0 50.0\n",
|
||||
"Romero L. 0 50.0\n",
|
||||
"Cancellieri 0.4 55.0\n",
|
||||
"\n",
|
||||
"[449 rows x 2 columns]"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for i in range(ballots.shape[0]):\n",
|
||||
" p1 = ballots['player1'][i]\n",
|
||||
" p2 = ballots['player2'][i]\n",
|
||||
" \n",
|
||||
" perc = float(ballots['percentage'][i])\n",
|
||||
" \n",
|
||||
" probables.at[p1, 'starter'] = perc/100\n",
|
||||
" probables.at[p2, 'starter'] = 1 - perc/100\n",
|
||||
" \n",
|
||||
"probables"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "8b5468aa",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"probables.to_excel('mid_outputs/match_probable_players.xlsx') "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "cf992051",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.13"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in New Issue
Block a user