【Python】数据分析案例:世界杯数据可视化

文章目录

每一场体育赛事都会产生大量数据,这些数据可用于分析运动员、球队表现以及比赛中的亮点。作为分析案例,我们使用T20世界杯的数据进行分析。如果你有兴趣学习如何分析类似T20世界杯这样的体育赛事,本文将为您提供指导。在本文中,我们将使用 Python 来分析 2022年T20世界杯的数据。

前期数据准备

我们使用的数据集主要的关键数据信息如下,具体数据可以直接下载原始数据进行查看:

  • venue(比赛场馆): 比赛举行的地点
  • team1(先发击球队伍): 先发击球的队伍
  • team2(后发击球队伍): 后发击球的队伍
  • stage(比赛阶段): 比赛的阶段(超级12、半决赛或决赛)
  • toss winner(赢得抛硬币的队伍): 赢得抛硬币的队伍
  • toss decision(赢得抛硬币后队长的决策): 队长在赢得抛硬币后的决策
  • first innings score(第一局得分): 第一局得分
  • first innings wickets(第一局失去的击球员数): 第一局失去的击球员数
  • second innings score(第二局得分): 第二局得分
  • second innings wickets(第二局失去的击球员数): 第二局失去的击球员数
  • winner(赢得比赛的队伍): 获胜的队伍
  • won by(赢得比赛的方式): 队伍获胜的方式(击球员数或得分数)
  • player of the match(比赛最佳球员): 比赛的最佳球员
  • top scorer(比赛中得分最高的球员): 比赛中得分最高的球员
  • highest score(比赛中某球员获得的最高得分): 比赛中由球员得到的最高得分
  • best bowler(比赛中取得最多击球员的球员): 比赛中取得最多击球员的球员
  • best bowling figure(最佳投手在比赛中取得的击球员数和失去的得分数): 最佳投手在比赛中取得的击球员数和失去的得分数

在这里插入图片描述

原始数据下载:文末公众号回复D01即可下载。

导入数据

使用如下的代码进行导入数据,主要使用的 Package 是 Python 的 pandas

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio

pio.templates.default = "plotly_white"

data = pd.read_csv("data\\t20-world-cup-22.csv")
print(data.head())

打印的数据内容如下:

PyDev console: starting.
Python 3.8.8 (tags/v3.8.8:024d805, Feb 19 2021, 13:18:16) [MSC v.1928 64 bit (AMD64)] on win32
...
              venue        team1  ...         best bowler best bowling figure
0               SCG  New Zealand  ...         Tim Southee                 3-6
1     Optus Stadium  Afghanistan  ...          Sam Curran                5-10
2  Blundstone Arena      Ireland  ...  Maheesh Theekshana                2-19
3               MCG     Pakistan  ...       Hardik Pandya                3-30
4  Blundstone Arena   Bangladesh  ...        Taskin Ahmed                4-25
[5 rows x 17 columns]

分析:世界杯中各队赢得的比赛数

现在让我们来看一看每支球队在世界杯中赢得的比赛数量:

figure = px.bar(data,
                x=data["winner"],
                title="2022年T20世界杯中各队赢得的比赛数")
figure.show()

最后生成的图表:

在这里插入图片描述
从图表中可以看出,获胜次数最多的是英格兰,他们赢得了五场比赛。而巴基斯坦和印度都赢得了4场比赛。

分析:先打或后打的比赛获胜次数

现在让我们来看一看在2022年T20世界杯中,先打或后打的比赛获胜次数:

won_by = data["won by"].value_counts()
label = won_by.index
counts = won_by.values
colors = ['#004c6d','#c1e7ff']

fig = go.Figure(data=[go.Pie(labels=label, values=counts)])
fig.update_layout(title_text='比赛胜利次数按得分或击球数来计算')
fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30,
                  marker=dict(colors=colors, line=dict(color='black', width=3)))
fig.show()

在这里插入图片描述

图表分析可知,在2022年T20世界杯中,有16场比赛是由先打的一方获胜,而有13场比赛是由追击的一方获胜。

分析:世界杯中的抛硬币决策

现在,让我们来看一看各支球队在世界杯中的抛硬币决策:

toss = data["toss decision"].value_counts()
label = toss.index
counts = toss.values
colors = ['skyblue','yellow']

fig = go.Figure(data=[go.Pie(labels=label, values=counts)])
fig.update_layout(title_text='2022年T20世界杯中的抛硬币决策')
fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30,
                  marker=dict(colors=colors, line=dict(color='black', width=3)))
fig.show()

在这里插入图片描述

图表分析可知,在17场比赛中,球队选择了先打,而在13场比赛中,球队选择了先防守。

分析:2022年T20世界杯的最高得分者

现在让我们来看一看2022年T20世界杯中的最高得分者:

代码示例:

figure = px.bar(data,
                x=data["top scorer"],
                y = data["highest score"],
                color = data["highest score"],
                title="2022年T20世界杯的最高得分者")
figure.show()

在这里插入图片描述

从上述柱状图表中可以看到Virat Kohli在3场比赛中得分最高。毫无疑问,他是2022年T20世界杯中最出色的击球手。

