Анализ данных индийской премьер-лиги с использованием библиотеки pandas, NumPy, Seaborn и Matplotlib.

Здравствуйте, специалисты по данным!

Все мы знаем, что живем в век информации, когда данные играют ключевую роль. Если вы владеете данными, вы владеете всем. Но что произойдет после того, как вы получите данные?

Ну, это зависит от того, какие данные вы получите. У вас могут быть какие-то данные, которые вам нужно проанализировать, чтобы получить ценную информацию. Например, если вы работаете в Zomato, вам нужно проводить анализ данных по имеющимся у вас данным. Если вы работаете в какой-то рекламной компании, то там вам тоже нужно провести анализ данных. Анализируя их данные, вы можете предоставить компании ценную информацию и стратегию. Здесь хватит тезиса.

Теперь мы все смотрим крикет в целом, и все мы знаем, что индийская премьер-лига (IPL) - самая большая крикетная лига в мире. Давайте проведем анализ данных IPL с данными матчей IPL с 2008 по 2020 год. Возьмите чашку кофе и приступим к работе.

Анализ данных IPL

В этом проекте мы проделаем следующие основные шаги:

  1. Импортировать библиотеки
  2. Загрузите данные
  3. Анализировать данные

Набор данных и исходный код Github приведены ниже:

Импорт библиотек

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

Импортируйте эти библиотеки в свой блокнот Jupyter или Google Colab, поскольку мы собираемся использовать их в нашем коде.

Загрузите данные

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

Загрузите данные, используя приведенный выше код, в свой блокнот Jupyter. Для Google Colab вам необходимо загрузить набор данных на свой диск, а затем импортировать его.

Анализируйте данные

Теперь посмотрим на данные, над которыми мы работаем:

match.head(5)
delivery.head(5)

Когда вы запустите оболочку, то в разделе матчей вы увидите, что первый матч в 2008 году был сыгран между KKR и RCB. KKR выиграл матч на стадионе M Chinnaswamy, а лучшим игроком матча стал BB McCullum. Результат матча был определен сериями.

Такой же анализ присутствует и в разделе доставки мяча. Если вы хотите просмотреть 5 верхних нижних данных таблицы, а затем вам нужно запустить программу match.tail(5) в блокноте Jupyter или в ячейке Google Colab.

Дополнительная информация о матчах и поставках мячей в период 2008–2020 гг.

match.info() #816
delivery.info() #193468

Список команд-участниц

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

Вы получите список команд, которые играли в период с 2008 по 2020 год. Если вы профессиональный фанат IPL, вы увидите в списке названия некоторых старых команд, которые не играют в наши дни, но они внесли некоторую ценную информацию в историю IPL. .

Количество матчей на объект

sns.countplot('venue', data=match)
plt.xticks(rotation='vertical')

Как видите, сады Эдема - излюбленное место проведения IPL, где было проведено около 80 матчей.

Матчи, сыгранные каждой командой

x = match['team1'].value_counts()
y = match['team2'].value_counts()
(x+y).plot(kind='barh')

Мы подсчитываем ценность каждой команды, играющей в первом столбце, и добавляем к счету каждой команды из второй команды, чтобы получить желаемый результат. Например, если ЦСК сыграл 90 раз из команды 1 и 85 раз из команды 2, то на графике показано всего 175 матчей. Вы можете видеть, что индейцы Мумбаи сыграли наибольшее количество матчей в IPL.

Матчи, выигранные каждой командой

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

Когда вы запустите эту ячейку, вы увидите, что индейцы Мумбаи выигрывают наибольшее количество матчей, за ними следуют CSK и другие команды. Теперь, если вы хотите отобразить этот результат в виде графика, запустите эту программу в следующей ячейке.

sns.countplot('winner', data=match)
plt.xticks(rotation='vertical')

Пять лучших игроков с наибольшим количеством победителей матча

Если вы являетесь официальным лицом команды, и эти игроки попадают с молотка, вам необходимо следить за этими игроками, поскольку у этих игроков наибольшее количество наград Лучшего игрока матча.

