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

如何在Pandas中将年份转为十年区间并进行营收分析绘图

处理Fortune企业营收数据:按十年区间统计Top5企业并可视化
  • 生成十年区间列
    先给原数据新增一列,把年份转换成1950-1959这类的十年区间格式:

    # 先计算十年起始年份(比如1953→1950)
    df_Fortune['Decade_Start'] = (df_Fortune['Year'] // 10) * 10
    # 格式化为"XXXX-XXXX"的区间字符串
    df_Fortune['Decade'] = df_Fortune['Decade_Start'].apply(lambda x: f"{x}-{x+9}")
    # 不需要中间列的话可以删除
    df_Fortune.drop('Decade_Start', axis=1, inplace=True)
    
  • 按十年区间+企业分组,筛选Top5营收企业
    先按十年区间和企业分组计算总营收,再给每个区间的企业按营收降序排序,取前5:

    # 按十年区间和企业分组,统计总营收
    grouped = df_Fortune.groupby(['Decade', 'Company'])['Revenue (in millions)'].sum().reset_index()
    
    # 提取每个十年区间的Top5营收企业
    top5_by_decade = grouped.groupby('Decade').apply(
        lambda x: x.sort_values('Revenue (in millions)', ascending=False).head(5)
    ).reset_index(drop=True)
    
  • 用Seaborn绘制可视化图
    用横向条形图展示各十年区间Top5企业的营收情况,更便于查看企业排名:

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 设置绘图风格
    sns.set_style("whitegrid")
    plt.figure(figsize=(12, 10))
    
    # 绘制横向条形图
    sns.barplot(
        data=top5_by_decade,
        x='Revenue (in millions)',
        y='Company',
        hue='Decade',
        palette='viridis'
    )
    
    # 添加图表标题与标签
    plt.title('各十年区间营收Top5企业', fontsize=14)
    plt.xlabel('总营收(百万美元)', fontsize=12)
    plt.ylabel('企业名称', fontsize=12)
    plt.legend(title='十年区间', bbox_to_anchor=(1.05, 1), loc='upper left')
    
    plt.tight_layout()
    plt.show()
    
  • 补充说明

    • 如果你的数据中同一年同企业有多条记录,分组求和步骤是必要的;若每条数据都是唯一的「年份+企业」组合,可直接生成区间列再筛选Top5。
    • 可视化样式可按需调整,比如用seaborn.FacetGrid制作分面图,给每个十年区间单独展示,避免企业名称重叠。

内容的提问来源于stack exchange,提问作者usama hussain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:01:37