分析:世界杯比赛最佳球员奖

现在让我们来看一看世界杯中的最佳球员奖次数:

代码示例如下:

figure = px.bar(data,
                x = data["player of the match"],
                title="世界杯比赛最佳球员奖")
figure.show()

在这里插入图片描述

在图表中可以直观的看出,以下是在比赛结束时获得最佳投球数据的投手:

  1. Virat Kohli - 2场比赛中获得最佳投手奖。
  2. Sam Curran - 2场比赛中获得最佳投手奖。
  3. Taskin Ahmed - 2场比赛中获得最佳投手奖。
  4. Suryakumar Yadav - 2场比赛中获得最佳投手奖。
  5. Shadab Khan - 2场比赛中获得最佳投手奖。

以上球员在两场比赛中获得了最佳投手奖,没有球员在超过两场比赛中获得该奖项。

分析:最适合先击球或追逐的球场

接下来让我们比较一下2022年T20世界杯每个球场的第一次和第二次跑分情况:

fig = go.Figure()
fig.add_trace(go.Bar(
    x=data["venue"],
    y=data["first innings score"],
    name='First Innings Runs',
    marker_color='#003f5c'
))
fig.add_trace(go.Bar(
    x=data["venue"],
    y=data["second innings score"],
    name='Second Innings Runs',
    marker_color='#c1e7ff'
))
fig.update_layout(barmode='group',
                  xaxis_tickangle=-45,
                  title="最适合先击球或追逐的球场")
fig.show()

在这里插入图片描述

最后根据图表分析可以得出 :SCG 球场的投球条件以先发制人更有利而闻名,这就是为什么许多球队在2019年世界杯期间更喜欢在该球场先发制人的原因。然而,应该注意到这种优势可能会因天气条件和投手的表现等因素而有所不同。

接下来进行比较一下2022年T20世界杯每个球场的第一次和第二次失去的球数:

fig = go.Figure()
fig.add_trace(go.Bar(
    x=data["venue"],
    y=data["first innings wickets"],
    name='First Innings Wickets',
    marker_color='blue'
))
fig.add_trace(go.Bar(
    x=data["venue"],
    y=data["second innings wickets"],
    name='Second Innings Wickets',
    marker_color='red'
))
fig.update_layout(barmode='group',
                  xaxis_tickangle=-45,
                  title="最适合先发球或后手防守的球场")
fig.show()

从下表中可以看出:SCG 是最适合在防守目标时投球的球场,而 Optus 体育场则是最适合先发球的球场。

在这里插入图片描述

案例分析总结

从我们的分析中,我们发现了2022年T20世界杯的一些亮点:

  • 英格兰赢得了最多的比赛场次
  • Virat Kohli 在最多场比赛中得分最高
  • Sam Curran 是在最多场比赛中表现最好的投手
  • 更多的球队通过先发制人获胜
  • 更多的球队选择先发制人
  • SCG 是最适合先发制人的球场
  • SCG 是世界杯中最适合防守目标的球场
  • Optus 体育场是最适合先发球的球场

希望你喜欢这篇关于使用 Python 进行 2022年T20世界杯分析的文章。

如果有任何有价值的问题,请随时在下方评论区提问。

文末送书《Pandas数据分析》

本书详细阑述了与Pandas数据分析相关的基本解决方案,主要包括数据分析导论、使用PandasDataFrame、使用Pandas进行数据整理、聚合PandasDataFrame、使用Pandas和Matplotlib可视化数据、使用Seaborn和自定义技术绘图、金融分析、基于规则的异常检测、Python机器学习入门、做出更好的预测、机器学习异常检测等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。

  • 京东官方购买链接:https://item.jd.com/14065178.html

在这里插入图片描述

送书参与方式

图书数量:下方名片内小程序直接抽奖送出 1 本《Pandas数据分析》 !

活动时间:截止到 2023/11/15 21:00:00

🏆抽奖方式:

⭐️⭐️点击下方名片,点击菜单抽奖,即可参与(如下图)⭐️⭐️

🏆会在 CSDN 动态公布中奖名单。

名单公布时间:2023/11/16 21:10:00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/125631.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VM17虚拟机设置网络,本地使用工具连接虚拟机

VM17虚拟机设置网络,本地使用工具连接虚拟机 下载及安装虚拟机不再说明,网络一堆教程。此处只对VM17设置网路及本地使用工具连接虚拟机操作,进行说明。 我下载的是VM17,网上有说VM16是较稳定的版本。想尝尝鲜,结果耗…

debian 已安装命令找不到 解决方法

前言:安装了debian系统,更新完软件包安装软件之后发现很多命令找不到,查找命令路径发现命令已经安装了,但是没办法直接使用 更新软件包 (第一次安装的系统一定要执行,不然可能无法安装软件) apt…

leetcode:762. 二进制表示中质数个计算置位(python3解法)

难度:简单 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。 计算置位位数 就是二进制表示中 1 的个数。 例如, 21 的二进制表示 10101 有 3 个计算置位。 示例 1&#xf…

简单好看个人引导页毛玻璃页面 HTML 源码

