足球- EDA的历史数据分析并可视化

前言:

在足球世界中,背后隐藏着丰富的数据宝藏,记录着球队的兴衰、球员的崛起与衰落,以及比赛瞬息万变的情境。随着数据科学的崛起,越来越多的数据被收集并变得容易访问,为足球爱好者和专业分析师提供了深入了解这个美妙运动的机会。

在本篇技术博客中,我们将追溯足球的历史,深入探索足球比赛的背后,运用探索性数据分析(Exploratory Data Analysis,简称EDA)的方法来揭示数据的潜在规律。我们将通过挖掘比赛数据、球队表现和球员统计等方面的信息,为读者呈现足球世界独特而引人入胜的数据画卷。

跟随我们一同踏上这场数据之旅,发现数字化背后隐藏的足球故事,以及如何通过数据分析和可视化工具揭示足球运动的内在奥秘。

背景

该数据集包括从1872年第一场正式比赛到2023年的44,341场国际足球比赛的结果。比赛范围从FIFA世界杯到FIFI Wild杯再到常规的友谊赛。这些比赛严格来说是男子国际比赛,数据不包括奥运会或至少有一支球队是国家B队、U-23或联赛精选队的比赛。

EDA

EDA是Exploratory Data Analysis(探索性数据分析)的缩写。EDA是数据分析的一种方法,其主要目的是通过可视化、图表和统计工具来探索数据集,以了解数据的结构、特征和潜在模式。EDA的目标不是进行深入的模型建立或验证假设,而是帮助分析人员在开始正式分析之前对数据有一个初步的认识。

在EDA过程中,分析人员通常会执行以下任务:

数据摘要: 对数据进行基本的统计摘要,包括均值、中位数、标准差、最小值、最大值等,以了解数据的分布和范围。

数据可视化: 使用图表、图形和可视化工具展示数据的分布、趋势和关系。常见的可视化手段包括直方图、散点图、箱线图等。

缺失值和异常值处理: 检测和处理数据中的缺失值和异常值,以确保数据的质量。

相关性分析: 研究不同变量之间的关系,包括相关性和因果关系。这有助于理解数据中的模式和趋势。

特征工程: 探索和处理数据中的特征,可能包括创建新的特征、变换变量等,以提高后续建模的效果。

数据分布检查: 研究数据的分布,了解它是否符合假设,例如是否呈正态分布。

EDA是数据科学和统计学中的重要步骤,它有助于形成对数据的直观理解,为进一步的分析和建模提供基础。通过EDA,分析人员能够发现数据中的有趣模式、趋势或异常,从而更好地理解数据集的内在特性。

数据介绍

results.csv包括以下列:

  • date - 比赛日期
  • home_team - 主队的名字
  • away_team - 客场球队的名称
  • home_score - 全职主队得分,包括加时赛,不包括点球大战
  • away_score - 全职客队得分,包括加时赛,不包括点球大战
  • tournament - 锦标赛的名称
  • city - 比赛所在城市/城镇/行政单位的名称
  • country -比赛所在国家的名称
  • neutral - 真/假栏,表示比赛是否在中立场地进行

探索数据时需要遵循的一些方向:

谁是有史以来最好的球队

哪些球队统治了不同时代的足球

古往今来,国际足球有什么趋势——主场优势、总进球数、球队实力分布等

我们能从足球比赛中对地缘政治说些什么吗——国家的数量是如何变化的

哪些球队喜欢相互比赛

哪些国家主办了最多自己没有参加的比赛

举办大型赛事对一个国家在比赛中的胜算有多大帮助

哪些球队在友谊赛和友谊赛中最积极——这对他们有帮助还是有伤害

数据处理

import numpy as np 
import pandas as pd 
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

导入库

import matplotlib.pyplot as plt
import seaborn as sns

数据探索

df = pd.read_csv('/kaggle/input/international-football-results-from-1872-to-2017/results.csv')
df.head()

在这里插入图片描述

print(f"This Dataset Includes {df.shape}")

在这里插入图片描述

df.info()

在这里插入图片描述

df.describe()

在这里插入图片描述

df.describe(include=object)

在这里插入图片描述

df.isna().sum()

在这里插入图片描述

将“日期”列转换为日期时间类型

df['date'] = pd.to_datetime(df['date'])

数据可视化

赛事分析

plt.figure(figsize=(20, 12))
sns.countplot(x='tournament', data=df)
plt.xticks(rotation=90)
plt.title('Tournament Distribution')
plt.xlabel('Tournament')
plt.ylabel('Count')
plt.tight_layout()
plt.show()

在这里插入图片描述

主客场比分

plt.figure(figsize=(12, 8))
plt.subplot(1, 2, 1)
sns.histplot(df['home_score'], bins=20, kde=True)
plt.title('Distribution of Home Scores')
plt.xlabel('Home Score')
plt.ylabel('Frequency')
#Setting limit for first plot
plt.ylim(0, 40000)


plt.subplot(1, 2, 2)
sns.histplot(df['away_score'], bins=20, kde=True)
plt.title('Distribution of Away Scores')
plt.xlabel('Away Score')
plt.ylabel('Frequency')
# Share y-axis between subplots
plt.ylim(0, 40000)

plt.tight_layout()
plt.show()

在这里插入图片描述

相关性分析

correlation_matrix = df.corr()
plt.figure(figsize=(10, 6))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Matrix')
plt.show()

在这里插入图片描述

时间序列分析

# 为年份创建新列
df['year'] = df['date'].dt.year

#时间序列分析
plt.figure(figsize=(10, 6))
sns.lineplot(x='year', y='home_score', data=df, label='Home Score')
sns.lineplot(x='year', y='away_score', data=df, label='Away Score')
plt.title('Trends in Home and Away Scores over Time')
plt.xlabel('Year')
plt.ylabel('Score')
plt.legend()
plt.tight_layout()
plt.show()

在这里插入图片描述

总结

足球不仅仅是一项运动,更是一门充满激情和策略的艺术。通过对历史数据的深入分析,我们揭示了足球世界的一些惊人之处,发现了隐藏在数字背后的精妙战术和球队的崛起。探索性数据分析的过程不仅让我们更好地理解了足球运动,也为未来的发展提供了有力的参考。

在这个数字化时代,数据是我们理解和改进的关键。通过对足球历史数据的深入挖掘,我们能够更深刻地理解这项运动的本质,同时也为球队、球员和球迷们提供了更多的洞察。足球的魅力在于其无法预测的变数,而数据分析正是帮助我们理解和解读这些变数的有力工具。

愿这篇博客成为你深入足球数据分析领域的起点,激发更多关于足球的好奇心,并让你对这项运动的热爱更上一层楼。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老虎也淘气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值