出行:全社会跨区域人员流动量预计超15亿人次,日均超3亿人次,创历史同期新高。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from matplotlib.patches import FancyBboxPatch

# 设置中文字体和样式
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sns.set_style("whitegrid")

# ========== 1. 人员流动数据 ==========
flow_data = {
    "指标": ["2025年五一", "2026年五一", "创纪录幅度"],
    "跨区域流动量(亿人次)": [14.86, 15.20, 2.3],
    "日均流动量(亿人次)": [2.97, 3.04, 2.4]
}
df_flow = pd.DataFrame(flow_data)

# 创建流动量对比图
fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 左图:总流动量
ax1 = axes[0]
bars1 = ax1.bar(df_flow["指标"][:2], df_flow["跨区域流动量(亿人次)"][:2], 
                color=['#3498DB', '#E74C3C'], width=0.5)
ax1.set_ylabel("流动量 (亿人次)", fontsize=12)
ax1.set_title("全社会跨区域人员流动量对比", fontsize=14, fontweight='bold')
ax1.set_ylim(0, 18)
for bar, val in zip(bars1, df_flow["跨区域流动量(亿人次)"][:2]):
    ax1.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.2,
             f'{val}亿', ha='center', va='bottom', fontsize=11, fontweight='bold')

# 右图:日均流动量
ax2 = axes[1]
bars2 = ax2.bar(df_flow["指标"][:2], df_flow["日均流动量(亿人次)"][:2],
                color=['#3498DB', '#E74C3C'], width=0.5)
ax2.set_ylabel("日均流动量 (亿人次)", fontsize=12)
ax2.set_title("日均跨区域人员流动量对比", fontsize=14, fontweight='bold')
ax2.set_ylim(0, 3.5)
for bar, val in zip(bars2, df_flow["日均流动量(亿人次)"][:2]):
    ax2.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.05,
             f'{val}亿', ha='center', va='bottom', fontsize=11, fontweight='bold')

plt.tight_layout()
plt.show()

print("=" * 60)
print("📊 人员流动核心发现")
print("=" * 60)
print(f"• 2026年五一总流动量15.20亿人次,同比增加0.34亿人次 (+2.3%)")
print(f"• 日均流动量首次突破3亿人次大关,达3.04亿人次")
print(f"• 双双创下历史同期新高,出行意愿持续增强")

图4:日均跨区域人员流动量对比

📈 人员流动分析说明

  • • 总量创新高:15.20亿人次的跨区域流动,展现出中国消费市场的巨大韧性和活力
  • • 日均破3亿:意味着每天有超过全国1/5的人口在流动,出行已成为假期标配
  • • 增长虽缓但质升:增速仅为2.3%,但结合后续消费数据来看,“流量”正在转化为更高质量的“留量”

票房:五一档总票房突破7.5亿元,超过去年同期7.47亿元。

# ========== 2. 票房数据 ==========
box_data = {
    "年份": ["2025年", "2026年"],
    "五一档票房(亿元)": [7.47, 7.50],
    "同比增长(%)": [0, 0.4]
}
df_box = pd.DataFrame(box_data)

# 票房对比图
fig, ax = plt.subplots(figsize=(8, 6))
bars = ax.bar(df_box["年份"], df_box["五一档票房(亿元)"], 
              color=['#3498DB', '#E74C3C'], width=0.5)
ax.set_ylabel("票房 (亿元)", fontsize=12)
ax.set_title("五一档票房对比:微增0.4%创新高", fontsize=14, fontweight='bold')
ax.set_ylim(7, 7.8)

for bar, val, year in zip(bars, df_box["五一档票房(亿元)"], df_box["年份"]):
    ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.03,
            f'{val}亿元', ha='center', va='bottom', fontsize=11, fontweight='bold')
    if year == "2026年":
        ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() - 0.2,
                '▲ +0.4%', ha='center', va='top', fontsize=10, color='green')

plt.tight_layout()
plt.show()

print("\n" + "=" * 60)
print("🎬 票房核心发现")
print("=" * 60)
print(f"• 2026年五一档票房7.50亿元,微弱超过2025年的7.47亿元")
print(f"• 增速仅0.4%,显示电影市场进入存量竞争阶段")
print(f"• 票价惠民政策持续:平均票价36.8元,创近四年最低")

图5:五一档票房对比:微增0.4%创新高

