football.json数据可视化:用Python和JavaScript创建足球数据图表

football.json数据可视化:用Python和JavaScript创建足球数据图表

【免费下载链接】football.json Free open public domain football data in JSON incl. English Premier League, Bundesliga, Primera División, Serie A and more - No API key required ;-) 【免费下载链接】football.json 项目地址: https://gitcode.com/gh_mirrors/fo/football.json

football.json是一个免费开源的足球数据项目,提供包括英超、德甲、西甲、意甲等多个联赛的JSON格式数据,无需API密钥即可使用。本文将介绍如何利用Python和JavaScript工具,将这些足球数据转化为直观的可视化图表,帮助球迷和数据爱好者更好地理解比赛结果和联赛趋势。

一、获取football.json数据

首先需要获取项目数据,你可以通过以下命令克隆仓库:

git clone https://gitcode.com/gh_mirrors/fo/football.json

项目数据按赛季和联赛组织,例如2023-24赛季英超数据位于2023-24/en.1.json,包含完整的赛事信息,包括比赛轮次、日期、时间、球队名称和比分(含半场和全场比分)。

二、Python可视化实现

1. 数据读取与处理

使用Python的json模块读取数据文件,以2023-24赛季英超数据为例:

import json

with open('2023-24/en.1.json', 'r') as f:
    data = json.load(f)

# 提取所有比赛结果
matches = data['matches']

2. 常用可视化图表

球队胜负分布饼图

使用matplotlib创建球队胜负分布饼图,直观展示特定球队的胜负平比例:

import matplotlib.pyplot as plt

# 统计阿森纳队的比赛结果
team = "Arsenal FC"
results = []

for match in matches:
    if match['team1'] == team:
        if match['score']['ft'][0] > match['score']['ft'][1]:
            results.append('胜')
        elif match['score']['ft'][0] < match['score']['ft'][1]:
            results.append('负')
        else:
            results.append('平')
    elif match['team2'] == team:
        if match['score']['ft'][1] > match['score']['ft'][0]:
            results.append('胜')
        elif match['score']['ft'][1] < match['score']['ft'][0]:
            results.append('负')
        else:
            results.append('平')

# 绘制饼图
labels = ['胜', '负', '平']
sizes = [results.count('胜'), results.count('负'), results.count('平')]
colors = ['#4CAF50', '#F44336', '#FFC107']

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.title(f'{team} 2023/24赛季胜负分布')
plt.show()
联赛进球数趋势图

使用pandasseaborn创建联赛进球数趋势图,分析整个赛季的进球变化:

import pandas as pd
import seaborn as sns

# 提取比赛日期和总进球数
df = pd.DataFrame([
    {
        'date': match['date'],
        'goals': match['score']['ft'][0] + match['score']['ft'][1]
    } for match in matches
])

# 转换日期格式并按日期排序
df['date'] = pd.to_datetime(df['date'])
df = df.sort_values('date')

# 绘制折线图
plt.figure(figsize=(12, 6))
sns.lineplot(data=df, x='date', y='goals')
plt.title('2023/24赛季英超联赛进球数趋势')
plt.xlabel('日期')
plt.ylabel('总进球数')
plt.grid(True)
plt.show()

三、JavaScript可视化实现

1. 使用Chart.js创建交互式图表

Chart.js是一个简单灵活的JavaScript图表库,适合在网页中展示足球数据。首先引入Chart.js库,然后读取JSON数据并创建图表:

<!DOCTYPE html>
<html>
<head>
    <title>足球数据可视化</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <canvas id="goalsChart" width="800" height="400"></canvas>

    <script>
        // 从文件加载数据(实际应用中可能需要通过AJAX请求)
        fetch('2023-24/en.1.json')
            .then(response => response.json())
            .then(data => {
                // 统计各轮次进球数
                const rounds = {};
                data.matches.forEach(match => {
                    const round = match.round.replace('Matchday ', '');
                    const goals = match.score.ft[0] + match.score.ft[1];
                    if (!rounds[round]) rounds[round] = 0;
                    rounds[round] += goals;
                });

                // 准备图表数据
                const labels = Object.keys(rounds).sort((a, b) => a - b);
                const values = labels.map(round => rounds[round]);

                // 创建柱状图
                new Chart(document.getElementById('goalsChart'), {
                    type: 'bar',
                    data: {
                        labels: labels,
                        datasets: [{
                            label: '每轮总进球数',
                            data: values,
                            backgroundColor: 'rgba(54, 162, 235, 0.5)',
                            borderColor: 'rgba(54, 162, 235, 1)',
                            borderWidth: 1
                        }]
                    },
                    options: {
                        responsive: true,
                        scales: {
                            y: {
                                beginAtZero: true,
                                title: {
                                    display: true,
                                    text: '总进球数'
                                }
                            },
                            x: {
                                title: {
                                    display: true,
                                    text: '比赛轮次'
                                }
                            }
                        },
                        title: {
                            display: true,
                            text: '2023/24赛季英超各轮次进球数统计'
                        }
                    }
                });
            });
    </script>
</body>
</html>

2. 数据文件路径说明

项目中的数据文件按赛季和联赛代码组织,例如:

  • 2022-23赛季英超数据:2022-23/en.1.json
  • 2023-24赛季德甲数据:2023-24/de.1.json
  • 2023-24赛季西甲数据:2023-24/es.1.json

每个JSON文件包含该赛季对应联赛的所有比赛信息,可直接用于数据可视化处理。

四、实用可视化技巧

  1. 数据筛选:根据需要筛选特定球队、特定时间段的数据,例如只分析"Manchester City FC"的主场比赛结果。

  2. 多图表对比:将不同赛季的数据可视化结果放在一起对比,分析联赛趋势变化。

  3. 交互式探索:使用JavaScript实现交互式图表,允许用户点击查看具体比赛细节。

  4. 数据聚合:对数据进行聚合分析,如计算各球队的场均进球数、最大连胜纪录等。

通过以上方法,你可以将football.json中的原始数据转化为直观易懂的可视化图表,深入了解足球比赛数据背后的规律和故事。无论是足球爱好者还是数据分析师,都能从中获得有价值的 insights。

【免费下载链接】football.json Free open public domain football data in JSON incl. English Premier League, Bundesliga, Primera División, Serie A and more - No API key required ;-) 【免费下载链接】football.json 项目地址: https://gitcode.com/gh_mirrors/fo/football.json

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值