当前位置: 沙特阿拉伯 > 沙特阿拉伯医疗 > 我用Python分析了4W场比赛,
当前位置: 沙特阿拉伯 > 沙特阿拉伯医疗 > 我用Python分析了4W场比赛,
年俄罗斯世界杯将在北京时间6月14日时于莫斯科的卢日尼基球场正式打响揭幕战。
在比赛开始之前,我们不妨用Python来对参赛队伍的实力情况进行分析,并大胆的预测下本届世界杯的夺冠热门球队。
通过数据分析,可以发现很多有趣的结果,比如:
找出哪些队伍是首次进入世界杯的黑马队伍
找出年强中之前已经进入过世界杯,但在世界杯上没有赢得过一场比赛的队伍
当然,我们本次的主要任务是要通过数据分析来预测年世界杯的夺冠热门队伍。
本次分析的数据来源于Kaggle,包含从年到今年的数据,包括世界杯比赛、世界杯预选赛、亚洲杯、欧洲杯、国家之间的友谊赛等比赛,一共大约场比赛的情况。
本次的环境为:
Window7系统
Python.6
JupyterNotebook
pandasversion0..0
先来看看数据的情况:
importpandasaspdimportmatplotlib.pyplotasplt%matplotlibinlineplt.style.use(ggplot)df=pd.read_csv(results.csv)df.head()
该数据集包含的数据列的信息如下:
日期
主队名称
客队名称
主队进球数(不含点球)
客队进球数(不含点球)
比赛的类型
比赛所在城市
比赛所在国家
是否中立
结果如下:
获取所有世界杯比赛的数据(不含预选赛)
df_FIFA_all=df[df[tournament].str.contains(FIFA,regex=True)]df_FIFA=df_FIFA_all[df_FIFA_all[tournament]==FIFAWorldCup]df_FIFA.head()
结果如下:
对数据做一个初步整理,代码如下:
df_FIFA.loc[:,date]=pd.to_datetime(df_FIFA.loc[:,date])df_FIFA[year]=df_FIFA[date].dt.yeardf_FIFA[diff_score]=df_FIFA[home_score]-df_FIFA[away_score]df_FIFA[win_team]=df_FIFA[diff_score]=pd.to_numeric(df_FIFA[diff_score])
然后创建一个新的列数据,包含获胜队伍的信息,代码如下:
#Thefirstmethodtogetthewinnersdf_FIFA.loc[df_FIFA[diff_score]0,win_team]=df_FIFA.loc[df_FIFA[diff_score]0,home_team]df_FIFA.loc[df_FIFA[diff_score]0,win_team]=df_FIFA.loc[df_FIFA[diff_score]0,away_team]df_FIFA.loc[df_FIFA[diff_score]==0,win_team]=Drawdf_FIFA.head()#Thesecondmethodtogetthewinnersdeffind_win_team(df):winners=[]fori,rowindf.iterrows():ifrow[home_score]row[away_score]:winners.append(row[home_team])elifrow[home_score]row[away_score]:winners.append(row[away_team])else:winners.append(Draw)returnwinnersdf_FIFA[winner]=find_win_team(df_FIFA)df_FIFA.head()
结果如下:
获取世界杯所有比赛的前0强数据情况
获取世界杯所有比赛获胜场数最多的前0强数据,代码如下:s=df_FIFA.groupby(win_team)[win_team].count()s.sort_values(ascending=False,inplace=True)s.drop(labels=[Draw],inplace=True)
然后用pandas可视化如下:
s.head(0).plot(kind=bar,figsize=(10,6),title=Top0WinnersofWorldCup)
柱状图
s.sort_values(ascending=True,inplace=True)s.tail(0).plot(kind=barh,figsize=(10,6),title=Top0WinnersofWorldCup)
水平柱状图
s_percentage=s/s.sum()s_percentages_percentage.tail(0).plot(kind=pie,figsize=(10,10),autopct=%.1f%%,startangle=17,title=Top0WinnersofWorldCup,label=)
饼图
分析结论1
从赢球场数来看,巴西、德国、意大利、阿根廷四支球队实力最强。
通过上面的分析,我们还可以来查看部分国家的获胜情况:
s.get(China,default=NA)s.get(Japan,default=NA)s.get(KoreaDPR,default=NA)s.get(KoreaRepublic,default=NA)s.get(Egypt,default=NA)
运行结果分别是‘NA’,4,1,5,‘NA’。
从结果来看,中国队,在世界杯比赛上(不含预选赛)还没有赢过。当然,本次世界杯的黑马-埃及队,之前两度进入世界杯,但也没有赢过~~
上面分析的是赢球场数的情况,下面我们来看下进球总数情况。
分析各个国家队进球总数量情况,代码如下:df_score_home=df_FIFA[[home_team,home_score]]column_update=[team,score]df_score_home.columns=column_updatedf_score_away=df_FIFA[[away_team,away_score]]df_score_away.columns=column_updatedf_score=pd.concat([df_score_home,df_score_away],ignore_index=True)s_score=df_score.groupby(team)[score].sum()s_score.sort_values(ascending=False,inplace=True)s_score.sort_values(ascending=True,inplace=True)s_score.tail(0).plot(kind=barh,figsize=(10,6),title=Top0inTotalScoresofWorldCup)
分析结论
从进球总数量来看,德国、巴西、阿根廷、意大利四支球队实力最强。
上面分析的是自年以来的所有球队的数据情况,下面,我们重点来分析下年世界杯强的数据情况。
年世界杯强分析
年世界杯的分组情况如下:
第一组:俄罗斯、德国、巴西、葡萄牙、阿根廷、比利时、波兰、法国
第二组:西班牙、秘鲁、瑞士、英格兰、哥伦比亚、墨西哥、乌拉圭、克罗地亚
第三组:丹麦、冰岛、哥斯达黎加、瑞典、突尼斯、埃及、塞内加尔、伊朗
第四组:塞尔维亚、尼日利亚、澳大利亚、日本、摩洛哥、巴拿马、韩国、沙特阿拉伯
获取强的所有数据,首先,判断是否有队伍首次打入世界杯:
team_list=[Russia,Germany,Brazil,Portugal,Argentina,Belgium,Poland,France,Spain,Peru,Switzerland,England,Colombia,Mexico,Uruguay,Croatia,Denmark,Iceland,CostaRica,Sweden,Tunisia,Egypt,Senegal,Iran,Serbia,Nigeria,Australia,Japan,Morocco,Panama,KoreaRepublic,SaudiArabia]foriteminteam_list:ifitemnotins_score.index:print(item)out:IcelandPanama
通过上述分析可知,冰岛队和巴拿马队是首次打入世界杯的。
由于冰岛队和巴拿马队是首次进入世界杯,所以这里的强数据,没有这两支队伍的历史数据。
df_top=df_FIFA[(df_FIFA[home_team].isin(team_list))(df_FIFA[away_team].isin(team_list))]下面是自年以来,强数据情况分析:
赢球场数情况
s_=df_top.groupby(win_team)[win_team].count()s_.sort_values(ascending=False,inplace=True)s_.drop(labels=[Draw],inplace=True)s_.sort_values(ascending=True,inplace=True)s_.plot(kind=barh,figsize=(8,1),title=TopofWorldCupsinceyear)
进球数据情况
df_score_home_=df_top[[home_team,home_score]]column_update=[team,score]df_score_home_.columns=column_updatedf_score_away_=df_top[[away_team,away_score]]df_score_away_.columns=column_updatedf_score_=pd.concat([df_score_home_,df_score_away_],ignore_index=True)s_score_=df_score_.groupby(team)[score].sum()s_score_.sort_values(ascending=False,inplace=True)s_score_.sort_values(ascending=True,inplace=True)s_score_.plot(kind=barh,figsize=(8,1),title=TopinTotalScoresofWorldCupsinceyear)
分析结论
自年以来,强之间的世界杯比赛,从赢球场数和进球数量来看,德国、巴西、阿根廷三支球队实力最强。
自年到现在,已经有多年,时间跨度较大,有些国家已发生重大变化,后续分别分析自年(近10届)以及00年(近4届)以来的比赛情况。程序代码是类似的,这里只显示可视化的结果。
下面是自年以来,强数据情况分析:赢球场数情况
进球数据情况
分析结论4
自年以来,强之间的世界杯比赛,从赢球场数来看,阿根廷、德国、巴西三支球队实力最强。从进球数量来看,前强也是这三支球队,但德国队的数据优势更明显。
下面是自00年以来,强数据情况分析:赢球场数情况
进球数据情况
分析结论5
自00年以来,强之间的世界杯比赛,从赢球场数和进球数量来看,德国、阿根廷、巴西三支球队实力最强。其中,德国队的数据优势更明显。
综合结论
年世界杯的支队伍,根据以往的世界杯比赛数据来看,预测前三强为德国、阿根廷和巴西,其中德国队应该是夺冠的最大热门。本文是一次比较综合的项目实战,希望可以给大家带来一些启发。
特别说明:以上数据分析,纯属个人学习用,预测结果与实际情况可能偏差很大,不能用于其他用途。
留言有礼活动
根据各大数据机构给出的本届世界杯夺冠赔率榜,本次的八大夺冠热门球队为:巴西、德国、西班牙、法国、阿根廷、比利时、英格兰、葡萄牙。你觉得哪支球队能赢得冠军奖杯呢?欢迎底部留言分享并说明理由。小编将精选出最有价值的三条评论,分别获得50、0、0元的红包奖励,活动截止时间6月1号1时整。
作者:Lemonbit
编辑:陶家龙、孙淑娟
出处:转载自Python数据之道
转载请注明:http://www.shatealabo.com/sbyl/8419.html