🎬 票房分析说明

  • • 微幅增长:票房仅增长0.4%,与出行大盘15亿人次的火热形成对比
  • • 存量竞争:电影市场面临短视频、短剧、演唱会等替代娱乐方式的激烈竞争
  • • 价格战见效:平均票价下降至36.8元(创四年新低),以价换量策略稳住基本盘

消费:以旧换新带动销售额6292.7亿元,惠及8620.4万人次;重点商圈客流量、营业额同比分别增长5.0%、5.3%

# ========== 3. 以旧换新政策效果 ==========
policy_data = {
    "指标": ["带动销售额\n(亿元)", "惠及人次\n(万人次)"],
    "数值": [6292.7, 8620.4],
    "单位": ["亿元", "万人次"]
}
df_policy = pd.DataFrame(policy_data)

# 双轴图展示政策效果
fig, ax1 = plt.subplots(figsize=(10, 6))

# 销售额柱状图
color_sales = '#2ECC71'
bars = ax1.bar(df_policy["指标"][0], df_policy["数值"][0], 
               color=color_sales, width=0.4, label="带动销售额")
ax1.set_ylabel("带动销售额 (亿元)", color=color_sales, fontsize=12)
ax1.tick_params(axis='y', labelcolor=color_sales)

# 惠及人次柱状图(次坐标轴)
ax2 = ax1.twinx()
color_people = '#E74C3C'
ax2.bar(df_policy["指标"][1], df_policy["数值"][1], 
        color=color_people, width=0.4, label="惠及人次")
ax2.set_ylabel("惠及人次 (万人次)", color=color_people, fontsize=12)
ax2.tick_params(axis='y', labelcolor=color_people)

# 添加数值标签
ax1.text(0, df_policy["数值"][0] + 100, f'{df_policy["数值"][0]:.1f}亿元', 
         ha='center', fontsize=12, fontweight='bold', color=color_sales)
ax2.text(1, df_policy["数值"][1] + 200, f'{df_policy["数值"][1]:.0f}万人次', 
         ha='center', fontsize=12, fontweight='bold', color=color_people)

plt.title("以旧换新政策效果:6292.7亿元销售额,惠及8620万人次", 
          fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()

# 计算人均消费
avg_consumption = df_policy["数值"][0] * 10000 / df_policy["数值"][1]  # 元/人
print("\n" + "=" * 60)
print("🔄 以旧换新政策核心发现")
print("=" * 60)
print(f"• 带动消费总额:6292.7亿元")
print(f"• 惠及消费者:8620.4万人次")
print(f"• 人均消费金额:{avg_consumption:.0f}元")
print(f"• 政策撬动效应显著,成为消费增长新引擎")

图6:以旧换新政策效果

🔄 以旧换新分析说明

  • • 万亿级市场:以旧换新政策是2026年消费市场的最大政策变量,持续释放内需潜力
  • • 覆盖面广:超8600万人次受益,政策触达效率高
  • • 人均消费约7300元:主要集中在汽车、家电等大宗商品,对相关产业链拉动明显
# ========== 4. 重点商圈表现 ==========
business_data = {
    "指标": ["客流量同比增速", "营业额同比增速"],
    "增速(%)": [5.0, 5.3]
}
df_business = pd.DataFrame(business_data)

# 商圈增长图
fig, ax = plt.subplots(figsize=(8, 6))
bars = ax.bar(df_business["指标"], df_business["增速(%)"], 
              color=['#9B59B6', '#F39C12'], width=0.5)
ax.set_ylabel("同比增速 (%)", fontsize=12)
ax.set_title("重点商圈五一表现:客流与营业额双增长", fontsize=14, fontweight='bold')
ax.set_ylim(0, 7)
ax.axhline(y=5.0, color='gray', linestyle='--', alpha=0.5)

for bar, val in zip(bars, df_business["增速(%)"]):
    ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.15,
            f'{val}%', ha='center', va='bottom', fontsize=12, fontweight='bold')

plt.tight_layout()
plt.show()

print("\n" + "=" * 60)
print("🏬 重点商圈核心发现")
print("=" * 60)
print(f"• 客流量同比增长5.0%,商圈吸引力持续增强")
print(f"• 营业额同比增长5.3%,略高于客流增速,消费力保持稳定")
print(f"• 客流与消费同步增长,线下商业活力不减")

图7: 重点商圈五一表现:客流与营业额双增长

🏬 商圈分析说明

  • • 量价齐升:客流增长5.0%,消费增长5.3%,人均消费微增,消费力稳健
  • • 线下不可替代:在电商冲击下,体验式消费(餐饮、亲子、休闲)仍依赖实体空间
  • • 城市更新见效:首店经济、夜间经济、周末经济等多措并举激活商圈活力

