You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

分组场景下如何筛选指定列最大值并实现结果可视化

代码截图

实现步骤

整个实现分两步:先提取每个学期分组下票房最高的电影记录,再基于结果做可视化,以下是基于Python数据处理常用栈(pandas + matplotlib/seaborn)的实现代码:

1. 提取各学期最高票房电影记录

两种实现方式按需选择即可:

  • 方式1:用groupby搭配idxmax,直接取每个分组票房最大值对应的原始行,逻辑最简洁
import pandas as pd

# 替换成你自己的数据集变量名、列名即可
# movie_df 是你的原始电影数据集
# semester 是存储学期维度的列名
# revenue 是存储票房数值的列名
# title 是存储电影名称的列名
max_revenue_index = movie_df.groupby('semester')['revenue'].idxmax()
top_movie_each_sem = movie_df.loc[max_revenue_index].sort_values('semester').reset_index(drop=True)
  • 方式2:先排序再去重,适合需要处理同分组同最高票房多记录的场景,会保留排序后第一条最高票房记录
top_movie_each_sem = movie_df.sort_values(
    by=['semester', 'revenue'],
    ascending=[True, False] # 学期升序、同个学期内票房降序
).drop_duplicates(subset='semester', keep='first').reset_index(drop=True)

可以通过打印核心字段校验结果是否符合预期:

print(top_movie_each_sem[['semester', 'title', 'revenue']])

注意:如果输出结果里学期的排序不符合时间先后逻辑,可以先把学期列转成pandas有序分类类型,指定你需要的顺序即可:

# 替换成你自己数据集里的学期值顺序
semester_rank = ['2019春', '2019秋', '2020春', '2020秋', '2021春']
movie_df['semester'] = pd.Categorical(movie_df['semester'], categories=semester_rank, ordered=True)

2. 结果可视化

最直观的呈现方式是横向条形图,每个学期对应一条最高票房记录,直接标注电影名和票房数值:

import matplotlib.pyplot as plt
import seaborn as sns

# 画布基础配置
plt.figure(figsize=(12, 7))
sns.set_style("whitegrid")

# 绘制横向条形图,避免长电影名重叠
chart = sns.barplot(
    data=top_movie_each_sem,
    x='revenue',
    y='semester',
    palette='mako'
)

# 为每个条形添加标注:显示电影名+换算单位后的票房
for idx, row in top_movie_each_sem.iterrows():
    chart.text(
        x=row['revenue'] * 1.01,
        y=idx,
        s=f"{row['title']} | {round(row['revenue']/1e8, 2)}亿",
        va='center'
    )

# 设置图表标签
plt.title('各学期最高票房电影统计', fontsize=15, pad=20)
plt.xlabel('票房(单位:元)', fontsize=12)
plt.ylabel('学期', fontsize=12)
plt.tight_layout()
plt.show()

运行后就能得到每个学期对应最高票房电影的条形图,数值和电影名对应清晰,可根据自己的展示需求调整配色、单位换算规则。

内容的提问来源于stack exchange,提问作者Gina Orellana C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:03:19