数据可视化——全国星巴克门店数量数据可视化

星巴克门店分布可视化分析

1、数据集(全国各地星巴克门店地点、省份等)来源:全国星巴克门店数量分布数据分析 - Heywhale.com

2、数据集预处理(注:本文是基于jupyter运行!!!)

  (1)导入相关库及对代码进行处理。

import pandas as pd
from pyecharts.charts import Line
from pyecharts.charts import Bar
from pyecharts.charts import Pie
from pyecharts.charts import Map
from pyecharts.charts import Geo
from pyecharts import options as opts
from matplotlib import pyplot as plt
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
plt.rcParams["font.family"] = "SimHei"
plt.rcParams['axes.unicode_minus'] = False 
import warnings
warnings.filterwarnings('ignore')

(2)对数据集进行清洗(查看是否有无缺失、重复值等)

duplicated_values = df.duplicated().sum()

if duplicated_values != 0:
    print(f"\n重复数量:{duplicated_values}")
    df.drop_duplicates(inplace=True)
else:
    print("\n数据中无重复数据")
missing_values = df.isnull().sum()

if missing_values.any():
    print(f"\n缺失值数量:{missing_values}")
    df.dropna(inplace=True)
else:
    print("\n数据中无缺失数据")

3、可视化部分

(1)首先各省星巴克门店数量的可视化与分析

           合成全国分布图
from pyecharts import options as opts
# 转为字典
data = count.to_dict()
province_list = [list(z) for z in zip(data.keys(), data.values())]
# 
c = (
    Map(init_opts=opts.InitOpts(width="1200px", height="600px")) #可切换主题
    .set_global_opts(
        title_opts=opts.TitleOpts(title="星巴克门店在全国的分布"),
        visualmap_opts=opts.VisualMapOpts(
            min_=0,
            max_=1200,
            range_text = ['星巴克门店数量区间:', ''],  #分区间
            is_piecewise=True,  #定义图例为分段型,默认为连续的图例
            pos_top= "middle",  #分段位置
            pos_left="left",
            orient="vertical",
            split_number=10  #分成10个区间
        )
 
    )
    .add("",data_pair=province_list,maptype="china")
#     .render("星巴克全国分布图.html")
    
    
)
c.render_notebook()

效果图:

柱状图
# 统计每个省份的门店数量
province_counts = df['省份'].value_counts()

# 创建柱状图
bar = (
    Bar()
    .add_xaxis(province_counts.index.tolist())  # 添加x轴数据(省份)
    .add_yaxis("门店数量", province_counts.values.tolist())  # 添加y轴数据(门店数量)
    .set_global_opts(  # 设置全局配置项
        title_opts=opts.TitleOpts(title="各省份星巴克门店数量"),  # 图表标题
        tooltip_opts=opts.TooltipOpts(trigger="axis"),  # 提示框触发类型
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),  # x轴标签旋转,以便更好展示
    )
)

# 渲染图表
bar.render_notebook() 

效果图:

     饼图
# 计算每个省份的星巴克门店数量
province_counts = df['省份'].value_counts()

# 创建饼图
pie_chart = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(province_counts.index, province_counts)],
        radius=["35%", "70%"],
        label_opts=opts.LabelOpts(position="outside", formatter="{b}: {d}%"),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="中国各省份星巴克门店数量及占比饼图"),
        legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="0.5%"),
    )
)

# 渲染饼图
pie_chart.render_notebook() 

效果图

 (2)各市星巴克门店数量的可视化及分析

旭日图
fig = px.sunburst(df_pro, path=['城市'], 
                  values='店铺数量', 
                  color='城市',
                  color_discrete_sequence=px.colors.qualitative.Plotly,
                 )
fig.update_layout(
    title={
        'text': "各市星巴克门店数量",
        'x': 0.2,  # 将标题移动到右上角居中位置
        'y': 0.95,
        'xanchor': 'center',
        'yanchor': 'top'
    },
    margin=dict(l=20, r=20, t=50, b=20),  # 设置边距
    sunburstcolorway=["#636EFA", "#EF553B", "#00CC96", "#AB63FA", "#FFA15A", "#19D3F3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52"],  # 设置颜色序列
    uniformtext=dict(minsize=10, mode='hide')  # 将图中太小的占比统一改为“其他”
)


# 调整图形布局,使其不会太紧凑

fig.update_traces(textinfo='label+percent entry') # 更新旭日图中的文本信息,使其显示标签和百分比。
fig.update_layout(margin=dict(t=0, l=0, r=0, b=0)) # 更新布局的边距设置


