背景
该数据集包括从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 - 真/假栏,表示比赛是否在中立场地进行
探索数据时需要遵循的一些方向:
谁是有史以来最好的球队
哪些球队统治了不同时代的足球
古往今来,国际足球有什么趋势——主场优势、总进球数、球队实力分布等
我们能从足球比赛中对地缘政治说些什么吗——国家的数量是如何变化的
哪些球队喜欢相互比赛
哪些国家主办了最多自己没有参加的比赛
举办大型赛事对一个国家在比赛中的胜算有多大帮助
哪些球队在友谊赛和友谊赛中最积极——这对他们有帮助还是有伤害
数据处理
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() • 1
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()
总结
以上就是今天分享的内容