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

场景说明
假设我们要对比 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 | 直观呈现 |
常见扩展方向
- 接入真实数据:用
nba_api或爬虫获取真实赛季数据 - 增长率分析:计算环比、同比增长率
- 排名对比:
rank()给出每赛季球员排名 - 交互可视化:用
plotly做可交互对比图 - 赛季对比雷达图:多维度(得分/篮板/助攻/命中率)对比
如果你有具体的数据来源(CSV、数据库、API)或想对比的维度(如球队、联赛),告诉我,我可以帮你定制完整方案。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播