【Python】数据分析案例:世界杯数据可视化 | 文末送书

CSDN 2024-07-15 14:05:02 阅读 80

文章目录

前期数据准备导入数据

分析:世界杯中各队赢得的比赛数分析:先打或后打的比赛获胜次数分析:世界杯中的抛硬币决策分析:2022年T20世界杯的最高得分者分析:世界杯比赛最佳球员奖分析:最适合先击球或追逐的球场案例分析总结文末送书《Pandas数据分析》送书参与方式

每一场体育赛事都会产生大量数据,这些数据可用于分析运动员、球队表现以及比赛中的亮点。作为分析案例,我们使用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(最佳投手在比赛中取得的击球员数和失去的得分数): 最佳投手在比赛中取得的击球员数和失去的得分数

在这里插入图片描述

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

导入数据

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

<code>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世界杯中各队赢得的比赛数")code>

figure.show()

最后生成的图表:

在这里插入图片描述

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

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

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

<code>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='比赛胜利次数按得分或击球数来计算')code>

fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30,code>

marker=dict(colors=colors, line=dict(color='black', width=3)))code>

fig.show()

在这里插入图片描述

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

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

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

<code>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世界杯中的抛硬币决策')code>

fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30,code>

marker=dict(colors=colors, line=dict(color='black', width=3)))code>

fig.show()

在这里插入图片描述

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

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

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

代码示例:

<code>figure = px.bar(data,

x=data["top scorer"],

y = data["highest score"],

color = data["highest score"],

title="2022年T20世界杯的最高得分者")code>

figure.show()

在这里插入图片描述

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

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

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

代码示例如下:

figure = px.bar(data,

x = data["player of the match"],

title="世界杯比赛最佳球员奖")code>

figure.show()

在这里插入图片描述

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

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

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

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

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

<code>fig = go.Figure()

fig.add_trace(go.Bar(

x=data["venue"],

y=data["first innings score"],

name='First Innings Runs',code>

marker_color='#003f5c'code>

))

fig.add_trace(go.Bar(

x=data["venue"],

y=data["second innings score"],

name='Second Innings Runs',code>

marker_color='#c1e7ff'code>

))

fig.update_layout(barmode='group',code>

xaxis_tickangle=-45,

title="最适合先击球或追逐的球场")code>

fig.show()

在这里插入图片描述

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

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

<code>fig = go.Figure()

fig.add_trace(go.Bar(

x=data["venue"],

y=data["first innings wickets"],

name='First Innings Wickets',code>

marker_color='blue'code>

))

fig.add_trace(go.Bar(

x=data["venue"],

y=data["second innings wickets"],

name='Second Innings Wickets',code>

marker_color='red'code>

))

fig.update_layout(barmode='group',code>

xaxis_tickangle=-45,

title="最适合先发球或后手防守的球场")code>

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。