# 显示图例
fig.update_layout(legend=dict(font=dict(size=20))) 

# 显示图表
fig.show()

效果图

各市星巴克数量Top20柱状图
# 对城市门店数量进行降序排列并取前20
city_counts = df['城市'].value_counts().nlargest(20).reset_index()
city_counts.columns = ['城市', '门店数量']

# 创建柱状图
bar = (
    Bar()
    .add_xaxis(city_counts['城市'].tolist())
    .add_yaxis("门店数量", city_counts['门店数量'].tolist())
    .reversal_axis()  # 横向柱状图,城市名称作为y轴
    .set_global_opts(
        title_opts=opts.TitleOpts(title="各城市星巴克门店数量TOP20"),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="shadow"),
        yaxis_opts=opts.AxisOpts(name_gap=30),  # 调整y轴标签与轴的距离
        xaxis_opts=opts.AxisOpts(name="门店数量"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(position="right"))  # 在柱子右侧显示数值标签
)

# 渲染图表
bar.render_notebook()  



效果展示

df_pro = df.groupby(by=['省份', '城市'], as_index = False)['店铺名称'].count()
df_pro = pd.DataFrame(df_pro)
df_pro.columns = ['省份', '城市', '店铺数量']
df_pro.head()

(3)开始营业与停止营业时间图

对格式进行调整

print(df['开始营业时间'].dtype)
print(df['停止营业时间'].dtype)
df['开始营业时间'] = pd.to_datetime(df['开始营业时间'], format='%H:%M:%S') # 注意这里的格式根据实际数据调整
df['停止营业时间'] = pd.to_datetime(df['停止营业时间'], format='%H:%M:%S') # 同样注意格式
df['开始营业时间_小时'] = df['开始营业时间'].dt.hour
df['停止营业时间_小时'] = df['停止营业时间'].dt.hour
开始营业时间柱状图
# 统计每个开始营业时间的频数
start_time_distribution = df['开始营业时间'].value_counts().sort_index()

# 创建柱状图
bar_start_time = (
    Bar()
    .add_xaxis(start_time_distribution.index.tolist())
    .add_yaxis("门店数量", start_time_distribution.values.tolist())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="星巴克门店开始营业时间分布"),
        xaxis_opts=opts.AxisOpts(type_="category"),
        yaxis_opts=opts.AxisOpts(name="门店数量"),
    )
)

bar_start_time.render_notebook() 

效果展示

停止营业时间柱状图
# 统计每个停止营业时间的频数
end_time_distribution = df['停止营业时间'].value_counts().sort_index()

# 创建柱状图
bar_end_time = (
    Bar()
    .add_xaxis(end_time_distribution.index.tolist())
    .add_yaxis("门店数量", end_time_distribution.values.tolist())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="星巴克门店停止营业时间分布"),
        xaxis_opts=opts.AxisOpts(type_="category"),
        yaxis_opts=opts.AxisOpts(name="门店数量"),
    )
)

bar_end_time.render_notebook()  

4、分析结论展示

各省

(1)各省份星巴克门店数量差异显著:从柱状图可以看出,广东省拥有最多的星巴克门店,其次是上海市、江苏省和浙江省。这些地区的门店数量远超其他省份,说明这些地方的市场潜力较大,消费者对于咖啡的需求较高。

(2)星巴克在中国市场的地域分布不平衡:饼图展示了各省份门店数量占全国总店数的比例。上海占比最高,达到了16.05%,其次是广东省(14.19%)、浙江省(14.06%)和江苏省(12.48%)。这进一步证实了前文提到的市场潜力较大的地区。

(3)地域覆盖广泛:尽管一些省份的门店数量相对较少,如宁夏回族自治区、青海省等地,但星巴克仍然有存在,这表明品牌正在努力扩大其在全国范围内的影响力,满足更多消费者的咖啡需求。

(4)北京市和上海市的门店数量接近:虽然北京市的门店数量略低于上海市,但在全国范围内仍占有重要地位,这与北京作为中国的政治、文化中心的地位相符。

(5)潜力市场:对比两幅图表,可以看到一些具有增长潜力的市场,如山东省、福建省和湖南省,这些地区的门店数量较多,但占比相对较低,未来有可能成为星巴克进一步发展的重点区域。

综上所述,星巴克在中国市场的发展呈现出明显的地域特征,主要集中在经济发达、人口密集的城市和地区。同时,品牌也在积极拓展新的市场,以期在未来获得更大的市场份额。

