使用Python进行IPL数据分析(附示例)

357 阅读7分钟

使用pandas、NumPy、seaborn和matplotlib库对印度超级联赛进行数据分析。

你好,数据科学家们...!

我们都知道,我们生活在一个信息时代,数据在其中起着关键作用。如果你拥有数据,你就拥有了一切。但是,当你得到数据后,接下来该怎么办。嗯,这取决于你得到什么样的数据。但是,如果你得到某种数据,你必须对其进行分析,以获得某种有价值的信息。例如,如果你在Zomato工作,那么你必须对他们进行数据分析。如果你在一些广告公司工作,那么你也要在那里进行数据分析。通过分析他们的数据,你就为公司提供了一些有价值的信息和策略。这里有足够的论述。

IPL数据分析

现在,我们都在看板球,我们都知道印度超级联赛(IPL)是世界上最大的板球联赛。让我们来进行IPL的数据分析,因为我们得到了2008年至2020年的IPL比赛数据。喝杯咖啡,让我们开始黑客行动。

IPL数据的分析

数据集和Github源代码在下面。

我们将通过这个项目的这些主要步骤。

  1. 导入库
  2. 加载数据
  3. 分析数据

导入库

import pandas as pd
%matplotlib inline

在你的Jupyter笔记本或Google Colab中导入这些库,因为我们将在代码中使用它们。

加载数据

match=pd.read_csv('D:\Data Science\IPL\Dataset\matches.csv')

在你的Jupyter笔记本中使用上述代码加载数据。对于Google Colab,你必须把数据集上传到你的驱动器,然后再导入。

分析数据

现在看一下我们正在处理的数据。

match.head(5)

当你运行shell时,在比赛部分你会看到2008年的第一场比赛是在KKR和RCB之间进行。KKR在M Chinnaswamy体育场赢得了比赛,本场比赛的球员是BB McCullum。这场比赛的结果是由跑步决定的。

同样的分析也出现在送球部分。如果你想看表格中前5个底部的数据,那么你必须在Jupyter Notebook或Google Colab单元中运行程序match.tail(5)

更多关于2008-2020年之间的比赛和球的交付信息

match.info() #816

所有参赛球队的名单

all_teams = match['team1'].tolist() + match['team2'].tolist()

你将得到2008年至2020年期间的参赛球队名单。如果你是一个专业的IPL球迷,那么你会在名单上看到一些老牌球队的名字,这些球队现在已经不玩了,但他们在IPL历史上贡献了一些有价值的信息。

每个场地的比赛数量

sns.countplot('venue', data=match)

IPL每场比赛的数量(2008-2020)。

正如你所看到的,伊甸园是球迷最喜欢的IPL场地,有近80场比赛在那里举行。

每支球队的比赛情况

x = match['team1'].value_counts()

每支球队在IPL中进行的比赛(2008-2020)。

我们在第一栏中计算每支球队的比赛值,然后将第二栏中每支球队的计算值相加,得到所需的输出。例如,如果CSK从第一队中出场90次,从第二队中出场85次,那么图表中显示的比赛总数为175场。你可以清楚地看到,孟买印度人在IPL中的比赛次数是最多的。

各队赢得的比赛

x=pd.DataFrame({"Winner":match['winner']}).value_counts()

当你运行这个单元时,你会看到孟买印度人赢得了最多的比赛,其次是CSK和其他球队。现在,如果你想把这个结果以图表的形式绘制出来,那么在下一个单元格运行这个程序。

sns.countplot('winner', data=match)

各队在IPL中赢得的比赛(2008-2020)。

获得比赛最佳球员次数最多的前5名球员

如果你是一个球队的管理官员,而这些球员都是被压制的,那么你必须要关注这些球员,因为这些球员拥有最高数量的比赛奖项。让我们来看看如何找到这一点。

temp_data=match['player_of_match'].value_counts().head()
plt.title("Top 5 MoM")

在IPL(2008-2020年)中获得最佳球员奖数量最多的球员

你最喜欢的球员出现在上面的名单中吗?

IPL中的顶级击球手

对于这个问题,我们必须找出跑动次数最多的球员。为了找出这一点,我们必须将投递数据集中的击球手跑数与获得该跑数的击球手相加。这是很简单的逻辑,对吗?

top_batsman=delivery.groupby('batsman')['batsman_runs'].agg('sum').reset_index().sort_values('batsman_runs', ascending=False).head(10)
top_batsman.set_index('batsman', inplace=True)

我们将投递数据集中的前10名击球手分组,并将他们的得分相加。之后将这些信息绘制成图表。

IPL(2008-2020)中的顶级击球手

很明显,国王Kohli位居首位,其次是Suresh Raina和其他击球手。

跑步次数最多的投手

delivery.groupby('bowler')['total_runs'].agg('sum').reset_index().sort_values('total_runs', ascending=False).head(10)

为此,我们将在IPL比赛中送出分数的前10名保龄球手进行分组,并将这些分数汇总到最后的出口。

具有团队表现的投手

假设你的对手是CSK,你必须找出前几年对阵这支球队时哪个投手的表现好。为了找出一个保龄球手的团队表现分析,你必须在你的笔记本单元中运行以下程序。

mask=delivery['bowler']=='PP Chawla'

我们以PP Chawla为例。这个投手在2020年之前的IPL历史上给出了最高的跑动次数。我们总结了PP Chawla给对手球队的总得分。

PP Chawla对IPL球队的保龄球表现。

很明显,如果你的球队中有PP Chawla,那么就不要让他对阵MI、CSK、RCB、RR和DC。

各队在IPL(2008-2020)中的击球表现

delivery6=delivery[mask]
sns.heatmap(x, cmap='summer')

对于这一点,我们使用一个透视表,然后计算击球队的击球手的总体表现。然后将数据转换成热图。

各队在IPL(2008-2020年)中的击球表现。

你可以清楚地看到,如果你与MI或CSK比赛,那么你必须从第一局开始就使用你最好的保龄球攻击阵容。MI的击球手在第2和第3局都很沉默,之后他们就开始了对对手的狂轰滥炸模式。CSK和RCB的情况也是如此。这个数据不仅从保龄球队的角度有帮助,而且对击球队也有帮助。如果你是一个球队的经理,你通过这个数据看到你的球队在死亡之球中表现不佳,那么你可能会专注于在下次拍卖中购买一个好的终结者。正如你在上面的热图中所看到的,大多数球队在死亡球方面都比较落后,除了CSK和MI。

我想这就是为什么MI和CSK是IPL中最成功的两个特许经营商。

解雇类型

sns.countplot('dismissal_kind', data=delivery)

IPL中的解雇类型(2008-2020年

现在,如果你想知道维拉特-科利在面对贾斯普里特-布姆拉时的得分是多少。

mask=delivery['bowler']=='JJ Bumrah'

当投手是Bumrah,击球手是V-Kohli时,运行的总和。你会得到输出。

现在,请告诉我如何在评论中找出IPL中六分球数量最多的前10名球员?逻辑也是可以接受的。如果需要帮助的话,这里有这个项目的完整Github代码。你可以进一步探索。

这篇文章中使用的数据集 项目在这里.

好了,就这样了。谢谢你的阅读。如果这篇文章内容丰富,那么一定要拍手,并与你的社区分享。


使用Python的IPL数据分析(2008-2020年)最初发表于Nerd For Techon Medium,在那里人们通过强调和回应这个故事来继续对话。