Skip to content

Вы работаете спортивным журналистом в крупной онлайн-спортивной медиакомпании, специализирующейся на анализе и освещении футбола. На протяжении многих лет вы наблюдали как за мужскими, так и за женскими международными футбольными матчами, и ваш внутренний голос подсказывает вам, что в женских международных футбольных матчах забивается больше голов, чем в мужских. Это могло бы стать интересной статьёй для исследования, которую ваши подписчики обязательно оценят, но для уверенности вам нужно провести достоверный статистический гипотезный тест!

Планируя этот проект, вы признаете, что спорт сильно изменился за эти годы, и результаты, вероятно, сильно варьируются в зависимости от турнира, поэтому вы решаете ограничить данные, используемые в анализе, только официальными матчами Чемпионата мира по футболу ФИФА (не включая отборочные матчи) с 2002-01-01.

Вы создаете два набора данных, содержащих результаты каждого официального мужского и женского международного футбольного матча с 19-го века, которые вы взяли с надежного онлайн-источника. Эти данные хранятся в двух файлах CSV: women_results.csv и men_results.csv.

Вопрос, на который вы пытаетесь найти ответ:

Забивается ли больше голов в женских международных футбольных матчах, чем в мужских?

Вы предполагаете 10% уровень значимости и используете следующие нулевую и альтернативную гипотезы:

: Среднее количество голов, забитых в женских международных футбольных матчах, такое же, как и в мужских.

: Среднее количество голов, забитых в женских международных футбольных матчах, больше, чем в мужских.

# Start your code here!
# Импорт библиотек
import pandas as pd
import matplotlib.pyplot as plt
import pingouin
import scipy.stats as stats
from scipy.stats import mannwhitneyu
# Загрузка данных из CSV-файлов
df_women = pd.read_csv('women_results.csv')  # Чтение данных из файла 'women_results.csv' и сохранение их в DataFrame df_women
df_men = pd.read_csv('men_results.csv')      # Чтение данных из файла 'men_results.csv' и сохранение их в DataFrame df_men
df_women.head()
df_men.head()
df_women.info()  # Получение общей информации о DataFrame df_women, включая количество строк, столбцов, типы данных и память

df_men.info()    # Получение общей информации о DataFrame df_men, аналогично df_women, для сравнения структуры и объема данных
# Преобразование данных в столбце 'date' из строкового формата в формат даты/времени для мужского датасета
df_men["date"] = pd.to_datetime(df_men["date"])  

# Преобразование данных в столбце 'date' из строкового формата в формат даты/времени для женского датасета
df_women["date"] = pd.to_datetime(df_women["date"])  
# Добавление столбца 'group' со значением "men" в DataFrame df_men для идентификации данных как относящихся к мужским матчам
df_men["group"] = "men"

# Добавление столбца 'group' со значением "women" в DataFrame df_women для идентификации данных как относящихся к женским матчам
df_women["group"] = "women"

# Вычисление общего количества забитых голов в каждом матче в df_men и сохранение результата в новом столбце 'goals_scored'
df_men["goals_scored"] = df_men["home_score"] + df_men["away_score"]

# Аналогичное вычисление общего количества забитых голов в каждом матче в df_women и сохранение в столбце 'goals_scored'
df_women["goals_scored"] = df_women["home_score"] + df_women["away_score"]
df_women.tournament.value_counts()
df_men.tournament.value_counts()
# Фильтрация данных в DataFrame df_women для выбора матчей, которые относятся к турниру 'FIFA World Cup'
# и прошли после указанной даты ('2002-01-01'). Результат сохраняется в новый DataFrame df_women_fifa
df_women_fifa = df_women[(df_women['tournament'] == 'FIFA World Cup') & (df_women['date'] > '2002-01-01')]

# Отображение содержимого DataFrame df_women_fifa для проверки или дальнейшего анализа
df_women_fifa
# Фильтрация данных в DataFrame df_men для выбора матчей, которые относятся к турниру 'FIFA World Cup'
# и прошли после указанной даты ('2002-01-01'). Результат сохраняется в новый DataFrame df_men_fifa
df_men_fifa = df_men[(df_men['tournament'] == 'FIFA World Cup') & (df_men['date'] > '2002-01-01')]

# Отображение содержимого DataFrame df_men_fifa для проверки или дальнейшего анализа
df_men_fifa
# Создание гистограммы для проверки распределения количества забитых голов в столбце 'goals_scored'
plt.hist(df_men_fifa['goals_scored'], bins=20, color='blue', alpha=0.7)
plt.title('Распределение голов мужчин на чемпионатах мира')  # Заголовок гистограммы
plt.xlabel('Голов Забито')  # Подпись оси X
plt.ylabel('Частота')       # Подпись оси Y
plt.show()                   # Отображение гистограммы

# Проведение теста Шапиро-Уилка для проверки нормальности распределения данных в столбце 'goals_scored'
shapiro_test = stats.shapiro(df_men_fifa['goals_scored'])
shapiro_test
# Создание гистограммы для проверки распределения количества забитых голов в столбце 'goals_scored'
plt.hist(df_women_fifa['goals_scored'], bins=20, color='blue', alpha=0.7)
plt.title('Распределение голов женщин на чемпионатах мира')  # Заголовок гистограммы
plt.xlabel('Голов Забито')  # Подпись оси X
plt.ylabel('Частота')       # Подпись оси Y
plt.show()                   # Отображение гистограммы

# Проведение теста Шапиро-Уилка для проверки нормальности распределения данных в столбце 'goals_scored'
shapiro_test = stats.shapiro(df_women_fifa['goals_scored'])
shapiro_test
# Объединение двух датафреймов: df_men_fifa и df_women_fifa в один датафрейм 'both'
# axis=0 указывает на объединение по строкам (вертикальное объединение)
# ignore_index=True гарантирует, что индексы в результирующем датафрейме будут переназначены, обеспечивая непрерывную последовательность
both = pd.concat([df_men_fifa, df_women_fifa], axis=0, ignore_index=True)