北京:接待游客1882.7万人次,旅游总花费223.6亿元,均创历史新高;入境游客同比增长22.3%.

# ========== 5. 北京旅游数据 ==========
beijing_data = {
    "指标": ["游客接待量\n(万人次)", "旅游总花费\n(亿元)", "入境游客增速\n(%)"],
    "2026年数值": [1882.7, 223.6, 22.3],
    "单位": ["万人次", "亿元", "%"]
}
df_beijing = pd.DataFrame(beijing_data)

# 创建三指标仪表盘
fig = plt.figure(figsize=(12, 5))

# 左图:游客接待量
ax1 = fig.add_subplot(131)
gauge1 = ax1.add_patch(FancyBboxPatch((0.3, 0.3), 0.4, 0.4, boxstyle="round,pad=0.1",
                                        facecolor='#3498DB', alpha=0.8))
ax1.text(0.5, 0.65, f'{df_beijing["2026年数值"][0]:.0f}', 
         transform=ax1.transAxes, fontsize=28, fontweight='bold', ha='center')
ax1.text(0.5, 0.45, '万人次', transform=ax1.transAxes, fontsize=12, ha='center')
ax1.text(0.5, 0.25, '游客接待量', transform=ax1.transAxes, fontsize=12, ha='center')
ax1.set_xlim(0, 1)
ax1.set_ylim(0, 1)
ax1.axis('off')

# 中图:旅游总花费
ax2 = fig.add_subplot(132)
ax2.add_patch(FancyBboxPatch((0.3, 0.3), 0.4, 0.4, boxstyle="round,pad=0.1",
                              facecolor='#E74C3C', alpha=0.8))
ax2.text(0.5, 0.65, f'{df_beijing["2026年数值"][1]:.1f}', 
         transform=ax2.transAxes, fontsize=28, fontweight='bold', ha='center')
ax2.text(0.5, 0.45, '亿元', transform=ax2.transAxes, fontsize=12, ha='center')
ax2.text(0.5, 0.25, '旅游总花费', transform=ax2.transAxes, fontsize=12, ha='center')
ax2.set_xlim(0, 1)
ax2.set_ylim(0, 1)
ax2.axis('off')

# 右图:入境游客增速
ax3 = fig.add_subplot(133)
ax3.add_patch(FancyBboxPatch((0.3, 0.3), 0.4, 0.4, boxstyle="round,pad=0.1",
                              facecolor='#2ECC71', alpha=0.8))
ax3.text(0.5, 0.65, f'+{df_beijing["2026年数值"][2]:.1f}', 
         transform=ax3.transAxes, fontsize=28, fontweight='bold', ha='center')
ax3.text(0.5, 0.45, '%', transform=ax3.transAxes, fontsize=12, ha='center')
ax3.text(0.5, 0.25, '入境游客增速', transform=ax3.transAxes, fontsize=12, ha='center')
ax3.set_xlim(0, 1)
ax3.set_ylim(0, 1)
ax3.axis('off')

plt.suptitle("北京五一旅游数据:三大核心指标均创历史新高", fontsize=14, fontweight='bold', y=0.95)
plt.tight_layout()
plt.show()

print("\n" + "=" * 60)
print("🏛️ 北京旅游核心发现")
print("=" * 60)
print(f"• 接待游客1882.7万人次,创历史新高")
print(f"• 旅游总花费223.6亿元,人均消费约1188元")
print(f"• 入境游客同比增长22.3%,国际旅游加速复苏")
print(f"• 北京作为全国旅游第一梯队,引领文旅市场复苏")

图8:北京五一旅游数据:三大核心指标均创历史新高

🏛️ 北京旅游分析说明

  • • 双创新高:游客量与旅游收入同步刷新纪录,旅游消费活力强劲
  • • 人均消费高:约1188元的人均花费,反映首都旅游的高端化和深度游趋势
  • • 入境游爆发:22.3%的高增长,受益于签证便利化和国际航线恢复
# ========== 6. 综合看板:五大维度全景图 ==========
summary_data = {
    "维度": ["人员流动", "电影票房", "以旧换新", "重点商圈客流", "重点商圈消费", "北京游客", "北京收入", "入境游客"],
    "2026年数值": [15.2, 7.50, 6292.7, 5.0, 5.3, 1882.7, 223.6, 22.3],
    "单位": ["亿人次", "亿元", "亿元", "%", "%", "万人次", "亿元", "%"],
    "同比变化": ["+2.3%", "+0.4%", "政策拉动", "+5.0%", "+5.3%", "创新高", "创新高", "+22.3%"]
}
df_summary = pd.DataFrame(summary_data)