Давайте посмотрим, как это найти:

temp_data=match['player_of_match'].value_counts().head()
print(temp_data)
sns.barplot(x=temp_data.index,y=temp_data.values,data=match)
plt.title("Top 5 MoM")
plt.xticks(rotation=90)
plt.xlabel("Match Count")
plt.ylabel("Player")
plt.show()

Ваш любимый игрок присутствует в приведенном выше списке?

Лучший игрок с битой в 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)
top_batsman.plot(kind='bar')

Мы сгруппировали 10 лучших игроков с битой из набора данных по доставке и подвели итоги их прогонов. После этого мы наносим эту информацию на график.

На вершине находится король Кохли, за ним следуют Суреш Райна и другие игроки с битой.

Боулер, сделавший наибольшее количество раз

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

Для этого мы сгруппировали 10 лучших боулеров, показавших результативность в матчах IPL, и подвели итоги этого забега для финального розыгрыша.

Боулер с командной игрой

Предположим, вы играете против ЦСК и вам нужно выяснить, какой из боулеров играл против этой команды в предыдущие годы. Чтобы узнать командный анализ производительности боулера, вы должны запустить следующую программу в ячейке Блокнота:

mask=delivery['bowler']=='PP Chawla'
delivery[mask].groupby('batting_team')['total_runs'].agg('sum').plot(kind='bar')

Мы берем в пример П.П. Чавла. Этот боулер сделал наибольшее количество пробежек в истории IPL до 2020 года. Мы суммировали общее количество пробежек, отданных П.П. Чавлой команде соперника.

Понятно, что если в вашей команде есть PP Chawla, не позволяйте ему играть против MI, CSK, RCB, RR и DC.

Чрезмерно мудрое поведение каждой команды в IPL (2008–2020 гг.)

delivery6=delivery[mask]
delivery6=delivery6[['batting_team','over','batsman_runs']]
x=delivery6.pivot_table(values='batsman_runs', index='batting_team', columns='over', aggfunc='count')
sns.heatmap(x, cmap='summer')

Для этого мы используем сводную таблицу, а затем подсчитываем чрезмерное количество игроков с битой в команде. Затем преобразуйте данные в тепловую карту, как показано ниже:

Как видите, если вы играете против MI или CSK, то вы должны играть с вашим лучшим атакующим составом для боулинга с первого раза. Игроки с битой MI молчат во втором и третьем раундах, после чего они переходят в режим неистовства против своего противника. То же самое и с CSK и RCB. Эти данные полезны не только для команды по боулингу, но и для команды, играющей в боулинг. Если вы являетесь менеджером команды и видите, используя эти данные, что ваша команда не очень хорошо работает в смертельных случаях, вам, вероятно, следует сосредоточиться на покупке хорошего финишера на следующем аукционе. Как видно на приведенной выше тепловой карте, большинство команд отстают в конце карты, за исключением CSK и MI.

Думаю, именно поэтому MI и CSK - две самые успешные франшизы в IPL.

Тип увольнения

sns.countplot('dismissal_kind', data=delivery)
plt.xticks(rotation='vertical')

Теперь, если вы хотите узнать, сколько пробежек набрал Вират Кохли, когда столкнулся с Джаспритом Бумрой, используйте следующий код:

mask=delivery['bowler']=='JJ Bumrah'
mask2=delivery['batsman']=='V Kohli'
delivery[mask].groupby('batsman')['batsman_runs'].agg('count').sort_values(ascending=False)['V Kohli']

Сумма пробега, когда боулер - Бумра, а игрок с битой - V Кохли. Вы получите результат.

А теперь расскажите в комментариях - как узнать топ-10 игроков с наибольшим количеством шестерок в IPL? Логика тоже принимается. Если вам нужна помощь, вот полный Код этого проекта на Github. Вы можете исследовать дальше.

Набор данных, используемый в этом проекте, находится здесь.

Ну вот и все. Спасибо за чтение. Если эта статья информативна, не забудьте аплодировать и поделиться ею со своим сообществом.

Больше контента на plainenglish.io