社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python分析4W场球赛后,你Pick哪只夺冠热门球队?

软件定义世界(SDX) • 7 年前 • 706 次点击  

热门下载(点击标题即可阅读)

☞【下载】2015中国数据分析师行业峰会精彩PPT下载(共计21个文件)

比赛已经开始,我们不妨用 Python 来对参赛队伍的实力情况进行分析,并大胆的预测下本届世界杯的夺冠热门球队吧!

通过数据分析,可以发现很多有趣的结果,比如:

  • 找出哪些队伍是首次进入世界杯的黑马队伍

  • 找出2018年32强中之前已经进入过世界杯,但在世界杯上没有赢得过一场比赛的队伍

当然,我们本次的主要任务是要通过数据分析来预测2018年世界杯的夺冠热门队伍。

本次分析的数据来源于 Kaggle, 包含从 1872 年到今年的数据,包括世界杯比赛、世界杯预选赛、亚洲杯、欧洲杯、国家之间的友谊赛等比赛,一共大约 40000 场比赛的情况。

本次的环境为

  • window 7 系统

  • python 3.6

  • Jupyter Notebook

  • pandas version 0.22.0

先来看看数据的情况:

import pandas as pdimport matplotlib.pyplot as plt%matplotlib inlineplt.style.use('ggplot')df = pd.read_csv('results.csv')df.head()

该数据集包含的数据列的信息如下:

  • 日期

  • 主队名称

  • 客队名称

  • 主队进球数 (不含点球)

  • 客队进球数 (不含点球)

  • 比赛的类型

  • 比赛所在城市

  • 比赛所在国家

  • 是否中立

结果如下:

1、 获取所有世界杯比赛的数据(不含预选赛)

df_FIFA_all = df[df['tournament'].str.contains('FIFA', regex=True)]df_FIFA = df_FIFA_all[df_FIFA_all['tournament']=='FIFA World Cup']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'])

创建一个新的列数据,包含获胜队伍的信息

# The first method to get the winnersdf_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'] = 'Draw'df_FIFA.head()# The second method to get the winnersdef find_win_team(df):    winners = []    for i, row in df.iterrows():        if row['home_score'] > row['away_score']:            winners.append(row['home_team'])        elif row['home_score'] < row['away_score']:            winners.append(row['away_team'])        else:            winners.append('Draw')    return winnersdf_FIFA['winner'] = find_win_team(df_FIFA)df_FIFA.head()

结果如下:

2、 获取世界杯所有比赛的前20强数据情况

2.1 获取世界杯所有比赛获胜场数最多的前20强数据

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(20).plot(kind='bar', figsize=(10,6), title='Top 20 Winners of World Cup')

水平柱状图

s.sort_values(ascending=True,inplace=True)s.tail(20).plot(kind='barh', figsize=(10,6), title='Top 20 Winners of World Cup')

饼图

s_percentage = s/s.sum()s_percentages_percentage.tail(20).plot(kind='pie', figsize=(10,10), autopct='%.1f%%',                           startangle=173, title='Top 20 Winners of World Cup', label='')


分析结论1:

从赢球场数来看,巴西、德国、意大利、阿根廷四支球队实力最强。


通过上面的分析,我们还可以来查看部分国家的获胜情况

s.get('China', default = 'NA')s.get('Japan', default = 'NA')s.get('Korea DPR', default = 'NA')s.get('Korea Republic', default = 'NA')s.get('Egypt', default = 'NA')

运行结果分别是 ‘NA’,4,1,5,‘NA’。

从结果来看,中国队,在世界杯比赛上(不含预选赛)还没有赢过。当然,本次世界杯的黑马-埃及队,之前两度进入世界杯上,但也没有赢过~~

上面分析的是赢球场数的情况,下面我们来看下进球总数情况。

2.2 各个国家队进球总数量情况

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(20).plot(kind='barh', figsize=(10,6), title='Top 20 in Total Scores of World Cup')


分析结论2:

从进球总数量来看,德国、巴西、阿根廷、意大利四支球队实力最强。


上面分析的是自1872年以来的所有球队的数据情况,下面,我们重点来分析下2018年世界杯32强的数据情况。

3、2018年世界杯32强分析

2018年世界杯的分组情况如下:

第一组:俄罗斯、德国、巴西、葡萄牙、阿根廷、比利时、波兰、法国

第二组:西班牙、秘鲁、瑞士、英格兰、哥伦比亚、墨西哥、乌拉圭、克罗地亚

第三组:丹麦、冰岛、哥斯达黎加、瑞典、突尼斯、埃及、塞内加尔、伊朗

第四组:塞尔维亚、尼日利亚、澳大利亚、日本、摩洛哥、巴拿马、韩国、沙特阿拉伯

获取32强的所有数据

首先,判断是否有队伍首次打入世界杯。