# 创建综合看板表格
fig, ax = plt.subplots(figsize=(12, 4))
ax.axis('tight')
ax.axis('off')

# 创建表格
table_data = []
for i, row in df_summary.iterrows():
    table_data.append([row["维度"], f"{row['2026年数值']}{row['单位']}", row["同比变化"]])

columns = ["维度", "2026年五一数据", "同比/备注"]
table = ax.table(cellText=table_data, colLabels=columns, cellLoc='center', loc='center',
                 colWidths=[0.3, 0.35, 0.35])
table.auto_set_font_size(False)
table.set_fontsize(10)
table.scale(1, 1.5)

# 设置表头样式
for i in range(3):
    table[(0, i)].set_facecolor('#34495E')
    table[(0, i)].set_text_props(color='white', fontweight='bold')

plt.title("2026年五一消费全景看板", fontsize=16, fontweight='bold', pad=20)
plt.tight_layout()
plt.show()

表1:2026年五一消费全景看板

🎯 总结:2026年五一消费的五大核心特征

维度核心数据关键解读
人员流动15.2亿人次(+2.3%)出行规模创纪录,但增速放缓,从“流量”转向“留量”
电影票房7.5亿元(+0.4%)微增持平,面临短视频、短剧等替代品竞争
以旧换新6292.7亿元销售额政策强力驱动,成为2026年消费最大增量
线下商圈客流+5.0%,消费+5.3%线下商业韧性足,体验经济不可替代
北京旅游游客1882.7万人次,入境+22.3%头部城市引领复苏,入境游加速回暖

核心趋势判断

  1. 1. 消费结构分化:出行火热 vs 票房微增,居民更愿意为“体验”付费
  2. 2. 政策驱动显著:以旧换新成为最大政策变量,撬动万亿级市场
  3. 3. 线下价值重估:商圈客流与消费同步增长,“重回线下”趋势显现
  4. 4. 入境游复苏:22.3%的高增长,国际旅游市场正在修复

而斑点鱼身处上海,观察到几个现象:

  1. 1. 上海的某一商场换了好几家餐饮店铺
  2. 2. 五一去饭店聚餐楼下很多空位,而2025年同时刻是火爆的
  3. 3. 五一周边游-西塘很多店显示出租关店状态

这恰恰说明了当下经济里一个关键的结构性问题,那就是 “总量的火热”和“个体的冷清”并存

简单来说,不是所有人都在消费降级,而是消费在升级、分化、转移——人流和钱流去了更能提供“情绪价值和体验感”的地方,而斑点鱼所在的那些曾经火爆的渠道,恰好成了这波浪潮的“失意者”

1️⃣ 首先,斑点鱼感受到的“冷”确实存在——消费正在大洗牌

  • • 结构性的“撕裂”:2026年五一全国餐饮销售额涨了8.7%,但人均消费却下降了12%。这说明出门吃饭的人更多了,但他们花钱更谨慎了。大家扎堆去吃火锅、烧烤这种“有氛围、能分享”的平价餐饮,以前的高端商务宴请和人均150元以上的传统餐厅自然就冷清了。
  • • 大城市商圈的两极分化:你看到的商场店铺换了一波又一波,比如静安MOHO商场里茑屋书店关店,半数铺面空置。但同期,上海黄浦区重点商户销售额大涨27.9%,万象城、七宝领展广场等“头部玩家”依然火爆。这说明消费在向“虹吸效应”极强的核心地标集中

2️⃣ 其次,你经历的“西塘冷清”背后,是旅游模式的深刻转向

  • • 反向旅游,越玩越“偏”:现在的年轻人不再满足于去西塘、乌镇看同样的“小桥流水、卖同质化商品”,他们开始涌向甘肃张家川、浙江平潭这样的非传统热门地。西塘虽然总客流量还在增长(43.83万人次,同比+3.31%),但普通店铺的生意被分散了——客流里很多人是冲着里面举办的“顾锡东戏曲艺术周”去的,而这些深度体验活动的消费,和沿街小店的关系不大。
  • • 旅游消费的“内容革命”:如果西塘不持续提供剧本杀、戏曲节、汉服周这类新内容,单纯逛古镇的消费力自然会下降。

