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

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

背景

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

数据介绍

results.csv包括以下列:

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

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

谁是有史以来最好的球队

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

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

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

哪些球队喜欢相互比赛

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

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

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

数据处理

python 复制代码
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))

导入库

python 复制代码
import matplotlib.pyplot as plt
import seaborn as sns

数据探索

python 复制代码
df = pd.read_csv('/kaggle/input/international-football-results-from-1872-to-2017/results.csv')
df.head()
python 复制代码
print(f"This Dataset Includes {df.shape}")
python 复制代码
df.info()
python 复制代码
df.describe()
python 复制代码
df.describe(include=object)
python 复制代码
df.isna().sum()

将"日期"列转换为日期时间类型

python 复制代码
df['date'] = pd.to_datetime(df['date'])

数据可视化

赛事分析

python 复制代码
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()

主客场比分

python 复制代码
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()

相关性分析

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

时间序列分析

python 复制代码
# 为年份创建新列
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()

总结

以上就是今天分享的内容

相关推荐
hqyjzsb1 小时前
深度洞察人性需求!拆解传统心理咨询升级AI智慧辅导师数智工作流
人工智能·深度学习·学习·数据挖掘·aigc·学习方法·业界资讯
问组生物1 小时前
在线绘制带连线的配体-受体联合热图
数据分析·数据可视化·论文插图·科研绘图·科学科普·基因表达·联合热图
Aloudata1 小时前
如何通过 NoETL 指标平台根治跨业务口径混乱
数据分析·etl·指标平台·指标口径
小陈工2 小时前
Python Web开发入门(十八):跨域问题解决方案——从“为什么我的请求被拦了“到“我让浏览器乖乖听话“
开发语言·python·机器学习·架构·数据挖掘·回归·状态模式
余丁,微生信4 小时前
在线绘制饼+弧线图以展示venn交集情况
数据分析·数据可视化·论文插图·生信分析·科学科普·文恩图·基因表达
Omics Pro4 小时前
马普所:生命蛋白质宇宙聚类
数据库·人工智能·算法·机器学习·数据挖掘·aigc·聚类
编程界一哥5 小时前
星空提示缺少组件解决方法:安全下载与一键修复工具对比
数据挖掘
没有梦想的咸鱼185-1037-16635 小时前
AI大模型支持下的顶刊绘图|散点图、气泡图、柱状图、热力图、柱状图、热力图、箱线图、热力图、云雨图、韦恩图、瀑布图、神经网络图、时间序列或分布展示
人工智能·神经网络·arcgis·信息可视化·数据分析·r语言·ai写作
李昊哲小课6 小时前
Pandas数据分析 - 第十一章:数据可视化
信息可视化·数据挖掘·数据分析·pandas·matplotlib
编程界一哥6 小时前
星空运行库缺失一键修复:2026最新工具与手动安装步骤
数据挖掘