python案例统计赛季累计数据对比如何?

wen python案例 9

Python 实现赛季累计数据对比统计案例

下面我用一个完整的案例,展示如何用 Python 统计并对比多个赛季的累计数据(以 NBA 篮球数据为例)。

python案例统计赛季累计数据对比如何?

场景说明

假设我们要对比 3 个赛季 中几位球员的累计数据(得分、篮板、助攻),并可视化对比。


完整代码实现

基础数据准备与统计

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 构造模拟数据:球员 × 赛季 × 多场比赛
np.random.seed(42)
players = ['库里', '詹姆斯', '杜兰特', '字母哥']
seasons = ['2022-23', '2023-24', '2024-25']
records = []
for player in players:
    for season in seasons:
        # 每个赛季 10 场比赛
        for game in range(10):
            records.append({
                'player': player,
                'season': season,
                'points': np.random.randint(15, 40),
                'rebounds': np.random.randint(3, 15),
                'assists': np.random.randint(2, 12),
            })
df = pd.DataFrame(records)
print(df.head())

按赛季累计统计

# 按球员 + 赛季分组累计
season_stats = df.groupby(['player', 'season']).agg(
    总得分=('points', 'sum'),
    总篮板=('rebounds', 'sum'),
    总助攻=('assists', 'sum'),
    场均得分=('points', 'mean'),
).round(2).reset_index()
print(season_stats)

输出示例:

   player   season  总得分  总篮板  总助攻  场均得分
0    库里  2022-23   268    88     72    26.8
1    库里  2023-24   275    91     68    27.5
...

多赛季对比(透视表)

# 每个球员在不同赛季的累计得分对比
pivot_points = season_stats.pivot(
    index='player', columns='season', values='总得分'
)
print(pivot_points)
# 计算赛季间增长
pivot_points['同比变化'] = (
    pivot_points['2024-25'] - pivot_points['2023-24']
)
print(pivot_points)

可视化对比

fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 图1:各球员赛季累计得分柱状图
pivot_points[seasons].plot(
    kind='bar', ax=axes[0], rot=0, colormap='viridis'
)
axes[0].set_title('各球员赛季累计得分对比')
axes[0].set_ylabel('累计得分')
axes[0].legend(title='赛季')
# 图2:各球员场均得分折线图
pivot_avg = season_stats.pivot(
    index='season', columns='player', values='场均得分'
)
pivot_avg.plot(kind='line', marker='o', ax=axes[1], colormap='tab10')
axes[1].set_title('球员场均得分趋势')
axes[1].set_ylabel('场均得分')
axes[1].grid(alpha=0.3)
plt.tight_layout()
plt.savefig('season_compare.png', dpi=120)
plt.show()

进阶:多维度综合对比

# 计算综合贡献值 = 得分 + 篮板*1.2 + 助攻*1.5
df['综合贡献'] = df['points'] + df['rebounds'] * 1.2 + df['assists'] * 1.5
summary = df.groupby(['player', 'season']).agg(
    累计综合贡献=('综合贡献', 'sum'),
    场均贡献=('综合贡献', 'mean'),
).round(1).reset_index()
# 找出每个球员表现最好的赛季
best_season = summary.loc[
    summary.groupby('player')['累计综合贡献'].idxmax()
]
print("\n各球员最佳赛季:")
print(best_season)

核心分析思路

步骤 方法 目的
数据分组 groupby(['player','season']) 按维度累计
聚合统计 agg(sum/mean/max) 计算赛季总量
透视对比 pivot() 横向对比多赛季
变化计算 差值/增长率 反映趋势
可视化 matplotlib/seaborn 直观呈现

常见扩展方向

  1. 接入真实数据:用 nba_api 或爬虫获取真实赛季数据
  2. 增长率分析:计算环比、同比增长率
  3. 排名对比:rank() 给出每赛季球员排名
  4. 交互可视化:用 plotly 做可交互对比图
  5. 赛季对比雷达图:多维度(得分/篮板/助攻/命中率)对比

如果你有具体的数据来源(CSV、数据库、API)或想对比的维度(如球队、联赛),告诉我,我可以帮你定制完整方案。

抱歉,评论功能暂时关闭!