足球- 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 - 真/假栏,表示比赛是否在中立场地进行

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

谁是有史以来最好的球队

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

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


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


哪些球队喜欢相互比赛


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


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


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

数据处理

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()

总结

以上就是今天分享的内容

相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
208 0
|
28天前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
1月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第33天】本文将介绍如何使用Python编程语言进行数据分析和可视化。我们将从数据清洗开始,然后进行数据探索性分析,最后使用matplotlib和seaborn库进行数据可视化。通过阅读本文,你将学会如何运用Python进行数据处理和可视化展示。
|
2月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据处理与可视化——以气温数据分析为例
【10月更文挑战第12天】使用Python进行数据处理与可视化——以气温数据分析为例
332 0
|
2月前
|
数据采集 数据可视化 数据挖掘
Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
【10月更文挑战第3天】Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
142 0
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
63 0
|
3月前
|
机器学习/深度学习 存储 数据可视化
数据分析和可视化
数据分析和可视化
|
4月前
|
存储 编解码 数据可视化
Visium HD空间数据分析、可视化以及整合 (2)
Visium HD空间数据分析、可视化以及整合 (2)
119 3
Visium HD空间数据分析、可视化以及整合 (2)
|
3月前
|
数据采集 传感器 数据可视化
利用Python进行数据分析与可视化
【9月更文挑战第11天】在数字化时代,数据已成为企业决策和科学研究的关键。本文将引导读者了解如何使用Python这一强大的工具进行数据分析和可视化,帮助初学者理解数据处理的流程,并掌握基本的可视化技术。通过实际案例,我们将展示如何从原始数据中提取信息,进行清洗、处理,最终以图形方式展现结果,使复杂的数据变得直观易懂。
下一篇
DataWorks