├── download (2).png ├── Progressive Passing Plot ├── output.png ├── analysis.csv └── Progressive_Passing_Fullbacks.ipynb ├── README.md ├── LICENSE └── radar.py /download (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AIAnytime/Football-Analytics/main/download (2).png -------------------------------------------------------------------------------- /Progressive Passing Plot/output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AIAnytime/Football-Analytics/main/Progressive Passing Plot/output.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Football-Analytics 2 | I am creating a new repository that will have all the codes and explanation regrading football data analytics. The repo will be updated every week with new analysis on various datasets. It will include basic EDA, Plotting, ML Modelling, and few end to end projects. 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Sonu Kumar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /radar.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import matplotlib.pyplot as plt 3 | from soccerplots.radar_chart import Radar 4 | 5 | data = pd.read_csv("/home/sonu/Downloads/fol/radars.csv") 6 | 7 | 8 | data['Player'] = data['Player'].str.split('\\',expand=True)[0] 9 | 10 | data.Player.unique() 11 | 12 | data = data[(data['Player']=='Bruno Fernandes') | (data['Player']=='İlkay Gündoğan')].reset_index() 13 | 14 | data = data.drop(['index','Rk','Nation','Pos','Squad','Age','Born','90s','FK','PK','PKatt','Matches'],axis=1) 15 | 16 | params = list(data.columns) 17 | params = params[1:] 18 | 19 | #add ranges to list of tuple pairs 20 | ranges = [] 21 | a_values = [] 22 | b_values = [] 23 | 24 | for x in params: 25 | a = min(data[params][x]) 26 | a = a - (a*.25) 27 | 28 | b = max(data[params][x]) 29 | b = b + (b*.25) 30 | 31 | ranges.append((a,b)) 32 | 33 | for x in range(len(data['Player'])): 34 | if data['Player'][x] == 'Bruno Fernandes': 35 | a_values = data.iloc[x].values.tolist() 36 | if data['Player'][x] == 'İlkay Gündoğan': 37 | b_values = data.iloc[x].values.tolist() 38 | 39 | a_values = a_values[1:] 40 | b_values = b_values[1:] 41 | 42 | values = [a_values,b_values] 43 | 44 | 45 | 46 | ## title 47 | title = dict( 48 | title_name='Bruno Fernandes', 49 | title_color='#F0FFF0', 50 | subtitle_name='Manchester United', 51 | subtitle_color='#D43E2A', 52 | title_name_2='İlkay Gündoğan', 53 | title_color_2='#F0FFF0', 54 | subtitle_name_2='Manchester City', 55 | subtitle_color_2='#C7E0EC', 56 | title_fontsize=20, 57 | subtitle_fontsize=18, 58 | ) 59 | 60 | ## endnote 61 | endnote = "Visualization made by: Sonu. All units are in per90" 62 | 63 | radar = Radar(background_color="#121212", patch_color="#28252C", label_color="#F2A365", 64 | range_color="#F0FFF0") 65 | 66 | ## plot radar 67 | fig, ax = radar.plot_radar(ranges=ranges, params=params, values=values, 68 | radar_color=['#D43E2A', '#C7E0EC'], 69 | title=title, endnote=endnote, 70 | alphas=[.75,.6], compare=True) -------------------------------------------------------------------------------- /Progressive Passing Plot/analysis.csv: -------------------------------------------------------------------------------- 1 | ,index,Player,Pos,Squad,90s,Prog,ProgPer90 2 | 0,0,Patrick van Aanholt,DF,Crystal Palace,12.7,79.0,6.220472440944882 3 | 1,1,Tammy Abraham,FW,Chelsea,10.8,11.0,1.0185185185185184 4 | 2,2,Che Adams,FW,Southampton,19.3,38.0,1.9689119170984455 5 | 3,3,Tosin Adarabioyo,DF,Fulham,19.0,39.0,2.0526315789473686 6 | 4,6,Ola Aina,DF,Fulham,18.7,73.0,3.9037433155080214 7 | 5,7,Rayan Aït Nouri,DF,Wolves,7.7,18.0,2.3376623376623376 8 | 6,8,Semi Ajayi,DF,West Brom,23.0,49.0,2.130434782608696 9 | 7,10,Marc Albrighton,"FW,DF",Leicester City,12.4,52.0,4.193548387096774 10 | 8,11,Thiago Alcántara,MF,Liverpool,9.1,87.0,9.56043956043956 11 | 9,12,Toby Alderweireld,DF,Tottenham,13.9,31.0,2.2302158273381294 12 | 10,14,Trent Alexander-Arnold,DF,Liverpool,20.5,178.0,8.682926829268293 13 | 11,15,Ezgjan Alioski,"DF,MF",Leeds United,15.6,63.0,4.038461538461538 14 | 12,17,Allan,MF,Everton,11.4,26.0,2.280701754385965 15 | 13,19,Miguel Almirón,"MF,FW",Newcastle Utd,16.2,40.0,2.469135802469136 16 | 14,21,Steven Alzate,"MF,DF",Brighton,7.5,24.0,3.2 17 | 15,23,Ethan Ampadu,"DF,MF",Sheffield Utd,15.8,58.0,3.670886075949367 18 | 16,24,Joachim Andersen,DF,Fulham,16.7,54.0,3.2335329341317367 19 | 17,27,Michail Antonio,FW,West Ham,11.9,10.0,0.8403361344537815 20 | 18,29,Stuart Armstrong,MF,Southampton,17.2,56.0,3.255813953488372 21 | 19,31,Pierre-Emerick Aubameyang,FW,Arsenal,18.5,42.0,2.27027027027027 22 | 20,32,Serge Aurier,DF,Tottenham,11.9,40.0,3.361344537815126 23 | 21,34,Jordan Ayew,"FW,MF",Crystal Palace,13.6,28.0,2.058823529411765 24 | 22,35,Luke Ayling,DF,Leeds United,22.8,146.0,6.4035087719298245 25 | 23,36,César Azpilicueta,DF,Chelsea,12.6,57.0,4.523809523809524 26 | 24,38,Fabián Balbuena,DF,West Ham,12.0,27.0,2.25 27 | 25,39,George Baldock,DF,Sheffield Utd,18.5,38.0,2.054054054054054 28 | 26,41,Patrick Bamford,FW,Leeds United,21.8,14.0,0.6422018348623852 29 | 27,43,Ross Barkley,MF,Aston Villa,11.0,44.0,4.0 30 | 28,45,Ashley Barnes,FW,Burnley,13.4,18.0,1.3432835820895521 31 | 29,46,Harvey Barnes,"FW,MF",Leicester City,20.1,58.0,2.8855721393034823 32 | 30,47,Kyle Bartley,DF,West Brom,14.8,14.0,0.9459459459459459 33 | 31,48,Chris Basham,"DF,MF",Sheffield Utd,22.1,52.0,2.352941176470588 34 | 32,49,Michy Batshuayi,FW,Crystal Palace,7.8,9.0,1.153846153846154 35 | 33,50,Jan Bednarek,DF,Southampton,21.9,64.0,2.9223744292237446 36 | 34,52,Héctor Bellerín,DF,Arsenal,20.2,74.0,3.6633663366336635 37 | 35,53,Saïd Benrahma,"MF,FW",West Ham,9.5,29.0,3.0526315789473686 38 | 36,55,Christian Benteke,FW,Crystal Palace,8.9,18.0,2.0224719101123596 39 | 37,56,Jóhann Berg Guðmundsson,MF,Burnley,7.9,21.0,2.6582278481012658 40 | 38,57,Sander Berge,MF,Sheffield Utd,11.3,29.0,2.566371681415929 41 | 39,58,Steven Bergwijn,"FW,MF",Tottenham,11.3,14.0,1.238938053097345 42 | 40,61,Ryan Bertrand,DF,Southampton,20.9,73.0,3.4928229665071773 43 | 41,62,Yves Bissouma,MF,Brighton,20.6,77.0,3.7378640776699026 44 | 42,63,Jayden Bogle,DF,Sheffield Utd,7.8,17.0,2.1794871794871797 45 | 43,64,Willy Boly,DF,Wolves,16.0,33.0,2.0625 46 | 44,65,Jarrod Bowen,"FW,MF",West Ham,19.6,30.0,1.530612244897959 47 | 45,66,Robbie Brady,MF,Burnley,10.9,29.0,2.6605504587155964 48 | 46,67,Rhian Brewster,FW,Sheffield Utd,8.2,10.0,1.2195121951219514 49 | 47,68,Josh Brownhill,MF,Burnley,17.5,26.0,1.4857142857142858 50 | 48,71,Oliver Burke,FW,Sheffield Utd,10.0,6.0,0.6 51 | 49,72,Dan Burn,DF,Brighton,13.4,46.0,3.432835820895522 52 | 50,76,Gary Cahill,DF,Crystal Palace,9.0,18.0,2.0 53 | 51,77,Tom Cairney,MF,Fulham,8.4,32.0,3.8095238095238093 54 | 52,78,Dominic Calvert-Lewin,FW,Everton,19.6,18.0,0.9183673469387754 55 | 53,79,João Cancelo,DF,Manchester City,16.9,119.0,7.041420118343196 56 | 54,82,Matty Cash,DF,Aston Villa,20.2,42.0,2.0792079207920793 57 | 55,84,Timothy Castagne,DF,Leicester City,12.1,40.0,3.3057851239669422 58 | 56,86,Ivan Cavaleiro,"FW,MF",Fulham,16.1,30.0,1.8633540372670805 59 | 57,87,Edinson Cavani,FW,Manchester Utd,9.5,13.0,1.368421052631579 60 | 58,88,Dani Ceballos,MF,Arsenal,12.3,84.0,6.829268292682927 61 | 59,89,Ben Chilwell,DF,Chelsea,16.5,96.0,5.818181818181818 62 | 60,91,Andreas Christensen,DF,Chelsea,7.1,23.0,3.23943661971831 63 | 61,92,Ciaran Clark,DF,Newcastle Utd,12.4,27.0,2.1774193548387095 64 | 62,93,Nathaniel Clyne,DF,Crystal Palace,12.7,25.0,1.968503937007874 65 | 63,94,Conor Coady,DF,Wolves,22.7,37.0,1.6299559471365639 66 | 64,95,Séamus Coleman,DF,Everton,8.0,21.0,2.625 67 | 65,96,Aaron Connolly,FW,Brighton,7.4,3.0,0.4054054054054054 68 | 66,97,Liam Cooper,DF,Leeds United,16.8,47.0,2.7976190476190474 69 | 67,99,Hélder Costa,MF,Leeds United,8.2,11.0,1.3414634146341464 70 | 68,100,Vladimír Coufal,DF,West Ham,19.9,77.0,3.869346733668342 71 | 69,101,Aaron Cresswell,DF,West Ham,24.0,88.0,3.6666666666666665 72 | 70,103,Stuart Dallas,"DF,MF",Leeds United,22.9,117.0,5.109170305676856 73 | 71,104,Scott Dann,DF,Crystal Palace,12.0,26.0,2.1666666666666665 74 | 72,106,Ben Davies,DF,Tottenham,13.6,39.0,2.8676470588235294 75 | 73,107,Tom Davies,"MF,DF",Everton,7.9,25.0,3.1645569620253164 76 | 74,110,Craig Dawson,DF,West Ham,9.0,15.0,1.6666666666666667 77 | 75,111,Kevin De Bruyne,MF,Manchester City,15.6,118.0,7.564102564102564 78 | 76,114,Leander Dendoncker,"MF,DF",Wolves,16.7,38.0,2.2754491017964074 79 | 77,117,Grady Diangana,"MF,FW",West Brom,11.9,23.0,1.9327731092436975 80 | 78,118,Raphael Dias Belloli,MF,Leeds United,15.0,92.0,6.133333333333334 81 | 79,119,Rúben Dias,DF,Manchester City,19.8,69.0,3.484848484848485 82 | 80,120,Eric Dier,DF,Tottenham,20.0,42.0,2.1 83 | 81,121,Lucas Digne,"DF,MF",Everton,13.8,57.0,4.130434782608695 84 | 82,124,Moussa Djenepo,MF,Southampton,9.3,20.0,2.150537634408602 85 | 83,125,Matt Doherty,DF,Tottenham,9.1,29.0,3.186813186813187 86 | 84,126,Gabriel Dos Santos,DF,Arsenal,14.2,30.0,2.1126760563380285 87 | 85,127,Abdoulaye Doucouré,MF,Everton,20.0,45.0,2.25 88 | 86,129,Lewis Dunk,DF,Brighton,21.0,43.0,2.0476190476190474 89 | 87,133,John Egan,DF,Sheffield Utd,21.1,46.0,2.1800947867298577 90 | 88,135,Mohamed Elneny,MF,Arsenal,10.3,31.0,3.0097087378640777 91 | 89,136,Jonny Evans,DF,Leicester City,19.7,39.0,1.9796954314720814 92 | 90,137,Eberechi Eze,MF,Crystal Palace,17.7,81.0,4.576271186440678 93 | 91,139,Fabinho,"DF,MF",Liverpool,17.4,57.0,3.2758620689655173 94 | 92,140,Bruno Fernandes,MF,Manchester Utd,22.4,163.0,7.276785714285714 95 | 93,141,Federico Fernández,DF,Newcastle Utd,15.3,15.0,0.9803921568627451 96 | 94,144,Roberto Firmino,FW,Liverpool,20.8,71.0,3.4134615384615383 97 | 95,145,John Fleck,MF,Sheffield Utd,14.7,60.0,4.081632653061225 98 | 96,146,Phil Foden,FW,Manchester City,12.4,42.0,3.3870967741935485 99 | 97,147,Wesley Fofana,DF,Leicester City,15.5,44.0,2.838709677419355 100 | 98,148,Pablo Fornals,"FW,MF",West Ham,17.1,60.0,3.508771929824561 101 | 99,151,Ryan Fraser,"MF,FW",Newcastle Utd,6.6,15.0,2.272727272727273 102 | 100,152,Fred,MF,Manchester Utd,15.6,95.0,6.08974358974359 103 | 101,154,Christian Fuchs,DF,Leicester City,7.8,33.0,4.230769230769231 104 | 102,155,Darnell Furlong,DF,West Brom,18.6,44.0,2.365591397849462 105 | 103,156,Conor Gallagher,MF,West Brom,17.1,34.0,1.9883040935672514 106 | 104,161,Kieran Gibbs,DF,West Brom,9.0,16.0,1.7777777777777777 107 | 105,164,Olivier Giroud,FW,Chelsea,7.1,1.0,0.14084507042253522 108 | 106,165,Ben Godfrey,DF,Everton,14.7,24.0,1.6326530612244898 109 | 107,166,André Gomes,MF,Everton,10.7,44.0,4.112149532710281 110 | 108,167,Joe Gomez,DF,Liverpool,6.6,38.0,5.757575757575758 111 | 109,169,Karlan Grant,"FW,MF",West Brom,12.0,8.0,0.6666666666666666 112 | 110,171,Jack Grealish,"FW,MF",Aston Villa,22.0,150.0,6.818181818181818 113 | 111,172,Mason Greenwood,FW,Manchester Utd,11.1,24.0,2.1621621621621623 114 | 112,173,Pascal Groß,MF,Brighton,14.0,61.0,4.357142857142857 115 | 113,176,İlkay Gündoğan,MF,Manchester City,15.3,91.0,5.947712418300653 116 | 114,178,Sébastien Haller,FW,West Ham,10.4,19.0,1.8269230769230769 117 | 115,180,Jack Harrison,MF,Leeds United,20.0,70.0,3.5 118 | 116,182,Kai Havertz,"MF,FW",Chelsea,10.9,32.0,2.935779816513761 119 | 117,183,Isaac Hayden,"MF,DF",Newcastle Utd,17.1,22.0,1.286549707602339 120 | 118,187,Jordan Henderson,"MF,DF",Liverpool,18.6,140.0,7.526881720430107 121 | 119,188,Jeff Hendrick,MF,Newcastle Utd,14.5,34.0,2.3448275862068964 122 | 120,190,Son Heung-min,FW,Tottenham,21.9,40.0,1.8264840182648403 123 | 121,192,Rob Holding,DF,Arsenal,19.5,74.0,3.7948717948717947 124 | 122,193,Mason Holgate,DF,Everton,11.8,33.0,2.796610169491525 125 | 123,195,Callum Hudson-Odoi,"FW,DF",Chelsea,8.3,36.0,4.337349397590361 126 | 124,197,Pierre Højbjerg,MF,Tottenham,23.0,118.0,5.130434782608695 127 | 125,200,Danny Ings,FW,Southampton,16.3,31.0,1.901840490797546 128 | 126,201,Branislav Ivanović,DF,West Brom,8.2,10.0,1.2195121951219514 129 | 127,202,Alex Iwobi,"FW,DF",Everton,11.6,49.0,4.224137931034483 130 | 128,206,Reece James,DF,Chelsea,15.4,75.0,4.87012987012987 131 | 129,208,Gabriel Jesus,FW,Manchester City,12.0,12.0,1.0 132 | 130,209,Raúl Jiménez,FW,Wolves,9.1,19.0,2.087912087912088 133 | 131,210,Joelinton,"FW,MF",Newcastle Utd,12.5,13.0,1.04 134 | 132,213,Curtis Jones,MF,Liverpool,9.9,56.0,5.656565656565657 135 | 133,214,Jorginho,MF,Chelsea,12.8,62.0,4.84375 136 | 134,217,James Justin,DF,Leicester City,23.0,92.0,4.0 137 | 135,220,Harry Kane,FW,Tottenham,20.4,87.0,4.264705882352941 138 | 136,221,N'Golo Kanté,MF,Chelsea,17.0,70.0,4.117647058823529 139 | 137,223,Michael Keane,DF,Everton,19.2,57.0,2.96875 140 | 138,229,Max Kilman,DF,Wolves,12.5,35.0,2.8 141 | 139,231,Mateusz Klich,MF,Leeds United,20.0,118.0,5.9 142 | 140,232,Robin Koch,DF,Leeds United,10.1,38.0,3.7623762376237626 143 | 141,234,Ezri Konsa,DF,Aston Villa,19.5,14.0,0.717948717948718 144 | 142,235,Cheikhou Kouyaté,DF,Crystal Palace,20.7,22.0,1.0628019323671498 145 | 143,236,Mateo Kovačić,MF,Chelsea,14.1,105.0,7.446808510638298 146 | 144,239,Alexandre Lacazette,FW,Arsenal,14.6,29.0,1.9863013698630136 147 | 145,240,Adam Lallana,"MF,FW",Brighton,9.4,30.0,3.1914893617021276 148 | 146,242,Tariq Lamptey,DF,Brighton,9.8,27.0,2.7551020408163263 149 | 147,244,Aymeric Laporte,DF,Manchester City,7.4,31.0,4.189189189189189 150 | 148,245,Jamaal Lascelles,DF,Newcastle Utd,12.1,23.0,1.9008264462809918 151 | 149,247,Mario Lemina,MF,Fulham,8.6,30.0,3.488372093023256 152 | 150,249,Jamal Lewis,DF,Newcastle Utd,18.3,28.0,1.530054644808743 153 | 151,250,Victor Lindelöf,DF,Manchester Utd,17.7,61.0,3.446327683615819 154 | 152,252,Jake Livermore,MF,West Brom,13.6,24.0,1.7647058823529411 155 | 153,256,Ruben Loftus-Cheek,"FW,MF",Fulham,13.5,43.0,3.185185185185185 156 | 154,261,Sean Longstaff,MF,Newcastle Utd,9.2,30.0,3.2608695652173916 157 | 155,262,Ademola Lookman,FW,Fulham,18.4,66.0,3.586956521739131 158 | 156,264,Matthew Lowton,DF,Burnley,19.0,64.0,3.3684210526315788 159 | 157,265,David Luiz,DF,Arsenal,10.8,41.0,3.796296296296296 160 | 158,266,Douglas Luiz,MF,Aston Villa,19.4,66.0,3.4020618556701034 161 | 159,267,John Lundstram,MF,Sheffield Utd,15.5,53.0,3.4193548387096775 162 | 160,268,Alexis Mac Allister,"MF,FW",Brighton,7.0,22.0,3.142857142857143 163 | 161,269,James Maddison,"MF,FW",Leicester City,17.4,71.0,4.080459770114943 164 | 162,270,Harry Maguire,DF,Manchester Utd,24.0,70.0,2.9166666666666665 165 | 163,271,Riyad Mahrez,FW,Manchester City,12.4,50.0,4.032258064516129 166 | 164,275,Sadio Mané,FW,Liverpool,19.8,67.0,3.3838383838383836 167 | 165,276,Javier Manquillo,DF,Newcastle Utd,8.0,17.0,2.125 168 | 166,277,Fernando Marçal,DF,Wolves,6.6,24.0,3.6363636363636367 169 | 167,278,Solly March,DF,Brighton,18.6,77.0,4.139784946236559 170 | 168,280,Anthony Martial,FW,Manchester Utd,14.6,39.0,2.671232876712329 171 | 169,283,Arthur Masuaku,DF,West Ham,9.4,32.0,3.404255319148936 172 | 170,286,Nemanja Matić,MF,Manchester Utd,8.1,51.0,6.296296296296297 173 | 171,287,Joël Matip,DF,Liverpool,7.7,15.0,1.948051948051948 174 | 172,288,Neal Maupay,"FW,MF",Brighton,17.9,29.0,1.6201117318435756 175 | 173,289,James McArthur,MF,Crystal Palace,16.3,58.0,3.558282208588957 176 | 174,290,Oliver McBurnie,FW,Sheffield Utd,11.1,34.0,3.0630630630630633 177 | 175,293,John McGinn,MF,Aston Villa,21.0,96.0,4.571428571428571 178 | 176,294,David McGoldrick,"FW,MF",Sheffield Utd,15.8,34.0,2.151898734177215 179 | 177,295,Dwight McNeil,MF,Burnley,19.7,37.0,1.8781725888324874 180 | 178,296,Scott McTominay,MF,Manchester Utd,14.7,65.0,4.421768707482993 181 | 179,297,Ben Mee,DF,Burnley,16.9,28.0,1.656804733727811 182 | 180,300,Nampalys Mendy,MF,Leicester City,14.2,46.0,3.23943661971831 183 | 181,302,Luka Milivojević,MF,Crystal Palace,15.6,71.0,4.551282051282051 184 | 182,303,James Milner,"MF,DF",Liverpool,6.9,52.0,7.536231884057971 185 | 183,304,Yerry Mina,DF,Everton,18.0,41.0,2.2777777777777777 186 | 184,307,Tyrone Mings,DF,Aston Villa,20.5,58.0,2.8292682926829267 187 | 185,308,Tyrick Mitchell,DF,Crystal Palace,12.0,43.0,3.5833333333333335 188 | 186,309,Aleksandar Mitrović,FW,Fulham,11.2,15.0,1.3392857142857144 189 | 187,312,Mason Mount,"MF,FW",Chelsea,20.7,116.0,5.603864734299517 190 | 188,313,Lucas Moura,"FW,MF",Tottenham,7.3,20.0,2.73972602739726 191 | 189,315,João Moutinho,MF,Wolves,17.6,74.0,4.204545454545454 192 | 190,317,Jacob Murphy,"DF,MF",Newcastle Utd,8.2,20.0,2.439024390243903 193 | 191,320,Wilfred Ndidi,"MF,DF",Leicester City,10.6,20.0,1.8867924528301887 194 | 192,321,Tanguy Ndombele,MF,Tottenham,15.1,60.0,3.9735099337748347 195 | 193,323,Pedro Neto,"FW,MF",Wolves,22.0,34.0,1.5454545454545454 196 | 194,324,Rúben Neves,MF,Wolves,18.3,85.0,4.644808743169398 197 | 195,329,Oliver Norwood,MF,Sheffield Utd,12.1,55.0,4.545454545454546 198 | 196,331,Dara O'Shea,DF,West Brom,15.4,37.0,2.4025974025974026 199 | 197,334,Angelo Ogbonna,DF,West Ham,22.7,21.0,0.9251101321585904 200 | 198,338,Ben Osborn,"MF,DF",Sheffield Utd,9.5,36.0,3.789473684210526 201 | 199,342,Thomas Partey,MF,Arsenal,7.5,49.0,6.533333333333333 202 | 200,346,Nicolas Pépé,"FW,MF",Arsenal,9.0,17.0,1.8888888888888888 203 | 201,347,Matheus Pereira,"MF,FW",West Brom,16.3,55.0,3.374233128834356 204 | 202,349,Ayoze Pérez,"FW,MF",Leicester City,9.8,35.0,3.571428571428571 205 | 203,350,Kalvin Phillips,MF,Leeds United,17.5,75.0,4.285714285714286 206 | 204,351,Matt Phillips,"MF,DF",West Brom,8.7,18.0,2.0689655172413794 207 | 205,354,Erik Pieters,"DF,MF",Burnley,11.4,23.0,2.017543859649123 208 | 206,355,Daniel Podence,"FW,MF",Wolves,14.6,55.0,3.767123287671233 209 | 207,356,Paul Pogba,"MF,FW",Manchester Utd,15.0,78.0,5.2 210 | 208,358,Dennis Praet,"MF,FW",Leicester City,7.3,18.0,2.4657534246575343 211 | 209,360,Christian Pulisic,"FW,MF",Chelsea,10.7,39.0,3.6448598130841123 212 | 210,365,Marcus Rashford,FW,Manchester Utd,21.6,58.0,2.685185185185185 213 | 211,367,Nathan Redmond,"MF,FW",Southampton,8.0,37.0,4.625 214 | 212,368,Harrison Reed,MF,Fulham,14.9,56.0,3.7583892617449663 215 | 213,369,Sergio Reguilón,DF,Tottenham,11.8,36.0,3.0508474576271185 216 | 214,370,Bobby Reid,"DF,FW",Fulham,16.2,42.0,2.5925925925925926 217 | 215,371,Declan Rice,MF,West Ham,24.0,76.0,3.1666666666666665 218 | 216,372,Richarlison,"FW,MF",Everton,16.1,20.0,1.2422360248447204 219 | 217,373,Jaïro Riedewald,MF,Crystal Palace,10.6,31.0,2.9245283018867925 220 | 218,376,Andrew Robertson,DF,Liverpool,23.9,178.0,7.447698744769875 221 | 219,377,Antonee Robinson,DF,Fulham,16.3,60.0,3.680981595092024 222 | 220,378,Callum Robinson,"FW,MF",West Brom,13.2,9.0,0.6818181818181819 223 | 221,379,Jack Robinson,DF,Sheffield Utd,6.7,17.0,2.5373134328358207 224 | 222,383,Rodri,MF,Manchester City,20.1,110.0,5.4726368159203975 225 | 223,384,Rodrigo,MF,Leeds United,11.0,46.0,4.181818181818182 226 | 224,385,James Rodríguez,"FW,MF",Everton,14.0,101.0,7.214285714285714 227 | 225,386,Jay Rodriguez,"FW,MF",Burnley,9.5,14.0,1.4736842105263157 228 | 226,387,Oriol Romeu,MF,Southampton,17.5,75.0,4.285714285714286 229 | 227,388,Antonio Rüdiger,DF,Chelsea,9.0,20.0,2.2222222222222223 230 | 228,391,Allan Saint-Maximin,"FW,MF",Newcastle Utd,9.1,22.0,2.417582417582418 231 | 229,392,Romain Saïss,DF,Wolves,14.7,63.0,4.285714285714286 232 | 230,393,Bukayo Saka,"FW,DF",Arsenal,19.7,48.0,2.436548223350254 233 | 231,395,Mohamed Salah,FW,Liverpool,21.4,85.0,3.97196261682243 234 | 232,397,Davinson Sánchez,DF,Tottenham,8.5,18.0,2.1176470588235294 235 | 233,400,Romaine Sawyers,MF,West Brom,16.5,52.0,3.1515151515151514 236 | 234,402,Fabian Schär,DF,Newcastle Utd,13.4,37.0,2.761194029850746 237 | 235,403,Jeffrey Schlupp,MF,Crystal Palace,10.8,23.0,2.1296296296296293 238 | 236,405,Nélson Semedo,DF,Wolves,20.7,60.0,2.898550724637681 239 | 237,409,Luke Shaw,DF,Manchester Utd,17.5,100.0,5.714285714285714 240 | 238,410,Jonjo Shelvey,MF,Newcastle Utd,15.1,65.0,4.304635761589404 241 | 239,411,Gylfi Sigurðsson,"MF,FW",Everton,13.3,28.0,2.1052631578947367 242 | 240,412,Bernardo Silva,"MF,FW",Manchester City,14.5,46.0,3.1724137931034484 243 | 241,413,Fábio Silva,FW,Wolves,8.2,7.0,0.853658536585366 244 | 242,414,Thiago Silva,DF,Chelsea,16.2,66.0,4.074074074074074 245 | 243,415,Moussa Sissoko,MF,Tottenham,15.3,30.0,1.9607843137254901 246 | 244,418,Emile Smith-Rowe,MF,Arsenal,8.8,24.0,2.727272727272727 247 | 245,422,Tomáš Souček,MF,West Ham,24.0,66.0,2.75 248 | 246,423,Çağlar Söyüncü,DF,Leicester City,8.2,25.0,3.048780487804878 249 | 247,426,Jack Stephens,DF,Southampton,11.4,38.0,3.333333333333333 250 | 248,427,Raheem Sterling,FW,Manchester City,19.0,38.0,2.0 251 | 249,428,Enda Stevens,DF,Sheffield Utd,16.0,61.0,3.8125 252 | 250,429,John Stones,DF,Manchester City,14.0,47.0,3.357142857142857 253 | 251,430,Pascal Struijk,"DF,MF",Leeds United,12.2,29.0,2.377049180327869 254 | 252,432,Matt Targett,DF,Aston Villa,21.8,134.0,6.146788990825688 255 | 253,433,James Tarkowski,DF,Burnley,21.0,32.0,1.5238095238095237 256 | 254,435,Charlie Taylor,DF,Burnley,14.6,34.0,2.328767123287671 257 | 255,440,Kenny Tete,DF,Fulham,7.6,28.0,3.68421052631579 258 | 256,442,Youri Tielemans,MF,Leicester City,23.3,131.0,5.622317596566523 259 | 257,443,Kieran Tierney,DF,Arsenal,16.9,76.0,4.497041420118344 260 | 258,446,Ferrán Torres,FW,Manchester City,8.2,21.0,2.5609756097560976 261 | 259,448,Andros Townsend,MF,Crystal Palace,16.3,49.0,3.0061349693251533 262 | 260,449,Conor Townsend,DF,West Brom,10.8,65.0,6.018518518518518 263 | 261,450,Adama Traoré,"FW,DF",Wolves,16.8,35.0,2.083333333333333 264 | 262,451,Bertrand Traoré,FW,Aston Villa,12.3,30.0,2.4390243902439024 265 | 263,452,Trézéguet,FW,Aston Villa,9.0,21.0,2.3333333333333335 266 | 264,453,Leandro Trossard,"FW,MF",Brighton,17.3,67.0,3.8728323699421963 267 | 265,458,Jamie Vardy,FW,Leicester City,17.7,14.0,0.7909604519774012 268 | 266,459,Joël Veltman,DF,Brighton,15.3,73.0,4.771241830065359 269 | 267,460,Jannik Vestergaard,DF,Southampton,14.5,36.0,2.4827586206896552 270 | 268,466,Theo Walcott,"MF,FW",Southampton,13.7,20.0,1.4598540145985401 271 | 269,468,Kyle Walker,DF,Manchester City,13.3,62.0,4.661654135338345 272 | 270,469,Kyle Walker-Peters,DF,Southampton,18.8,55.0,2.9255319148936167 273 | 271,470,Aaron Wan-Bissaka,DF,Manchester Utd,22.0,82.0,3.727272727272727 274 | 272,471,Joel Ward,DF,Crystal Palace,11.1,31.0,2.7927927927927927 275 | 273,472,James Ward-Prowse,MF,Southampton,23.0,101.0,4.391304347826087 276 | 274,473,Ollie Watkins,FW,Aston Villa,22.0,21.0,0.9545454545454546 277 | 275,475,Adam Webster,DF,Brighton,21.8,86.0,3.944954128440367 278 | 276,476,Danny Welbeck,FW,Brighton,7.3,9.0,1.2328767123287672 279 | 277,477,Timo Werner,FW,Chelsea,19.3,45.0,2.33160621761658 280 | 278,478,Ashley Westwood,MF,Burnley,22.9,116.0,5.065502183406114 281 | 279,479,Ben White,"DF,MF",Brighton,22.5,68.0,3.022222222222222 282 | 280,480,Georginio Wijnaldum,MF,Liverpool,21.7,65.0,2.9953917050691246 283 | 281,484,Willian,"FW,MF",Arsenal,11.4,33.0,2.8947368421052633 284 | 282,487,Callum Wilson,FW,Newcastle Utd,20.1,19.0,0.9452736318407959 285 | 283,489,Chris Wood,FW,Burnley,18.7,18.0,0.9625668449197862 286 | 284,490,Granit Xhaka,MF,Arsenal,18.1,140.0,7.734806629834254 287 | 285,494,Wilfried Zaha,FW,Crystal Palace,18.5,39.0,2.108108108108108 288 | 286,495,Andre-Frank Zambo Anguissa,MF,Fulham,18.8,74.0,3.9361702127659575 289 | 287,497,Oleksandr Zinchenko,DF,Manchester City,8.1,45.0,5.555555555555555 290 | 288,498,Hakim Ziyech,"FW,MF",Chelsea,7.0,41.0,5.857142857142857 291 | 289,499,Kurt Zouma,DF,Chelsea,15.0,46.0,3.066666666666667 292 | -------------------------------------------------------------------------------- /Progressive Passing Plot/Progressive_Passing_Fullbacks.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 27, 6 | "id": "accomplished-madrid", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import pandas as pd\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "import matplotlib as mpl\n", 13 | "import seaborn as sns" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "id": "virgin-royalty", 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "#import data\n", 24 | "data = pd.read_csv(\"epl.csv\")" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 3, 30 | "id": "later-senior", 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/html": [ 36 | "
\n", 37 | "\n", 50 | "\n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | "
PlayerLeaguePlayer.1PosSquad90sTotal: CmpTotal: AttTotal: Cmp%Total: TotDist...Body Parts: LeftBody Parts: RightBody Parts: HeadBody Parts: TIBody Parts: OtherOutcomes: CmpOutcomes: OffOutcomes: OutOutcomes: IntOutcomes: Blocks
0Patrick van AanholtPremier-LeaguePatrick van AanholtDFCrystal Palace12.7613.0769.079.710191.0...519.0137.016.089.03.0613.09.014.018.018.0
1Tammy AbrahamPremier-LeagueTammy AbrahamFWChelsea10.8138.0201.068.71925.0...17.0135.016.00.011.0138.00.03.03.012.0
2Che AdamsPremier-LeagueChe AdamsFWSouthampton19.3289.0417.069.34747.0...27.0334.022.00.017.0289.04.08.016.024.0
3Tosin AdarabioyoPremier-LeagueTosin AdarabioyoDFFulham19.0835.0971.086.019751.0...140.0753.051.04.03.0835.01.020.08.08.0
4AdriánPremier-LeagueAdriánGKLiverpool2.043.062.069.41147.0...9.038.00.00.014.043.01.01.00.00.0
5Sergio AgüeroPremier-LeagueSergio AgüeroFWManchester City1.633.042.078.6386.0...5.033.02.00.01.033.00.00.00.04.0
6Ola AinaPremier-LeagueOla AinaDFFulham18.7851.01091.078.016580.0...135.0729.067.0148.04.0851.00.014.023.025.0
7Rayan Aït NouriPremier-LeagueRayan Aït NouriDFWolves7.7299.0357.083.84712.0...263.030.011.049.00.0299.00.01.03.015.0
8Semi AjayiPremier-LeagueSemi AjayiDFWest Brom23.0568.0782.072.612345.0...41.0604.057.038.02.0568.04.024.027.011.0
9Nathan AkéPremier-LeagueNathan AkéDFManchester City5.2429.0461.093.17845.0...353.061.016.010.02.0429.00.02.04.04.0
\n", 320 | "

10 rows × 150 columns

\n", 321 | "
" 322 | ], 323 | "text/plain": [ 324 | " Player League Player.1 Pos \\\n", 325 | "0 Patrick van Aanholt Premier-League Patrick van Aanholt DF \n", 326 | "1 Tammy Abraham Premier-League Tammy Abraham FW \n", 327 | "2 Che Adams Premier-League Che Adams FW \n", 328 | "3 Tosin Adarabioyo Premier-League Tosin Adarabioyo DF \n", 329 | "4 Adrián Premier-League Adrián GK \n", 330 | "5 Sergio Agüero Premier-League Sergio Agüero FW \n", 331 | "6 Ola Aina Premier-League Ola Aina DF \n", 332 | "7 Rayan Aït Nouri Premier-League Rayan Aït Nouri DF \n", 333 | "8 Semi Ajayi Premier-League Semi Ajayi DF \n", 334 | "9 Nathan Aké Premier-League Nathan Aké DF \n", 335 | "\n", 336 | " Squad 90s Total: Cmp Total: Att Total: Cmp% Total: TotDist \\\n", 337 | "0 Crystal Palace 12.7 613.0 769.0 79.7 10191.0 \n", 338 | "1 Chelsea 10.8 138.0 201.0 68.7 1925.0 \n", 339 | "2 Southampton 19.3 289.0 417.0 69.3 4747.0 \n", 340 | "3 Fulham 19.0 835.0 971.0 86.0 19751.0 \n", 341 | "4 Liverpool 2.0 43.0 62.0 69.4 1147.0 \n", 342 | "5 Manchester City 1.6 33.0 42.0 78.6 386.0 \n", 343 | "6 Fulham 18.7 851.0 1091.0 78.0 16580.0 \n", 344 | "7 Wolves 7.7 299.0 357.0 83.8 4712.0 \n", 345 | "8 West Brom 23.0 568.0 782.0 72.6 12345.0 \n", 346 | "9 Manchester City 5.2 429.0 461.0 93.1 7845.0 \n", 347 | "\n", 348 | " ... Body Parts: Left Body Parts: Right Body Parts: Head Body Parts: TI \\\n", 349 | "0 ... 519.0 137.0 16.0 89.0 \n", 350 | "1 ... 17.0 135.0 16.0 0.0 \n", 351 | "2 ... 27.0 334.0 22.0 0.0 \n", 352 | "3 ... 140.0 753.0 51.0 4.0 \n", 353 | "4 ... 9.0 38.0 0.0 0.0 \n", 354 | "5 ... 5.0 33.0 2.0 0.0 \n", 355 | "6 ... 135.0 729.0 67.0 148.0 \n", 356 | "7 ... 263.0 30.0 11.0 49.0 \n", 357 | "8 ... 41.0 604.0 57.0 38.0 \n", 358 | "9 ... 353.0 61.0 16.0 10.0 \n", 359 | "\n", 360 | " Body Parts: Other Outcomes: Cmp Outcomes: Off Outcomes: Out \\\n", 361 | "0 3.0 613.0 9.0 14.0 \n", 362 | "1 11.0 138.0 0.0 3.0 \n", 363 | "2 17.0 289.0 4.0 8.0 \n", 364 | "3 3.0 835.0 1.0 20.0 \n", 365 | "4 14.0 43.0 1.0 1.0 \n", 366 | "5 1.0 33.0 0.0 0.0 \n", 367 | "6 4.0 851.0 0.0 14.0 \n", 368 | "7 0.0 299.0 0.0 1.0 \n", 369 | "8 2.0 568.0 4.0 24.0 \n", 370 | "9 2.0 429.0 0.0 2.0 \n", 371 | "\n", 372 | " Outcomes: Int Outcomes: Blocks \n", 373 | "0 18.0 18.0 \n", 374 | "1 3.0 12.0 \n", 375 | "2 16.0 24.0 \n", 376 | "3 8.0 8.0 \n", 377 | "4 0.0 0.0 \n", 378 | "5 0.0 4.0 \n", 379 | "6 23.0 25.0 \n", 380 | "7 3.0 15.0 \n", 381 | "8 27.0 11.0 \n", 382 | "9 4.0 4.0 \n", 383 | "\n", 384 | "[10 rows x 150 columns]" 385 | ] 386 | }, 387 | "execution_count": 3, 388 | "metadata": {}, 389 | "output_type": "execute_result" 390 | } 391 | ], 392 | "source": [ 393 | "data.head(10)" 394 | ] 395 | }, 396 | { 397 | "cell_type": "code", 398 | "execution_count": 4, 399 | "id": "interim-society", 400 | "metadata": {}, 401 | "outputs": [ 402 | { 403 | "name": "stdout", 404 | "output_type": "stream", 405 | "text": [ 406 | "\n", 407 | "RangeIndex: 501 entries, 0 to 500\n", 408 | "Columns: 150 entries, Player to Outcomes: Blocks\n", 409 | "dtypes: float64(145), object(5)\n", 410 | "memory usage: 587.2+ KB\n" 411 | ] 412 | } 413 | ], 414 | "source": [ 415 | "data.info()" 416 | ] 417 | }, 418 | { 419 | "cell_type": "code", 420 | "execution_count": 6, 421 | "id": "floppy-naples", 422 | "metadata": {}, 423 | "outputs": [], 424 | "source": [ 425 | "data = data[['Player', 'Pos', 'Squad', '90s', 'Prog']]" 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "execution_count": 7, 431 | "id": "stuffed-swiss", 432 | "metadata": {}, 433 | "outputs": [ 434 | { 435 | "data": { 436 | "text/html": [ 437 | "
\n", 438 | "\n", 451 | "\n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | "
PlayerPosSquad90sProg
0Patrick van AanholtDFCrystal Palace12.779.0
1Tammy AbrahamFWChelsea10.811.0
2Che AdamsFWSouthampton19.338.0
3Tosin AdarabioyoDFFulham19.039.0
4AdriánGKLiverpool2.00.0
5Sergio AgüeroFWManchester City1.61.0
6Ola AinaDFFulham18.773.0
7Rayan Aït NouriDFWolves7.718.0
8Semi AjayiDFWest Brom23.049.0
9Nathan AkéDFManchester City5.223.0
\n", 545 | "
" 546 | ], 547 | "text/plain": [ 548 | " Player Pos Squad 90s Prog\n", 549 | "0 Patrick van Aanholt DF Crystal Palace 12.7 79.0\n", 550 | "1 Tammy Abraham FW Chelsea 10.8 11.0\n", 551 | "2 Che Adams FW Southampton 19.3 38.0\n", 552 | "3 Tosin Adarabioyo DF Fulham 19.0 39.0\n", 553 | "4 Adrián GK Liverpool 2.0 0.0\n", 554 | "5 Sergio Agüero FW Manchester City 1.6 1.0\n", 555 | "6 Ola Aina DF Fulham 18.7 73.0\n", 556 | "7 Rayan Aït Nouri DF Wolves 7.7 18.0\n", 557 | "8 Semi Ajayi DF West Brom 23.0 49.0\n", 558 | "9 Nathan Aké DF Manchester City 5.2 23.0" 559 | ] 560 | }, 561 | "execution_count": 7, 562 | "metadata": {}, 563 | "output_type": "execute_result" 564 | } 565 | ], 566 | "source": [ 567 | "data.head(10)" 568 | ] 569 | }, 570 | { 571 | "cell_type": "code", 572 | "execution_count": 8, 573 | "id": "oriented-applicant", 574 | "metadata": {}, 575 | "outputs": [ 576 | { 577 | "name": "stdout", 578 | "output_type": "stream", 579 | "text": [ 580 | "\n", 581 | "RangeIndex: 501 entries, 0 to 500\n", 582 | "Data columns (total 5 columns):\n", 583 | " # Column Non-Null Count Dtype \n", 584 | "--- ------ -------------- ----- \n", 585 | " 0 Player 501 non-null object \n", 586 | " 1 Pos 501 non-null object \n", 587 | " 2 Squad 501 non-null object \n", 588 | " 3 90s 501 non-null float64\n", 589 | " 4 Prog 501 non-null float64\n", 590 | "dtypes: float64(2), object(3)\n", 591 | "memory usage: 19.7+ KB\n" 592 | ] 593 | } 594 | ], 595 | "source": [ 596 | "data.info()" 597 | ] 598 | }, 599 | { 600 | "cell_type": "code", 601 | "execution_count": 9, 602 | "id": "incorrect-reasoning", 603 | "metadata": {}, 604 | "outputs": [ 605 | { 606 | "name": "stderr", 607 | "output_type": "stream", 608 | "text": [ 609 | ":1: SettingWithCopyWarning: \n", 610 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 611 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 612 | "\n", 613 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 614 | " data['ProgPer90'] = data['Prog']/data['90s']\n" 615 | ] 616 | } 617 | ], 618 | "source": [ 619 | "data['ProgPer90'] = data['Prog']/data['90s']" 620 | ] 621 | }, 622 | { 623 | "cell_type": "code", 624 | "execution_count": 10, 625 | "id": "stupid-interest", 626 | "metadata": {}, 627 | "outputs": [ 628 | { 629 | "data": { 630 | "text/html": [ 631 | "
\n", 632 | "\n", 645 | "\n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | "
PlayerPosSquad90sProgProgPer90
0Patrick van AanholtDFCrystal Palace12.779.06.220472
1Tammy AbrahamFWChelsea10.811.01.018519
2Che AdamsFWSouthampton19.338.01.968912
3Tosin AdarabioyoDFFulham19.039.02.052632
4AdriánGKLiverpool2.00.00.000000
5Sergio AgüeroFWManchester City1.61.00.625000
6Ola AinaDFFulham18.773.03.903743
7Rayan Aït NouriDFWolves7.718.02.337662
8Semi AjayiDFWest Brom23.049.02.130435
9Nathan AkéDFManchester City5.223.04.423077
\n", 750 | "
" 751 | ], 752 | "text/plain": [ 753 | " Player Pos Squad 90s Prog ProgPer90\n", 754 | "0 Patrick van Aanholt DF Crystal Palace 12.7 79.0 6.220472\n", 755 | "1 Tammy Abraham FW Chelsea 10.8 11.0 1.018519\n", 756 | "2 Che Adams FW Southampton 19.3 38.0 1.968912\n", 757 | "3 Tosin Adarabioyo DF Fulham 19.0 39.0 2.052632\n", 758 | "4 Adrián GK Liverpool 2.0 0.0 0.000000\n", 759 | "5 Sergio Agüero FW Manchester City 1.6 1.0 0.625000\n", 760 | "6 Ola Aina DF Fulham 18.7 73.0 3.903743\n", 761 | "7 Rayan Aït Nouri DF Wolves 7.7 18.0 2.337662\n", 762 | "8 Semi Ajayi DF West Brom 23.0 49.0 2.130435\n", 763 | "9 Nathan Aké DF Manchester City 5.2 23.0 4.423077" 764 | ] 765 | }, 766 | "execution_count": 10, 767 | "metadata": {}, 768 | "output_type": "execute_result" 769 | } 770 | ], 771 | "source": [ 772 | "data.head(10)" 773 | ] 774 | }, 775 | { 776 | "cell_type": "code", 777 | "execution_count": 13, 778 | "id": "fatal-princeton", 779 | "metadata": {}, 780 | "outputs": [], 781 | "source": [ 782 | "#Data Manipulation to eliminate players (Remove who has played less than 6.5 of \"90 minutes\" football)\n", 783 | "data = data[data['90s']>=6.5]" 784 | ] 785 | }, 786 | { 787 | "cell_type": "code", 788 | "execution_count": 14, 789 | "id": "crude-spouse", 790 | "metadata": {}, 791 | "outputs": [ 792 | { 793 | "data": { 794 | "text/html": [ 795 | "
\n", 796 | "\n", 809 | "\n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | "
PlayerPosSquad90sProgProgPer90
0Patrick van AanholtDFCrystal Palace12.779.06.220472
1Tammy AbrahamFWChelsea10.811.01.018519
2Che AdamsFWSouthampton19.338.01.968912
3Tosin AdarabioyoDFFulham19.039.02.052632
6Ola AinaDFFulham18.773.03.903743
7Rayan Aït NouriDFWolves7.718.02.337662
8Semi AjayiDFWest Brom23.049.02.130435
10Marc AlbrightonFW,DFLeicester City12.452.04.193548
11Thiago AlcántaraMFLiverpool9.187.09.560440
12Toby AlderweireldDFTottenham13.931.02.230216
\n", 914 | "
" 915 | ], 916 | "text/plain": [ 917 | " Player Pos Squad 90s Prog ProgPer90\n", 918 | "0 Patrick van Aanholt DF Crystal Palace 12.7 79.0 6.220472\n", 919 | "1 Tammy Abraham FW Chelsea 10.8 11.0 1.018519\n", 920 | "2 Che Adams FW Southampton 19.3 38.0 1.968912\n", 921 | "3 Tosin Adarabioyo DF Fulham 19.0 39.0 2.052632\n", 922 | "6 Ola Aina DF Fulham 18.7 73.0 3.903743\n", 923 | "7 Rayan Aït Nouri DF Wolves 7.7 18.0 2.337662\n", 924 | "8 Semi Ajayi DF West Brom 23.0 49.0 2.130435\n", 925 | "10 Marc Albrighton FW,DF Leicester City 12.4 52.0 4.193548\n", 926 | "11 Thiago Alcántara MF Liverpool 9.1 87.0 9.560440\n", 927 | "12 Toby Alderweireld DF Tottenham 13.9 31.0 2.230216" 928 | ] 929 | }, 930 | "execution_count": 14, 931 | "metadata": {}, 932 | "output_type": "execute_result" 933 | } 934 | ], 935 | "source": [ 936 | "data.head(10)" 937 | ] 938 | }, 939 | { 940 | "cell_type": "code", 941 | "execution_count": 17, 942 | "id": "sticky-welcome", 943 | "metadata": {}, 944 | "outputs": [], 945 | "source": [ 946 | "#drop GK\n", 947 | "data = data[data['Pos'] != 'GK'].reset_index()" 948 | ] 949 | }, 950 | { 951 | "cell_type": "code", 952 | "execution_count": 37, 953 | "id": "contained-toner", 954 | "metadata": {}, 955 | "outputs": [ 956 | { 957 | "data": { 958 | "text/html": [ 959 | "
\n", 960 | "\n", 973 | "\n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | " \n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \n", 1059 | " \n", 1060 | " \n", 1061 | " \n", 1062 | " \n", 1063 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | " \n", 1222 | " \n", 1223 | " \n", 1224 | " \n", 1225 | " \n", 1226 | " \n", 1227 | " \n", 1228 | " \n", 1229 | " \n", 1230 | " \n", 1231 | " \n", 1232 | " \n", 1233 | " \n", 1234 | " \n", 1235 | " \n", 1236 | " \n", 1237 | " \n", 1238 | " \n", 1239 | " \n", 1240 | " \n", 1241 | " \n", 1242 | " \n", 1243 | " \n", 1244 | " \n", 1245 | " \n", 1246 | " \n", 1247 | " \n", 1248 | " \n", 1249 | " \n", 1250 | " \n", 1251 | " \n", 1252 | " \n", 1253 | " \n", 1254 | " \n", 1255 | " \n", 1256 | " \n", 1257 | " \n", 1258 | " \n", 1259 | " \n", 1260 | " \n", 1261 | " \n", 1262 | " \n", 1263 | " \n", 1264 | " \n", 1265 | " \n", 1266 | " \n", 1267 | " \n", 1268 | " \n", 1269 | " \n", 1270 | " \n", 1271 | " \n", 1272 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | " \n", 1535 | " \n", 1536 | " \n", 1537 | " \n", 1538 | " \n", 1539 | " \n", 1540 | " \n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | " \n", 1563 | " \n", 1564 | " \n", 1565 | " \n", 1566 | " \n", 1567 | " \n", 1568 | " \n", 1569 | " \n", 1570 | " \n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | "
indexPlayerPosSquad90sProgProgPer90
00Patrick van AanholtDFCrystal Palace12.779.06.220472
11Tammy AbrahamFWChelsea10.811.01.018519
22Che AdamsFWSouthampton19.338.01.968912
33Tosin AdarabioyoDFFulham19.039.02.052632
46Ola AinaDFFulham18.773.03.903743
57Rayan Aït NouriDFWolves7.718.02.337662
68Semi AjayiDFWest Brom23.049.02.130435
710Marc AlbrightonFW,DFLeicester City12.452.04.193548
811Thiago AlcántaraMFLiverpool9.187.09.560440
912Toby AlderweireldDFTottenham13.931.02.230216
1014Trent Alexander-ArnoldDFLiverpool20.5178.08.682927
1115Ezgjan AlioskiDF,MFLeeds United15.663.04.038462
1217AllanMFEverton11.426.02.280702
1319Miguel AlmirónMF,FWNewcastle Utd16.240.02.469136
1421Steven AlzateMF,DFBrighton7.524.03.200000
1523Ethan AmpaduDF,MFSheffield Utd15.858.03.670886
1624Joachim AndersenDFFulham16.754.03.233533
1727Michail AntonioFWWest Ham11.910.00.840336
1829Stuart ArmstrongMFSouthampton17.256.03.255814
1931Pierre-Emerick AubameyangFWArsenal18.542.02.270270
2032Serge AurierDFTottenham11.940.03.361345
2134Jordan AyewFW,MFCrystal Palace13.628.02.058824
2235Luke AylingDFLeeds United22.8146.06.403509
2336César AzpilicuetaDFChelsea12.657.04.523810
2438Fabián BalbuenaDFWest Ham12.027.02.250000
2539George BaldockDFSheffield Utd18.538.02.054054
2641Patrick BamfordFWLeeds United21.814.00.642202
2743Ross BarkleyMFAston Villa11.044.04.000000
2845Ashley BarnesFWBurnley13.418.01.343284
2946Harvey BarnesFW,MFLeicester City20.158.02.885572
3047Kyle BartleyDFWest Brom14.814.00.945946
3148Chris BashamDF,MFSheffield Utd22.152.02.352941
3249Michy BatshuayiFWCrystal Palace7.89.01.153846
3350Jan BednarekDFSouthampton21.964.02.922374
3452Héctor BellerínDFArsenal20.274.03.663366
3553Saïd BenrahmaMF,FWWest Ham9.529.03.052632
3655Christian BentekeFWCrystal Palace8.918.02.022472
3756Jóhann Berg GuðmundssonMFBurnley7.921.02.658228
3857Sander BergeMFSheffield Utd11.329.02.566372
3958Steven BergwijnFW,MFTottenham11.314.01.238938
4061Ryan BertrandDFSouthampton20.973.03.492823
4162Yves BissoumaMFBrighton20.677.03.737864
4263Jayden BogleDFSheffield Utd7.817.02.179487
4364Willy BolyDFWolves16.033.02.062500
4465Jarrod BowenFW,MFWest Ham19.630.01.530612
4566Robbie BradyMFBurnley10.929.02.660550
4667Rhian BrewsterFWSheffield Utd8.210.01.219512
4768Josh BrownhillMFBurnley17.526.01.485714
4871Oliver BurkeFWSheffield Utd10.06.00.600000
4972Dan BurnDFBrighton13.446.03.432836
5076Gary CahillDFCrystal Palace9.018.02.000000
5177Tom CairneyMFFulham8.432.03.809524
5278Dominic Calvert-LewinFWEverton19.618.00.918367
5379João CanceloDFManchester City16.9119.07.041420
5482Matty CashDFAston Villa20.242.02.079208
5584Timothy CastagneDFLeicester City12.140.03.305785
5686Ivan CavaleiroFW,MFFulham16.130.01.863354
5787Edinson CavaniFWManchester Utd9.513.01.368421
5888Dani CeballosMFArsenal12.384.06.829268
5989Ben ChilwellDFChelsea16.596.05.818182
\n", 1589 | "
" 1590 | ], 1591 | "text/plain": [ 1592 | " index Player Pos Squad 90s Prog \\\n", 1593 | "0 0 Patrick van Aanholt DF Crystal Palace 12.7 79.0 \n", 1594 | "1 1 Tammy Abraham FW Chelsea 10.8 11.0 \n", 1595 | "2 2 Che Adams FW Southampton 19.3 38.0 \n", 1596 | "3 3 Tosin Adarabioyo DF Fulham 19.0 39.0 \n", 1597 | "4 6 Ola Aina DF Fulham 18.7 73.0 \n", 1598 | "5 7 Rayan Aït Nouri DF Wolves 7.7 18.0 \n", 1599 | "6 8 Semi Ajayi DF West Brom 23.0 49.0 \n", 1600 | "7 10 Marc Albrighton FW,DF Leicester City 12.4 52.0 \n", 1601 | "8 11 Thiago Alcántara MF Liverpool 9.1 87.0 \n", 1602 | "9 12 Toby Alderweireld DF Tottenham 13.9 31.0 \n", 1603 | "10 14 Trent Alexander-Arnold DF Liverpool 20.5 178.0 \n", 1604 | "11 15 Ezgjan Alioski DF,MF Leeds United 15.6 63.0 \n", 1605 | "12 17 Allan MF Everton 11.4 26.0 \n", 1606 | "13 19 Miguel Almirón MF,FW Newcastle Utd 16.2 40.0 \n", 1607 | "14 21 Steven Alzate MF,DF Brighton 7.5 24.0 \n", 1608 | "15 23 Ethan Ampadu DF,MF Sheffield Utd 15.8 58.0 \n", 1609 | "16 24 Joachim Andersen DF Fulham 16.7 54.0 \n", 1610 | "17 27 Michail Antonio FW West Ham 11.9 10.0 \n", 1611 | "18 29 Stuart Armstrong MF Southampton 17.2 56.0 \n", 1612 | "19 31 Pierre-Emerick Aubameyang FW Arsenal 18.5 42.0 \n", 1613 | "20 32 Serge Aurier DF Tottenham 11.9 40.0 \n", 1614 | "21 34 Jordan Ayew FW,MF Crystal Palace 13.6 28.0 \n", 1615 | "22 35 Luke Ayling DF Leeds United 22.8 146.0 \n", 1616 | "23 36 César Azpilicueta DF Chelsea 12.6 57.0 \n", 1617 | "24 38 Fabián Balbuena DF West Ham 12.0 27.0 \n", 1618 | "25 39 George Baldock DF Sheffield Utd 18.5 38.0 \n", 1619 | "26 41 Patrick Bamford FW Leeds United 21.8 14.0 \n", 1620 | "27 43 Ross Barkley MF Aston Villa 11.0 44.0 \n", 1621 | "28 45 Ashley Barnes FW Burnley 13.4 18.0 \n", 1622 | "29 46 Harvey Barnes FW,MF Leicester City 20.1 58.0 \n", 1623 | "30 47 Kyle Bartley DF West Brom 14.8 14.0 \n", 1624 | "31 48 Chris Basham DF,MF Sheffield Utd 22.1 52.0 \n", 1625 | "32 49 Michy Batshuayi FW Crystal Palace 7.8 9.0 \n", 1626 | "33 50 Jan Bednarek DF Southampton 21.9 64.0 \n", 1627 | "34 52 Héctor Bellerín DF Arsenal 20.2 74.0 \n", 1628 | "35 53 Saïd Benrahma MF,FW West Ham 9.5 29.0 \n", 1629 | "36 55 Christian Benteke FW Crystal Palace 8.9 18.0 \n", 1630 | "37 56 Jóhann Berg Guðmundsson MF Burnley 7.9 21.0 \n", 1631 | "38 57 Sander Berge MF Sheffield Utd 11.3 29.0 \n", 1632 | "39 58 Steven Bergwijn FW,MF Tottenham 11.3 14.0 \n", 1633 | "40 61 Ryan Bertrand DF Southampton 20.9 73.0 \n", 1634 | "41 62 Yves Bissouma MF Brighton 20.6 77.0 \n", 1635 | "42 63 Jayden Bogle DF Sheffield Utd 7.8 17.0 \n", 1636 | "43 64 Willy Boly DF Wolves 16.0 33.0 \n", 1637 | "44 65 Jarrod Bowen FW,MF West Ham 19.6 30.0 \n", 1638 | "45 66 Robbie Brady MF Burnley 10.9 29.0 \n", 1639 | "46 67 Rhian Brewster FW Sheffield Utd 8.2 10.0 \n", 1640 | "47 68 Josh Brownhill MF Burnley 17.5 26.0 \n", 1641 | "48 71 Oliver Burke FW Sheffield Utd 10.0 6.0 \n", 1642 | "49 72 Dan Burn DF Brighton 13.4 46.0 \n", 1643 | "50 76 Gary Cahill DF Crystal Palace 9.0 18.0 \n", 1644 | "51 77 Tom Cairney MF Fulham 8.4 32.0 \n", 1645 | "52 78 Dominic Calvert-Lewin FW Everton 19.6 18.0 \n", 1646 | "53 79 João Cancelo DF Manchester City 16.9 119.0 \n", 1647 | "54 82 Matty Cash DF Aston Villa 20.2 42.0 \n", 1648 | "55 84 Timothy Castagne DF Leicester City 12.1 40.0 \n", 1649 | "56 86 Ivan Cavaleiro FW,MF Fulham 16.1 30.0 \n", 1650 | "57 87 Edinson Cavani FW Manchester Utd 9.5 13.0 \n", 1651 | "58 88 Dani Ceballos MF Arsenal 12.3 84.0 \n", 1652 | "59 89 Ben Chilwell DF Chelsea 16.5 96.0 \n", 1653 | "\n", 1654 | " ProgPer90 \n", 1655 | "0 6.220472 \n", 1656 | "1 1.018519 \n", 1657 | "2 1.968912 \n", 1658 | "3 2.052632 \n", 1659 | "4 3.903743 \n", 1660 | "5 2.337662 \n", 1661 | "6 2.130435 \n", 1662 | "7 4.193548 \n", 1663 | "8 9.560440 \n", 1664 | "9 2.230216 \n", 1665 | "10 8.682927 \n", 1666 | "11 4.038462 \n", 1667 | "12 2.280702 \n", 1668 | "13 2.469136 \n", 1669 | "14 3.200000 \n", 1670 | "15 3.670886 \n", 1671 | "16 3.233533 \n", 1672 | "17 0.840336 \n", 1673 | "18 3.255814 \n", 1674 | "19 2.270270 \n", 1675 | "20 3.361345 \n", 1676 | "21 2.058824 \n", 1677 | "22 6.403509 \n", 1678 | "23 4.523810 \n", 1679 | "24 2.250000 \n", 1680 | "25 2.054054 \n", 1681 | "26 0.642202 \n", 1682 | "27 4.000000 \n", 1683 | "28 1.343284 \n", 1684 | "29 2.885572 \n", 1685 | "30 0.945946 \n", 1686 | "31 2.352941 \n", 1687 | "32 1.153846 \n", 1688 | "33 2.922374 \n", 1689 | "34 3.663366 \n", 1690 | "35 3.052632 \n", 1691 | "36 2.022472 \n", 1692 | "37 2.658228 \n", 1693 | "38 2.566372 \n", 1694 | "39 1.238938 \n", 1695 | "40 3.492823 \n", 1696 | "41 3.737864 \n", 1697 | "42 2.179487 \n", 1698 | "43 2.062500 \n", 1699 | "44 1.530612 \n", 1700 | "45 2.660550 \n", 1701 | "46 1.219512 \n", 1702 | "47 1.485714 \n", 1703 | "48 0.600000 \n", 1704 | "49 3.432836 \n", 1705 | "50 2.000000 \n", 1706 | "51 3.809524 \n", 1707 | "52 0.918367 \n", 1708 | "53 7.041420 \n", 1709 | "54 2.079208 \n", 1710 | "55 3.305785 \n", 1711 | "56 1.863354 \n", 1712 | "57 1.368421 \n", 1713 | "58 6.829268 \n", 1714 | "59 5.818182 " 1715 | ] 1716 | }, 1717 | "execution_count": 37, 1718 | "metadata": {}, 1719 | "output_type": "execute_result" 1720 | } 1721 | ], 1722 | "source": [ 1723 | "data.head(60)" 1724 | ] 1725 | }, 1726 | { 1727 | "cell_type": "code", 1728 | "execution_count": 48, 1729 | "id": "defined-arrow", 1730 | "metadata": {}, 1731 | "outputs": [ 1732 | { 1733 | "name": "stdout", 1734 | "output_type": "stream", 1735 | "text": [ 1736 | " index Player Pos Squad 90s Prog ProgPer90\n", 1737 | "53 79 João Cancelo DF Manchester City 16.9 119.0 7.04142\n" 1738 | ] 1739 | } 1740 | ], 1741 | "source": [ 1742 | "i=data[data['Player']== 'João Cancelo']\n", 1743 | "print(i)" 1744 | ] 1745 | }, 1746 | { 1747 | "cell_type": "code", 1748 | "execution_count": 42, 1749 | "id": "interested-color", 1750 | "metadata": {}, 1751 | "outputs": [ 1752 | { 1753 | "name": "stdout", 1754 | "output_type": "stream", 1755 | "text": [ 1756 | " index Player Pos Squad 90s Prog ProgPer90\n", 1757 | "237 409 Luke Shaw DF Manchester Utd 17.5 100.0 5.714286\n" 1758 | ] 1759 | } 1760 | ], 1761 | "source": [ 1762 | "i=data[data['Player']== 'Luke Shaw']\n", 1763 | "print(i)" 1764 | ] 1765 | }, 1766 | { 1767 | "cell_type": "code", 1768 | "execution_count": 44, 1769 | "id": "intense-burner", 1770 | "metadata": {}, 1771 | "outputs": [ 1772 | { 1773 | "name": "stdout", 1774 | "output_type": "stream", 1775 | "text": [ 1776 | " index Player Pos Squad 90s Prog ProgPer90\n", 1777 | "10 14 Trent Alexander-Arnold DF Liverpool 20.5 178.0 8.682927\n" 1778 | ] 1779 | } 1780 | ], 1781 | "source": [ 1782 | "i=data[data['Player']== 'Trent Alexander-Arnold']\n", 1783 | "print(i)" 1784 | ] 1785 | }, 1786 | { 1787 | "cell_type": "code", 1788 | "execution_count": 45, 1789 | "id": "running-spirituality", 1790 | "metadata": {}, 1791 | "outputs": [ 1792 | { 1793 | "name": "stdout", 1794 | "output_type": "stream", 1795 | "text": [ 1796 | " index Player Pos Squad 90s Prog ProgPer90\n", 1797 | "269 468 Kyle Walker DF Manchester City 13.3 62.0 4.661654\n" 1798 | ] 1799 | } 1800 | ], 1801 | "source": [ 1802 | "i=data[data['Player']== 'Kyle Walker']\n", 1803 | "print(i)" 1804 | ] 1805 | }, 1806 | { 1807 | "cell_type": "code", 1808 | "execution_count": 46, 1809 | "id": "hundred-lounge", 1810 | "metadata": {}, 1811 | "outputs": [ 1812 | { 1813 | "name": "stdout", 1814 | "output_type": "stream", 1815 | "text": [ 1816 | " index Player Pos Squad 90s Prog ProgPer90\n", 1817 | "257 443 Kieran Tierney DF Arsenal 16.9 76.0 4.497041\n" 1818 | ] 1819 | } 1820 | ], 1821 | "source": [ 1822 | "i=data[data['Player']== 'Kieran Tierney']\n", 1823 | "print(i)" 1824 | ] 1825 | }, 1826 | { 1827 | "cell_type": "code", 1828 | "execution_count": 47, 1829 | "id": "dominant-bathroom", 1830 | "metadata": {}, 1831 | "outputs": [ 1832 | { 1833 | "name": "stdout", 1834 | "output_type": "stream", 1835 | "text": [ 1836 | " index Player Pos Squad 90s Prog ProgPer90\n", 1837 | "218 376 Andrew Robertson DF Liverpool 23.9 178.0 7.447699\n" 1838 | ] 1839 | } 1840 | ], 1841 | "source": [ 1842 | "i=data[data['Player']== 'Andrew Robertson']\n", 1843 | "print(i)" 1844 | ] 1845 | }, 1846 | { 1847 | "cell_type": "code", 1848 | "execution_count": 51, 1849 | "id": "connected-filter", 1850 | "metadata": {}, 1851 | "outputs": [ 1852 | { 1853 | "name": "stdout", 1854 | "output_type": "stream", 1855 | "text": [ 1856 | " index Player Pos Squad 90s Prog ProgPer90\n", 1857 | "271 470 Aaron Wan-Bissaka DF Manchester Utd 22.0 82.0 3.727273\n" 1858 | ] 1859 | } 1860 | ], 1861 | "source": [ 1862 | "i=data[data['Player']== 'Aaron Wan-Bissaka']\n", 1863 | "print(i)" 1864 | ] 1865 | }, 1866 | { 1867 | "cell_type": "code", 1868 | "execution_count": 52, 1869 | "id": "genuine-breast", 1870 | "metadata": {}, 1871 | "outputs": [ 1872 | { 1873 | "name": "stdout", 1874 | "output_type": "stream", 1875 | "text": [ 1876 | " index Player Pos Squad 90s Prog ProgPer90\n", 1877 | "128 206 Reece James DF Chelsea 15.4 75.0 4.87013\n" 1878 | ] 1879 | } 1880 | ], 1881 | "source": [ 1882 | "i=data[data['Player']== 'Reece James']\n", 1883 | "print(i)" 1884 | ] 1885 | }, 1886 | { 1887 | "cell_type": "code", 1888 | "execution_count": 20, 1889 | "id": "interested-bride", 1890 | "metadata": {}, 1891 | "outputs": [], 1892 | "source": [ 1893 | "#save this dataframe in a csv\n", 1894 | "data.to_csv('analysis.csv')" 1895 | ] 1896 | }, 1897 | { 1898 | "cell_type": "code", 1899 | "execution_count": 21, 1900 | "id": "civil-outline", 1901 | "metadata": {}, 1902 | "outputs": [], 1903 | "source": [ 1904 | "#create plots" 1905 | ] 1906 | }, 1907 | { 1908 | "cell_type": "code", 1909 | "execution_count": 22, 1910 | "id": "thick-paradise", 1911 | "metadata": {}, 1912 | "outputs": [], 1913 | "source": [ 1914 | "#famous import font code to use Andale Mono\n", 1915 | "import matplotlib.font_manager\n", 1916 | "from IPython.core.display import HTML\n", 1917 | "\n", 1918 | "def make_html(fontname):\n", 1919 | " return \"

{font}: {font}

\".format(font=fontname)\n", 1920 | "\n", 1921 | "code = \"\\n\".join([make_html(font) for font in sorted(set([f.name for f in matplotlib.font_manager.fontManager.ttflist]))])" 1922 | ] 1923 | }, 1924 | { 1925 | "cell_type": "code", 1926 | "execution_count": 24, 1927 | "id": "familiar-vintage", 1928 | "metadata": {}, 1929 | "outputs": [], 1930 | "source": [ 1931 | "import highlight_text" 1932 | ] 1933 | }, 1934 | { 1935 | "cell_type": "code", 1936 | "execution_count": 25, 1937 | "id": "japanese-treat", 1938 | "metadata": {}, 1939 | "outputs": [], 1940 | "source": [ 1941 | "#set default colors\n", 1942 | "text_color = 'white'\n", 1943 | "background = '#313332'" 1944 | ] 1945 | }, 1946 | { 1947 | "cell_type": "code", 1948 | "execution_count": 128, 1949 | "id": "least-korean", 1950 | "metadata": {}, 1951 | "outputs": [ 1952 | { 1953 | "data": { 1954 | "image/png": "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FixsbriZ9ofaUeJQzOGQCAByTXkke6awvf65hzRbUDOZiFhpHiI5b+Hh4bzw/Av4+vri4uLCgAEDuL3n7VVdLLkKJHslUzexLtnOORQZrX2rMtxOYDKbCE0PJdkrGWOxEQccKDAWYHGw4JvtS43UsErfO9slm18bbqJWSi0anWyai/a39leqmRKGocQAFnArcCPohFaIF5GKqYZIzlvTJk3LP9e0KStX/QPDnuU/LdkzhfDkcGL8YkufdIBUj1RCToSQ7JlCtms2+0MO0OZIawwlBlI8U4j1i8E7t3zn/TPlOeexqeEm2h1uh1OxkT/D/mJLg800im1Mo9hGOJY4kuucS1TAMSC50vcTEfujeYjkvIWFhbHkm29xdHS0Pffc8xNYu3ZtFZZKRETk0qnJTM5bdHQ0kyZPJjomhvT0dObNm6cwJCIi/wlqMpMLsub7NRQU5DN0yFDa39ieo5FHKx2SLiIicqVTk5lckPr167P480W2ZrOSkhKGDBvKvn37qrhkIiIiF09NZnJB2rdrV6YPkcFg4Mb2N1ZhiURERC6dApFckCNHjpZ/7qjW7BIRkaubApFckE2bN/HV119hNpsxm80sWbqUH/+Dy3WIiIh9UR8iuSienp44ODiQmZlZ+cYiIiJXOI0yk4uSlZVV1UUQERH5x6jJTEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN1TIBIRERG7p0AkIiIidk+BSEREROyeApGIiIjYPQUiERERsXsKRCIiImL3FIhERETE7ikQiYiIiN2rkkDUr2/fqjisXATdq6uL7tfVRffr6qF7dXW5mPtVRYGoX1UcVi6C7tXVRffr6qL7dfXQvbq6XMz9UpOZiIiI2D0FIhEREbF7VRKIlixdUhWHlYuge3V10f26uuh+XT10r64uF3O/HK5r1dLyL5RFRERE5KqhJjMRERGxe8bLebD27doxbtw4HA2OLF22jAULF1zOw8sFCA4OZtrUafj7+WGxWFiydClffPlFVRdLzsFgMPD5Z5+RnJTM6LFjqro4cg4eHh5MmjiRunXrgcXC1GlT+fOvv6q6WHIWAwcM4M4+d2LBQkREBFOmTqWwsLCqiyUnTZ40iY4dOpKWnsa9990HgJeXFy/PnEloSChx8XGMf+45srKyzvk+l62GyGAwMH78c4x68knuuuduunfrRnh4+OU6vFygYnMxb7zxBnffew9DHxjGvffco/t1hbv//vuJjIyq6mLIeXhm3DNs2bKVu+6+i/vu78/RyMiqLpKcRWBgIP3v68+gIYO59777MBgc6da1W1UXS06zYsUKnhg1qsxzDwwbxo4dO7mzX1927NjJA8OGVfo+ly0QNW3ShJjoaGJjYzGbzfywdi2dO3W+XIeXC5SSmsKBgwcAyM3NJTIqkqCgoCoulZxNUFAQHW/swLJly6q6KFIJD3cPWl53HcuWLwPAbDaTnZ1dtYWSc3J0dMTZ2RlHR0dcXVxITk6u6iLJaXbt3s2JzBNlnuvUqRMrV64EYOXKlXTu3LnS97lsTWaBQUEkJCbaHiclJdK0adPLdXi5BCEhITRseA179+6t6qLIWYx7+mneevst3Nzdq7ooUonQ6qGkZ6QzZfIU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\n", 1955 | "text/plain": [ 1956 | "
" 1957 | ] 1958 | }, 1959 | "metadata": {}, 1960 | "output_type": "display_data" 1961 | } 1962 | ], 1963 | "source": [ 1964 | "fig, ax = plt.subplots(figsize=(10,5))\n", 1965 | "fig.set_facecolor(background)\n", 1966 | "ax.patch.set_facecolor(background)\n", 1967 | "\n", 1968 | "#set up our base layer\n", 1969 | "mpl.rcParams['xtick.color'] = text_color\n", 1970 | "mpl.rcParams['ytick.color'] = text_color\n", 1971 | "\n", 1972 | "ax.grid(ls='dotted',lw=.5,color='lightgrey',axis='y',zorder=1)\n", 1973 | "spines = ['top','bottom','left','right']\n", 1974 | "for x in spines:\n", 1975 | " if x in spines:\n", 1976 | " ax.spines[x].set_visible(False)\n", 1977 | "\n", 1978 | "sns.swarmplot(x='ProgPer90',data=data,color='white',zorder=1)\n", 1979 | "\n", 1980 | "#plot Shaw\n", 1981 | "plt.scatter(x=5.714286,y=0,c='red',edgecolor='white',s=250,zorder=2)\n", 1982 | "plt.text(s='Shaw',x=5.714286,y=.08,c='red', fontsize=12)\n", 1983 | "\n", 1984 | "#plot Robertson\n", 1985 | "plt.scatter(x=7.447699,y=0,c='pink',edgecolor='white',s=250,zorder=2)\n", 1986 | "plt.text(s='Robertson',x=7.447699,y=.09,c='pink', fontsize=12)\n", 1987 | "\n", 1988 | "#plot TAA\n", 1989 | "plt.scatter(x=8.682927,y=0,c='yellow',edgecolor='white',s=250,zorder=2)\n", 1990 | "plt.text(s='TAA',x=8.682927,y=-.04,c='yellow', fontsize=12)\n", 1991 | "\n", 1992 | "#plot Tierney\n", 1993 | "plt.scatter(x=4.497041,y=0,c='green',edgecolor='white',s=250,zorder=2)\n", 1994 | "plt.text(s='Tierney',x=4.497041,y=-.07,c='green', fontsize=12)\n", 1995 | "\n", 1996 | "#plot Cancelo\n", 1997 | "plt.scatter(x=7.04142,y=0,c='blue',edgecolor='white',s=250,zorder=2)\n", 1998 | "plt.text(s='Cancelo',x=7.04142,y=-.07,c='blue', fontsize=13)\n", 1999 | "\n", 2000 | "#plot Walker\n", 2001 | "plt.scatter(x=4.661654,y=0,c='purple',edgecolor='white',s=250,zorder=2)\n", 2002 | "plt.text(s='Walker',x=4.661654,y=.12,c='purple', fontsize=13)\n", 2003 | "\n", 2004 | "#plot AWB\n", 2005 | "plt.scatter(x= 3.727273,y=0,c='magenta',edgecolor='white',s=250,zorder=2)\n", 2006 | "plt.text(s='AWB',x= 3.727273,y=-.09,c='magenta', fontsize=12)\n", 2007 | "\n", 2008 | "#plot Reece\n", 2009 | "plt.scatter(x=4.87013,y=0,c='cyan',edgecolor='white',s=250,zorder=2)\n", 2010 | "plt.text(s='Reece',x=4.87013,y=.07,c='cyan', fontsize=12)\n", 2011 | "\n", 2012 | "plt.title('Progressive Passes by the top Full backs in the Premier League 2020/21',c='white',fontsize=15,\n", 2013 | " bbox={'facecolor': 'red', 'alpha': 0.6, 'pad': 10})\n", 2014 | "\n", 2015 | "plt.xlabel('Progressive Passes per 90 minutes',c='yellow', fontsize=14)\n", 2016 | "\n", 2017 | "fig.text(.12,.03,\"@Sonu\", fontstyle='italic',fontsize=12, fontfamily='Andale Mono',color=text_color)\n", 2018 | "\n", 2019 | "plt.savefig('output.png')" 2020 | ] 2021 | }, 2022 | { 2023 | "cell_type": "code", 2024 | "execution_count": null, 2025 | "id": "serial-cocktail", 2026 | "metadata": {}, 2027 | "outputs": [], 2028 | "source": [] 2029 | } 2030 | ], 2031 | "metadata": { 2032 | "kernelspec": { 2033 | "display_name": "Python 3", 2034 | "language": "python", 2035 | "name": "python3" 2036 | }, 2037 | "language_info": { 2038 | "codemirror_mode": { 2039 | "name": "ipython", 2040 | "version": 3 2041 | }, 2042 | "file_extension": ".py", 2043 | "mimetype": "text/x-python", 2044 | "name": "python", 2045 | "nbconvert_exporter": "python", 2046 | "pygments_lexer": "ipython3", 2047 | "version": "3.8.5" 2048 | } 2049 | }, 2050 | "nbformat": 4, 2051 | "nbformat_minor": 5 2052 | } 2053 | --------------------------------------------------------------------------------