team_list = ['Russia', 'Germany', 'Brazil', 'Portugal', 'Argentina', 'Belgium', 'Poland', 'France',             'Spain', 'Peru', 'Switzerland', 'England', 'Colombia', 'Mexico', 'Uruguay', 'Croatia',            'Denmark', 'Iceland', 'Costa Rica', 'Sweden', 'Tunisia', 'Egypt', 'Senegal', 'Iran',            'Serbia', 'Nigeria', 'Australia', 'Japan', 'Morocco', 'Panama', 'Korea Republic', 'Saudi Arabia']for item in team_list:    if item not in s_score.index:        print(item)out:IcelandPanama

通过上述分析可知,冰岛队和巴拿马队是首次打入世界杯的。

由于冰岛队和巴拿马队是首次进入世界杯,所以这里的32强数据,事实上是没有这两支队伍的历史数据的。

df_top32 = df_FIFA[(df_FIFA['home_team'].isin(team_list))&(df_FIFA['away_team'].isin(team_list))]

3.1 自1872年以来,32强数据情况

赢球场数情况

s_32 = df_top32.groupby('win_team')['win_team'].count()s_32.sort_values(ascending=False, inplace=True)s_32.drop(labels=['Draw'], inplace=True)s_32.sort_values(ascending=True,inplace=True)s_32.plot(kind='barh', figsize=(8,12), title='Top 32 of World Cup since year 1872')

进球数据情况

df_score_home_32 = df_top32[['home_team', 'home_score']]column_update = ['team', 'score']df_score_home_32.columns = column_updatedf_score_away_32 = df_top32[['away_team', 'away_score']]df_score_away_32.columns = column_updatedf_score_32 = pd.concat([df_score_home_32,df_score_away_32], ignore_index=True)s_score_32 = df_score_32.groupby('team')['score'].sum()s_score_32.sort_values(ascending=False, inplace=True)s_score_32.sort_values(ascending=True, inplace=True)s_score_32.plot(kind='barh', figsize=(8,12), title='Top 32 in Total Scores of World Cup since year 1872')


分析结论3:

自1872年以来,32强之间的世界杯比赛,从赢球场数和进球数量来看,德国、巴西、阿根廷三支球队实力最强。


自1872年到现在,已经有100多年,时间跨度较大,有些国家已发生重大变化,后续分别分析自1978年(近10届)以及2002年(近4届)以来的比赛情况。

程序代码是类似的,这里只显示可视化的结果。

3.2 自1978年以来,32强数据情况

赢球场数情况

进球数据情况



分析结论4:

自1978年以来,32强之间的世界杯比赛,从赢球场数来看,阿根廷、德国、巴西三支球队实力最强。从进球数量来看,前3强也是这三支球队,但德国队的数据优势更明显。


3.3 自2002年以来,32强数据情况

赢球场数情况

进球数据情况


分析结论5:

自2002年以来,32强之间的世界杯比赛,从赢球场数和进球数量来看,德国、阿根廷、巴西三支球队实力最强。其中,德国队的数据优势更明显。


4、综合结论

2018年世界杯的32支队伍,根据以往的世界杯比赛数据来看,预测前三强为 德国、阿根廷和巴西,其中德国队应该是夺冠的最大热门。你怎么看?


最后附上一份《伪球迷的自我修养》,不懂世界杯的你、包你看完后,分分钟变“懂球帝”,真球迷,那就一起揭穿他(她)。



扫盲篇

  • 世界杯每四年一次,一次一个月

  • 这次的举办地是俄罗斯

  • 世界杯只有足球一项比赛

  • 比赛都是北京时间的晚上和凌晨进行

  • 世界杯一共32个队参赛,分成8各小组,每组4支球队

  • 世界杯是国家队之间的比赛,没有皇马、巴萨、拜仁(这些都是俱乐部)

  • 也没有科比、詹姆斯

  • 更没有姚明、马龙、张继科

  • 叕没有中国队

小白篇

首先你要pick一支球队作为主队。德国、法国、巴西、西班牙、阿根廷、葡萄牙这些人气高、实力强的夺冠热门都是很好的选择(另外谨记这届世界杯实力很强的意大利和荷兰都没能晋级,千万别说这俩队)。

不过这样的选择很有可能会受到一些自以为是的球迷鄙视,认为你是跟风喜欢,无脑支持。

所以如果你pick的是一支有实力,但名声又没那么响的球队,比如克罗地亚、墨西哥、瑞士、比利时。不仅能彰显你独特的品味,还能让别人觉得你是个真球迷。

要是这几支球队最后能杀进8强甚至4强成为黑马,啧啧,那你可就是别人眼中的资深球迷了。

好了,pick完主队后,你至少得知道自己的主队都有哪些球员吧,而且光知道球员的名字是不够的,最好能记住一些球员的绰号。

比如,“水爷”听着就要比“拉莫斯”霸气


“煤老板”听着就比“梅西”接地气


“二娃”听着就比“穆勒”喜气

进阶篇

在了解完自己主队的现况后,还要去了解自己主队的过去。这样跟别人聊起来时,你就可以说,我记得我还上小学的时候,XX队里有个老谁家的小谁贼厉害,blabla......

其次,如果别人邀请你一起看球,一定要了解他是哪个队的球迷。如果是阿根廷球迷,那一定是梅西的支持者没跑了。