毛玻璃个人引导页源码,界面简洁,已测可完美搭建,UI非常不错的,有兴趣的自行去安装体验吧,其它就没什么好介绍的了。 学习资料源代码:百度网盘 请输入提取码:ig8c

微信小程序将后端返回的图片文件流解析显示到页面

说明 由于请求接口后端返回的图片格式不是一个完整的url,也不是其他直接能显示的图片格式,是一张图片 后端根据模板与二维码生成图片,返回二进制数据 返回为文件流的格式,用wx.request请求的时候,就自动解码成为了下面这样的数据数据格式,这样的数据没…

Window环境NFS服务务器搭建及连接

1.NFS服务端搭建, 下载haneWIN NFS 服务端软件(工具下载路径:链接:https://pan.baidu.com/s/1HXeQ8nIY4RHVltd0uAvFaw 提取码:w18j ) 2.安装haneWIN NFS 服务端软件比较简单,直接点下一步即可…

怎么将pdf转换成word?

怎么将pdf转换成word?将pdf文件转换成word是一件非常重要的转换技能,将pdf转换成word可以解决非常多的问题,总结起来主要有以下这些:编辑文本:① PDF文件通常是不可编辑的,而将其转换为Word格式后&#xff…

c#数据类型

常量 /*常量是固定的量,在运行过程中不可以改变的量 const 来修饰不能改变的量*/ // public private protected internal 是访问修饰符using System.Security.Cryptography.X509Certificates;namespace ConsoleApp1 {internal class Program{public const int a 1…

Semantic-Guided Zero-Shot Learning for Low-Light ImageVideo Enhancement

论文阅读之无监督低光照图像增强 Semantic-Guided Zero-Shot Learning for Low-Light Image/Video Enhancement 代码: https://github.com/ShenZheng2000/SemantiGuided-Low-Light-Image-Enhancement 在低光条件下增加亮度的一个可行方法是使用更高的ISO或更长时间…

qt-C++笔记之Qt中的时间与定时器

qt-C笔记之Qt中的时间与定时器 code review! 文章目录 qt-C笔记之Qt中的时间与定时器一.Qt中的日期时间数据1.1.QTime:获取当前时间1.2.QDate:获取当前日期1.3.QDateTime:获取当前日期和时间1.4.QTime类详解1.5.QDate类详解1.6..QDateTime类…

IP可视对讲实时录制系统

介绍 软件架构 技术支持 CallRecored介绍 IP可视对讲实时录制系统设计了数据库表,并完成了数据库建模,采用了视频编解码技术,高效网络传输,磁盘高效读写技术,以及提供开放接口。 系统客户端采用扁平化UI,…

如何设计vue项目的权限管理?

权限管理的重要性及必要性 数据安全:权限管理可以确保只有具有相应权限的用户能够访问和操作特定的数据。这可以保护敏感数据不被未授权的用户访问,从而提高数据的安全性。功能控制:权限管理可以根据用户的角色和权限设置,控制用户…

【java:牛客每日三十题总结-3】

java:牛客每日三十题总结 总结如下 总结如下 集合相关知识点 Collection主要的子接口: List:可以存放重复内容 Set:不能存放重复内容,所有重复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet:可以对集合中的数据进行排序 Map没有继承Collection接口&…

vue项目js原生属性IntersectionObserver实现图片懒加载

vue项目js原生属性IntersectionObserver实现图片懒加载 IntersectionObserver 使用js原生属性IntersectionObserver实现观察img元素是否处于游览器视口中 懒加载原理:给img设置一个默认url图片,观察图片处于视口内以后,动态改变img的url为自己…

在Three.js中动画 简单案例

在Three.js中,动画是指在场景中创建和控制对象的运动和变化。模型是指通过Three.js加载的3D对象,可以是几何体、网格或复杂的模型文件(如.obj或.gltf)。动画可以存在于模型中,也可以单独定义。 编辑关键帧:…

数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、串的定义二、串的存储结构1.顺序结构2.链式结构 三、串的朴素的模式匹配算法(暴力匹配算法)1.背景2.假设我们要从下面的主串 S"…

app自动化测试(Android)--显式等待机制

WebDriverWait类解析 WebDriverWait 用法代码 Python 版本 WebDriverWait(driver,timeout,poll_frequency0.5,ignored_exceptionsNone)参数解析: driver:WebDriver 实例对象 timeout: 最长等待时间,单位秒 poll_frequency: 检测的间隔步…

华为L410上制作内网镜像模板02

原文链接:华为L410上制作离线安装软件模板02 hello,大家好啊,今天给大家带来第二篇在内网搭建Apache服务器,用于安装完内网操作系统后,在第一次开机时候,为系统安装软件的文章,今天给大家介绍在…

nodejs+vue+python+PHP+微信小程序南七街道志愿者服务平台的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

PCIe寄存器之二

关键字索引: CAP_PM 对应:Capabilities: [c0] Power Management CAP_MSI 对应:Capabilities: [c8] MSI CAP_MSIX对应:Capabilities: [e0] MSI-X CAP_EXP 对应:Capabilities: [70] Express (v2) Endpoint 以上 [] 内的…