如何在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
相关产品推荐
相关产品推荐