所以,当出现以下情形时,你要做出正确的应对。举几个例子

  • 梅西射门进球:漂亮!这球也就梅西能进!

  • 梅西射门不进:卧*,对面的门将开挂了吧?

  • 梅西助攻:这传球太隐蔽,太有想象力了。

  • 梅西全场隐身(指没有什么表现):老板太无私了,吸引了这么多人防守。

  • 梅西倒地裁判没有吹罚犯规:这球不犯规吗,黑哨,裁判买球了吧?

  • 阿根廷赢了:老板Carry全场。

  • 阿根廷输了:队友太次,带不动。

同理,当你的朋友是别的队球迷时,你只需要冷静观察,分析出当家球星是谁(听解说老念叨谁,看镜头老给谁特写),然后用他的名字替换掉梅西即可。

但如果是一帮人一起看球,由于里面混杂着多国球迷,这时你最好选择沉默,好好吃你的瓜。

要是有人问起你对比赛的预测,然而你对这俩队完全不了解时,为了不暴露自己伪球迷的本质,你可以这么说:

“足球是圆的!”

这句话约等于一切皆有可能!

高阶篇

高阶篇的要求就有些难了,你需要会运用足坛的一些梗。比如:传统美德本特克:用于某位球员错失单刀或者空门。

注:此梗源自某场英超联赛中,当时身为利物浦球员的本特克错失了空门的机会,导致某国内解说怒爆粗口“传统美德(CTMD)本特克”。

都怪本泽马:用于某队输球或者被淘汰。

注:有关此梗来源的说

读BD最佳实践案例,赢DT未来!【政、工、农册免费在线试读】

18各行业,106个中国大数据应用最佳实践案例:

(1)《赢在大数据:中国大数据发展蓝皮书》;

(2)《赢在大数据:金融/电信/媒体/医疗/旅游/数据市场行业大数据应用典型案例》;

(3)《赢在大数据:营销/房地产/汽车/交通/体育/环境行业大数据应用典型案例》;

(4)《赢在大数据:政府/工业/农业/安全/教育/人才行业大数据应用典型案例》。【本册免费在线读,PC打开连接:https://item.jd.com/12058567.html

京东网四册套装购买链接:

https://item.jd.com/1073432366.html

京东网购买链接:

https://item.jd.com/12058567.html

当当网购买链接:

http://product.dangdang.com/25097007.html

扫描下方二维码,可直接进入京东购书:

或点击“阅读原文”,购买“赢在大数据系列丛书”。

推荐文章


点击 蓝色标题即可阅读全文

10万读者睿选2016年TOP1002015年TOP100
CCTV大数据名人讲堂PPT&视频:万亿元大数据产业安全城市】【农业航运】【数据资产变现

DTiii:1574家大数据产业地图PPT及下载】【1574家详单

院士:李国杰【(PPT)(全文)】【数据开放】,邬贺铨 倪光南【大数据时代)()】,怀进鹏梅宏

大数据100分:【金融】【制造】【餐饮】【电信】【电商】【更多行业大数据应用请点击底部导航栏BD100分】;

大数据/人工智能数据竞赛:Kaggle经验分享NetFlix百万美金】【Kaggle案例】【2017BDCI】【2017BDCI嘉年华滴滴算法大赛】

征信:ZestFinance】【BCG】【芝麻信用】;

工业4.0:罗兰·贝格 】【安筱鹏

人工智能:阿里&BCG】【埃森哲经济社会】【美国AI国家战略伯努利李开复】【TOP100】【2016中国AI报告】【美国AI国家规划】【深度学习】【人智合一】【人脸识别】【人脸识别企业PK】【无人驾驶】【AI知识体系】【神经网络

区块链:TED视频】【麦肯锡】【毕马威】【高盛

算   法: 【10大经典算法】【推荐算法

可视化:【2017年获奖2014年最佳】【十大标志性作品】【43款工具

PPT:【大数据产业地图】【数据之巅互联网的未来】【软件正吃掉整个世界】【互联网思维】【互联网+】【一带一路】;

VC:【大数据投资2015创投趋势2014投资报告倒闭教训

人才:2017BD&人才报告

大数据应用最佳实践案例:18个行业106个案例

原创:陈新河:万亿元大数据产业新生态 软件定义世界,数据驱动未来数据交易互联网+观点】。

专题版本:20180208V3.2

底部新增导航菜单(点击顶部“软件定义世界(SDX)”,点击“进入公众号”,底部菜单栏即出现),下载200多个精彩PPT,持续更新中!

上下滑动查看更多精选专题

微信公众号:软件定义世界(SDX)

微信ID:SDx-SoftwareDefinedx

软件定义世界, 数据驱动未来;

❷ 大数据思想的策源地、产业变革的指南针、创业者和VC的桥梁、政府和企业家的智库、从业者的加油站;

个人微信号:sdxtime,

邮箱:sdxtime@126.com;

=>> 长按右侧二维码关注。

底部新增导航菜单,下载200多个精彩PPT,持续更新中!


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/QsAd6bFupz
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/13682
 
706 次点击