如何用Python的Pandas绘制特定年份数据的箱线图?
嘿,别担心,刚上手Pandas遇到这种需求很正常!我来一步步带你搞定针对特定年份/赛季绘制箱线图的操作,保证清晰好懂~
第一步:先把需要的工具库导进来
我们需要用Pandas处理数据,用Seaborn(或者Matplotlib)来画箱线图——Seaborn画出来的图更美观,代码也更简洁,所以优先推荐它:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt
第二步:加载你的数据集并确认结构
先把数据加载进来,假设你的数据是CSV格式(如果是Excel就用pd.read_excel()),然后看看前几行确认年份/赛季列的格式:
# 替换成你的数据集路径 df = pd.read_csv('your_data.csv') # 查看数据结构,确认年份列的名称(比如叫season、year等) print(df.head())
第三步:筛选你需要的特定年份/赛季数据
这里分两种常见情况:
- 如果你的年份是字符串格式(比如直接是
"2000-01"这种赛季格式),直接用isin()筛选目标赛季:
# 定义你要分析的目标赛季 target_seasons = ['2000-01', '2006-07'] # 筛选出对应的数据 filtered_df = df[df['season'].isin(target_seasons)]
- 如果你的年份是数值格式(比如只有2000、2006这种单独的年份),可以先把它转换成赛季格式再筛选:
# 把年份转换成"YYYY-YY"的赛季格式 df['season'] = df['year'].apply(lambda x: f"{x}-{str(x+1)[-2:]}") # 再筛选目标赛季 target_seasons = ['2000-01', '2006-07'] filtered_df = df[df['season'].isin(target_seasons)]
如果只需要单个赛季(比如仅2000-01),直接用filtered_df = df[df['season'] == '2000-01']就行。
第四步:绘制箱线图
现在用筛选后的数据画图,假设你要分析的数值列叫score(替换成你实际的列名,比如销售额、成绩等):
# 设置绘图风格,让图更好看 sns.set_style("whitegrid") # 创建画布,设置大小 plt.figure(figsize=(8, 6)) # 绘制箱线图:x轴是赛季,y轴是你要分析的数值 sns.boxplot(x='season', y='score', data=filtered_df) # 添加标题和坐标轴标签 plt.title('数值分布对比(2000-01 vs 2006-07)', fontsize=14) plt.xlabel('赛季', fontsize=12) plt.ylabel('得分/数值', fontsize=12) # 显示图形 plt.show()
小提示
- 如果你的年份列是日期类型(datetime),可以先提取年份再处理:
df['year'] = df['date_column'].dt.year
- 如果筛选后数据为空,检查一下你的赛季字符串和数据里的格式是否完全一致(比如有没有空格、大小写问题)
如果你的数据集结构和示例不一样,只需要把代码里的列名替换成你实际的列名就好,有细节问题随时问~
内容的提问来源于stack exchange,提问作者paddy
相关产品推荐
相关产品推荐