3️⃣ 最后,从宏观视角看:需求还在,但“干什么、去哪儿花”变了

  • • “有效供给不足”:“五一”全国跨区域流动高达15.2亿人次创新高,说明大家出行的意愿和能力是强的。之所以周围的店觉得冷清,是因为当下的存量供给,没能匹配上人们新的、挑剔的需求。
  • • “消费大重置”:人们正在重新定义什么是“值得花的钱”。为了看一场演唱会、一顿地道的特色美食,他们愿意飞越半个中国。但对于雷同的商场、缺乏新意的古镇店铺,消费者正在“用脚投票”。

📈 我们把“同与不同”放在一起看,可能更直观:

维度2025年五一表现2026年五一表现(你的观察)核心变化解读
上海商场整体增长,主要商圈销售额同比+4.09%两极分化:头部地标人流如织,非核心商场空置率偏高从“普遍繁荣”到“赢家通吃”:流量向头部项目集中,缺乏特色和吸引力的商场被加速淘汰。
西塘现状接待游客50.12万人次,总收入2亿+客流微增(43.83万,+3.31%),但普通店铺关店,客流被深度体验活动吸引从“观光游”到“内容游”:游客不再满足于走马观花,古镇必须提供戏曲、剧本杀等高附加值内容才能留住人。
聚餐场景餐饮业普遍火爆,重点企业销售额同比+8.7%饭点有空位,人均消费下降12%从“吃面子”到“吃里子”:商务宴请萎缩,大家更青睐高性价比的火锅、烧烤等“社交餐饮”。

所以,情况不是简单的“好”或“不好”,而是在经历一场 “经济转型阵痛”。那些能够提供独特体验、极致性价比或丰富精神消费的场所依然人山人海;而那些同质化严重、缺乏创新的老旧业态,则会被市场加速出清。

📊 图表1:消费“撕裂”——餐饮业“量增价跌”

“总量繁荣下的结构性撕裂”,直观表现是销售额增速与人均消费增速的背离

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sns.set_style("whitegrid")

# 构建餐饮消费数据
data_restaurant = {
    "指标": ["重点餐饮企业\n销售额同比", "餐饮人均消费\n同比变化"],
    "增速 (%)": [8.7, -12]
}
df_restaurant = pd.DataFrame(data_restaurant)

# 设置颜色:正增长绿色,负增长红色
colors = ['#2ECC71' if x > 0 else '#E74C3C' for x in df_restaurant["增速 (%)"]]

plt.figure(figsize=(8, 6))
bars = plt.bar(df_restaurant["指标"], df_restaurant["增速 (%)"], color=colors, width=0.5)
plt.ylabel("同比增速 (%)", fontsize=12)
plt.title("2026年五一餐饮消费:销售额增长 vs 人均消费下降", fontsize=14, fontweight='bold')
plt.axhline(y=0, color='black', linestyle='-', linewidth=0.8)
plt.ylim(-15, 12)

# 添加数值标签
for bar, val in zip(bars, df_restaurant["增速 (%)"]):
    plt.text(bar.get_x() + bar.get_width()/2, val + (1 if val >=0 else -2), 
             f'{val}%', ha='center', va='bottom' if val >=0 else 'top', fontsize=12, fontweight='bold')

plt.tight_layout()
plt.show()

图1:2026年五一餐饮消费:销售额增长 vs 人均消费下降

📈 分析说明

  • • 核心现象:重点餐饮企业销售额同比增长8.7%的同时,人均消费却下降了12%。这完美印证了“出门吃饭的人更多了,但花钱更谨慎了”。
  • • 消费逻辑:消费者并非没钱,而是不愿意为“普通的一餐”支付溢价。钱流向了火锅、烧烤等更具“社交属性”和“氛围感”,且价格相对亲民的品类。
  • • 商业启示:传统正餐(尤其是人均150元以上的餐厅)面临严峻挑战。餐饮业的竞争核心,正从“菜品口味”转向“情绪价值+性价比”。

📊 图表2:消费“大重置”——体验经济爆发 vs 传统消费承压

消费权重的根本性转移:从物质消费转向体验消费。最具代表性的对比是“演唱会/赛事”与“传统餐饮”的此消彼长。

# 构建消费分化数据
data_shift = {
    "消费类型": ["演唱会/音乐节/赛事", "县域旅游", "高端旅行产品", "传统中餐\n(同店销售额)"],
    "同比增速 (%)": [45, 128, 76, -15],
    "类别": ["体验消费", "体验消费", "体验消费", "传统消费"]
}
df_shift = pd.DataFrame(data_shift)