各市 

 

(1)各城市星巴克门店数量差异显著:从柱状图可以看出,上海市拥有最多的星巴克门店,其次是北京市、广州市和深圳市。这些城市的门店数量远超其他城市,说明这些地方的市场潜力较大,消费者对于咖啡的需求较高。

(2)星巴克在中国市场的地域分布不平衡:饼图展示了各城市门店数量占全国总店数的比例。上海市占比最高,达到了16%,其次是北京市(8%)、广州市(4%)和深圳市(5%)。这进一步证实了前文提到的市场潜力较大的地区。

(3)其他城市也有一定的市场份额:除了上述四个城市外,还有许多其他城市也占据了相当一部分市场份额,如杭州市、成都市、苏州市、武汉市等。这表明星巴克在中国的业务已经扩展到了多个城市,并且在这些城市有一定的市场占有率。

(4)长尾效应明显:尽管一些城市的门店数量相对较少,但它们共同构成了星巴克在中国市场的长尾部分,这些城市也是星巴克持续扩张的目标市场。

综合来看,星巴克在中国市场的发展呈现出了明显的地域特征,主要集中在一线城市和部分二线城市。然而,随着中国城市化进程的推进和消费水平的提高,星巴克也在不断向更多的城市渗透。

营业时间

开始营业时间分布:

(1)大多数星巴克门店在早上7点至9点之间开业,其中最高峰出现在8点,有超过一半的门店在此时段开业。这表明大多数门店会迎合早间上班和上学的人群需求,提供早餐和咖啡服务。

(2)少量门店在6点之前开业,可能是位于交通枢纽或者商业中心的门店,以满足早期通勤者的需求。

(3)几乎没有门店在晚上开业,这符合一般零售业的规律,因为晚间的咖啡需求较低。

停止营业时间分布:

(1)绝大部分门店在晚上10点到11点之间停止营业,其中最高峰出现在10点,这表明星巴克的主要运营时间集中在白天和傍晚。

(2)只有一小部分门店营业到凌晨1点以后,这部分门店可能位于繁华商圈、旅游景点或其他夜间活动较多的地方。

(3)极少门店在下午停业,这可能是因为这些门店位于特殊位置,例如机场或火车站,其营业时间受特定因素影响。

不同营业时长的城市数量分布情况

(1)营业时长为14-16小时的城市最多,占比达到45.75%,这表明大部分城市的星巴克门店都保持较长的营业时间,以满足全天候的消费需求。

(2)接下来是营业时长为12-14小时的城市,占比为29.87%,这类城市可能包括了一些规模较小或者非核心商业区,它们的营业时间相对较短。

(3)营业时长为10-12小时的城市占比为19.88%,这些城市可能是在特定时间段内经营,比如只在早晚高峰期开放。

(4)营业时长为8-10小时的城市占比为2.82%,这类城市可能位于较为偏远或者人口密度较低的地区,需求相对较小。

(5)营业时长为16-24小时的城市占比为1.47%,这些城市通常位于大型城市的核心商业区或者交通枢纽,需要满足全天候的服务需求。

(6)最后,营业时长为0-8小时的城市最少,占比仅为0.21%,这可能是一些特殊地点,如机场或火车站的门店,营业时间受到特定因素限制。

      总结来说,星巴克门店的营业时间主要集中在早晨和白天,以满足日常消费者的购物需求。大部分门店会在晚上10点左右结束营业,只有少数门店延长营业时间以覆盖夜间的市场需求。这种时间安排反映了星巴克作为休闲餐饮品牌,主要服务于工作日和周末的大众消费者。为了适应不同地区的顾客需求,星巴克可以根据当地的生活习惯和消费模式灵活调整营业时间.大部分城市的星巴克门店营业时间较长,以满足全天候的消费需求。然而,也有一些城市根据自身特点和市场需求采取了较短的营业时间。为了适应不同城市的特点和消费者行为,星巴克应该根据每个城市的实际情况灵活调整营业时间,以最大化收益和客户满意度。

 5、总结以及建议

         本次数据分析和可视化展示了星巴克在中国的地理分布特征,以及其门店营业时间的普遍规律。可以看出,星巴克在经济发展水平较高、人口密集的地区拥有较多门店,且营业时间设计充分考虑了目标顾客群体的作息习惯,大多提供较长的营业时长以适应顾客需求。通过这些分析,星巴克可以进一步优化其市场布局和营业时间策略,以更好地服务于目标市场和顾客群体。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值