如何按年份统计展示预订订单的已入住、取消对应布尔值结果
问题解决步骤
1. 调整统计输出
你原本的pd.crosstab逻辑无误,仅需补充列名重命名即可得到易读的统计结果:
import pandas as pd # 生成交叉统计结果 year_cancel_stat = pd.crosstab( index=df["arrival_date_year"], columns=df["is_canceled"], margins=True, margins_name="总订单数" ).rename( columns={0: "已入住", 1: "已取消"}, index=lambda x: f"{x}年" if isinstance(x, int) else x ) # 打印统计结果 print(year_cancel_stat)
运行后会直接输出每一年的已入住、已取消订单量,以及对应年份的总订单量、所有年份的全局汇总数据。
2. 绘制状态对比图
如果需要可视化对比结果,可以用如下代码生成分组柱状图:
import matplotlib.pyplot as plt # 过滤掉全局汇总行,仅用各年份数据绘图 plot_df = year_cancel_stat.drop("总订单数", axis=0) # 绘制分组柱状图 plot_df.plot( kind="bar", figsize=(9, 5), color=["#1f77b4", "#ff7f0e"] ) plt.title("各年份预订订单状态分布") plt.xlabel("入住年份") plt.ylabel("订单数量") plt.xticks(rotation=0) plt.legend(title="订单状态") plt.grid(axis="y", alpha=0.3) plt.tight_layout() plt.show()
如果需要展示各年份的取消/入住占比,仅需在plot参数中增加stacked=True即可生成堆叠柱状图。
内容的提问来源于stack exchange,提问作者Charasvara Cheerasemanont
相关产品推荐
相关产品推荐

