You need to enable JavaScript to run this app. Python基于奥运选手DataFrame绘制历年女性参赛人数趋势图受阻
优惠活动
大模型
产品
解决方案
定价
更多

Python基于奥运选手DataFrame绘制历年女性参赛人数趋势图受阻

代码错误原因定位
  • 直接使用布尔判断结果z = df['Sex'] == 'F'作为绘图y轴,该序列对应每一条原始参赛记录的性别判断结果,值只有0(非女)/1(女),完全没有按年份汇总同一年的女性参赛总人数,最终绘制的是逐行记录的零散点位,和预期的逐年规模趋势完全不符
  • 缺失核心的分组聚合步骤:没有将散落在不同行的同一年参赛记录做汇总统计,数据维度和绘图要求不匹配
  • 注释掉的备用绘图代码存在多处问题:写的x轴列名是Years,和数据集实际列名Year不一致;同时选用直方图kind='hist'也不适合展示时间维度的连续变化趋势
可直接运行的修正实现

核心实现逻辑

  1. 从原始数据中筛选所有女性参赛的记录
  2. 按参赛年份做分组,统计每个年份对应的女性参赛总规模
  3. 将聚合完成的「年份-人数」对应关系传入绘图函数

基于Matplotlib的静态趋势图代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

# 配置参数避免大数据量绘图卡顿
mpl.rcParams['agg.path.chunksize'] = 10000

# 加载本地数据集
df = pd.read_csv("athlete_events.csv")

# 按年份统计女性参赛规模
# 若需要统计当年独立的女性运动员数(而非含项目重复的参赛记录数),可将.size()替换为['Name'].nunique()
female_year_stats = df[df['Sex'] == 'F'].groupby('Year', as_index=False).size()
female_year_stats = female_year_stats.rename(columns={'size': 'FemaleCount'})

# 绘制趋势图
plt.plot(
    female_year_stats['Year'],
    female_year_stats['FemaleCount'],
    color='red',
    marker='o'
)
plt.xlabel('参赛年份', fontsize=14)
plt.ylabel('当年女性参赛人数', fontsize=14)
plt.grid(True)
plt.show()

基于已导入Plotly的交互图实现

如果需要可缩放、悬浮查看具体数值的交互图,可以直接复用前面已经聚合好的统计结果:

import plotly.express as px

fig = px.line(
    female_year_stats,
    x='Year',
    y='FemaleCount',
    title='历届奥运会女性参赛人数变化趋势',
    markers=True
)
fig.show()

内容的提问来源于stack exchange,提问作者Santiago Ramirez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 20:36:11