# 排序,让负增长在底部
df_shift = df_shift.sort_values(by="同比增速 (%)", ascending=False)

plt.figure(figsize=(9, 6))
bars = plt.barh(df_shift["消费类型"], df_shift["同比增速 (%)"], 
                color=['#2ECC71' if x > 0 else '#E74C3C' for x in df_shift["同比增速 (%)"]])
plt.xlabel("同比增速 (%)", fontsize=12)
plt.title("消费大重置:体验经济爆发 vs 传统消费承压 (2026年五一)", fontsize=14, fontweight='bold')
plt.axvline(x=0, color='black', linestyle='-', linewidth=0.8)

# 添加数值标签
for bar, val in zip(bars, df_shift["同比增速 (%)"]):
    plt.text(val + (2 if val >=0 else -8), bar.get_y() + bar.get_height()/2, 
             f'{val}%', va='center', fontsize=11, fontweight='bold')

plt.tight_layout()
plt.show()

图2:消费大重置:体验经济爆发 vs 传统消费承压 (2026年五一)

📈 分析说明

  • • 核心现象:以演唱会(+45%)、县域旅游(+128%) 为代表的“体验消费”呈现爆发式增长;而以传统中餐(-15%) 为代表的“传统消费”则明显承压。一升一降,形成鲜明对比。
  • • 消费心理:Z世代奉行“理性与热爱并存”的双轨决策逻辑。他们会在日常可替代消费上“拼命省钱”,却在能提供情绪价值的热爱之事上“毫不犹豫花钱”。
  • • 商业启示:消费市场正被重新定义。“一个演唱会带火一座城”成为常态。对于商家而言,思考如何为产品或服务注入体验感和情绪价值,比单纯降价促销更重要。

📊 图表3:消费“两极分化”——谁在崛起,谁在没落?

# 根据描述构建消费分化图谱数据
data_polarization = {
    "业态": ["演唱会/音乐节", "县域/小城旅游", "高端旅行/民宿", "汽车/家电(以旧换新)", 
             "火锅/烧烤", "传统正餐(150元+)", "传统商超零售", "标准化快捷酒店"],
    "表现趋势": ["量价齐升", "量价齐升", "量价齐升", "政策强力拉动", 
                "量增价稳", "量价双承压", "客流被分流", "增长乏力"],
    "增速/变化": ["+45%", "+128%", "+76%", "环比+15%", 
                "预订火爆", "同店-15%", "个位数增长", "被民宿替代"]
}
df_polarization = pd.DataFrame(data_polarization)

# 定义趋势顺序和颜色
trend_order = ["爆发增长", "稳健增长", "承压调整"]
df_polarization["趋势分类"] = ["爆发增长", "爆发增长", "爆发增长", "稳健增长", 
                               "稳健增长", "承压调整", "承压调整", "承压调整"]

# 创建水平条形图,按趋势分组
plt.figure(figsize=(10, 8))
sns.barplot(data=df_polarization, y="业态", x="增速/变化", hue="趋势分类", 
            dodge=False, palette={"爆发增长": "#2ECC71", "稳健增长": "#3498DB", "承压调整": "#E74C3C"},
            legend=True)
plt.xlabel("关键指标变化", fontsize=12)
plt.title("消费两极分化图谱:谁是赢家?谁是输家?(2026年五一)", fontsize=14, fontweight='bold')
plt.axvline(x=0, color='black', linestyle='-', linewidth=0.8)
plt.legend(title="趋势分类", bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()

图3:消费两极分化图谱:谁是赢家?谁是输家?(2026年五一)

📈 分析说明

  • • 核心现象:消费市场清晰地分化为“爆发增长”、“稳健增长”和“承压调整”三个梯队。
    • • 爆发增长:演唱会、县域旅游、高端旅行。这些是符合“情绪价值”和“深度体验”的新兴赛道。
    • • 稳健增长:以旧换新(政策驱动)、火锅烧烤(高性价比社交餐饮)。
    • • 承压调整:传统正餐(人均高、场景固化)、传统商超(被社区团购、直播电商分流)、快捷酒店(被特色民宿替代)。
  • • 本质解读:这证实了“不是消费降级,而是消费结构重组”。消费者重新排列了“消费权重”,将预算优先分配给能带来最大化情感满足和独特体验的领域。
  • • 总结:斑点鱼感受到的“冷”,是老旧供给与新时代需求错配的“冷”;而消费市场的“热”,正以全新的形态在别处熊熊燃烧。

更多推荐