跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 Pandas 与 Pyecharts 的全国星巴克门店数据可视化分析

利用 Pandas 和 Pyecharts 对全国星巴克门店数据进行清洗与分析,涵盖省份分布、城市排名及营业时间统计。通过柱状图、饼图和地图可视化展示区域差异,结合热力图分析城市集中度,最后总结营业时长分布规律,为商业选址提供参考。

CoderByte发布于 2025/2/3更新于 2026/6/520 浏览
基于 Pandas 与 Pyecharts 的全国星巴克门店数据可视化分析

基于 Pandas 与 Pyecharts 的全国星巴克门店数据可视化分析

本期利用 Python 对全国星巴克门店数据进行分析,主要关注各省份、各城市的门店数量分布及营业时间情况。

涉及的核心库:

  • Pandas:数据处理与分析
  • Pyecharts:交互式数据可视化

1. 导入模块

首先引入必要的库并忽略警告信息,保持环境整洁。

import pandas as pd
from pyecharts.charts import Line, Bar, Pie, Map, Geo
from pyecharts import options as opts
import warnings
warnings.filterwarnings('ignore')

2. Pandas 数据处理

2.1 读取数据

使用 read_excel 加载本地 Excel 文件中的门店数据。

df = pd.read_excel("./星巴克门店.xlsx")

查看数据基本信息,确认字段类型及缺失值情况。

df.info()

2.2 计算营业时长

原始数据包含开始和停止营业时间,需转换为时间对象后计算差值。注意处理跨天或负值情况(如凌晨结束的情况)。

df['开始营业时间_1'] = pd.to_datetime(df['开始营业时间'])
df['停止营业时间_1'] = pd.to_datetime(df['停止营业时间'])
df['营业时长'] = df['停止营业时间_1'] - df['开始营业时间_1']
df['营业时长'] = pd.to_timedelta(df['营业时长'])
df['营业时长'] = df['营业时长'].dt.total_seconds() / 3600
# 处理可能出现的负数时长(跨天情况)
df['营业时长'] = df['营业时长'].apply(lambda x: x if x > 0 else x + 24)

2.3 营业时长区间划分

将连续的营业时长划分为不同区间,便于后续统计分布。

df['营业时长区间'] = pd.cut(
    df['营业时长'],
    bins=[0, 8, 10, 12, 14, 16, 24],
    labels=["0-8h", "8-10h", "10-12h", "12-14h", "14-16h", "16-24h"]
)

3. Pyecharts 数据可视化

3.1 各省星巴克门店数量柱状图

展示各省份门店数量的排名情况,通过反转坐标轴使数值高的排在上方。

def get_bar1(x_data, y_data):
    bar1 = (
        Bar(init_opts=opts.InitOpts(width='1000px', height='800px'))
        .add_xaxis(x_data[::-1])
        .add_yaxis("", y_data[::-1], label_opts=opts.LabelOpts(position="right"))
        .reversal_axis()
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='各省星巴克门店数量分布',
                pos_top='2%',
                pos_left="center",
                title_textstyle_opts=opts.TextStyleOpts(color='#228be6', font_size=20)
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=False,
                pos_top='70%',
                pos_left='20%',
                range_color=range_color
            )
        )
    )
    return bar1

结果显示上海市门店最多,超过 1000 家;广东、浙江、江苏、北京分列二至五位,均超 500 家。

3.2 各省星巴克门店数量饼图

通过环形图直观展示各省份门店占比情况。

def get_pie(x_data, y_data):
    pie = (
        Pie(
            init_opts=opts.InitOpts(width='1000px', height='800px')
        )
        .add(
            series_name="",
            data_pair=[list(z) for z in zip(x_data, y_data)],
            radius=["30%", '50%'],
            center=["38%", "50%"],
            label_opts=opts.LabelOpts(is_show=False, position="center")
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='各省星巴克门店数量占比',
                pos_top='2%',
                pos_left="center",
                title_textstyle_opts=opts.TextStyleOpts(color='#228be6', font_size=20)
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=False,
                max_=600,
                pos_top='70%',
                pos_left='20%',
                range_color=range_color
            ),
            legend_opts=opts.LegendOpts(is_show=True, pos_right="15%", pos_top="8%", orient="vertical")
        )
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
    )
    return pie

3.3 各省星巴克门店数量地图

利用地图组件直观呈现地理分布特征。

def get_map(x_data, y_data):
    map0 = (
        Map(init_opts=opts.InitOpts(width='1000px', height='600px'))
        .add("", [list(z) for z in zip(x_data, y_data)], maptype="china")
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='各省星巴克门店数量分布',
                pos_top='2%',
                pos_left="center",
                title_textstyle_opts=opts.TextStyleOpts(color='#228be6', font_size=20)
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=True,
                pos_top='70%',
                pos_left='20%',
                range_color=range_color
            )
        )
    )
    return map0

从地图分布可清晰看出,东南沿海地区门店密度远高于内陆其他地区。

3.4 各城市星巴克门店数量 TOP20

统计具体城市的门店数量排名。

数据显示,北上广深及杭州门店数量均在 200 家以上,位列前五。苏州、成都、宁波等城市也超过 200 家。南京、武汉、天津、重庆、西安、无锡等城市则在 100 家以上。

3.5 各城市星巴克门店数量热力图

通过热力图进一步观察城市间的密集程度差异。

3.6 星巴克门店开始营业时间分布

分析门店普遍开门的时间点。

def get_line1(x_data, y_data):
    line1 = (
        Line(init_opts=opts.InitOpts(width='1000px', height='600px'))
        .add_xaxis(x_data)
        .add_yaxis("", y_data)
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='开始营业时间分布',
                pos_top='2%',
                pos_left="center",
                title_textstyle_opts=opts.TextStyleOpts(color='#228be6', font_size=20)
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=False,
                pos_top='70%',
                pos_left='20%',
                range_color=range_color
            )
        )
    )
    return line1

大多数门店集中在早上 06:45-07:45 之间开始营业,极少数在晚上 20:00 以后。

3.7 星巴克门店停止营业时间分布

分析关门时间的集中趋势。

大部分门店在晚上 21:00-22:00 之间停止营业,仅有少数延长至 23:30 以后。

3.8 星巴克门店营业时长区间分布

综合评估整体运营时长。

数据显示,有 3178 家店营业时长达到 14-16 小时,2075 家在 12-14 小时,10-12 小时的有 1381 家。整体上营业时长 10 小时以上的占比超过 95%,14 小时以上的占比约 80%,说明门店运营时间较长。


注:代码中 range_color 变量需根据实际配色方案定义,此处保留原逻辑结构。

目录

  1. 基于 Pandas 与 Pyecharts 的全国星巴克门店数据可视化分析
  2. 1. 导入模块
  3. 2. Pandas 数据处理
  4. 2.1 读取数据
  5. 2.2 计算营业时长
  6. 处理可能出现的负数时长(跨天情况)
  7. 2.3 营业时长区间划分
  8. 3. Pyecharts 数据可视化
  9. 3.1 各省星巴克门店数量柱状图
  10. 3.2 各省星巴克门店数量饼图
  11. 3.3 各省星巴克门店数量地图
  12. 3.4 各城市星巴克门店数量 TOP20
  13. 3.5 各城市星巴克门店数量热力图
  14. 3.6 星巴克门店开始营业时间分布
  15. 3.7 星巴克门店停止营业时间分布
  16. 3.8 星巴克门店营业时长区间分布
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • SGI STL 空间配置器原理及 uninitialized 系列函数解析
  • Stable Diffusion v1.5 Web UI 高级功能:图生图与局部重绘实操指南
  • 区块链是什么:Web3 底层的分布式信任技术
  • 前端文件上传处理:提升用户体验与性能优化
  • 阿里开源 Page-Agent:一行 JS 代码实现大模型前端 DOM 操控
  • 基于 SpringBoot 与 Vue 的高校实习生管理平台设计与实现
  • SpringBoot+Vue 无人智慧超市管理系统设计与实现
  • 转行数据分析师:难度评估与备考指南
  • 二分查找经典例题实战解析
  • SpringBoot3 + OpenSpec 实现 MCP 服务器实践
  • Spring MVC 快速入门:响应处理与报文格式设置
  • C++ 递归入门:汉诺塔问题的思路与实现
  • 排序算法的统一视角:问题拆分与组合解
  • Gemini AI 生成图片水印去除方法与技术解析
  • 大模型应用开发:RAG 入门与实战
  • 前端拖拽排序实现:原理与实战代码
  • NativeScript-Vue 跨平台原生应用开发实战
  • 中小团队低成本搭建项目管理系统:Ubuntu 下 Dootask 私有化部署实战
  • 贪心算法实战:柠檬水找零、数组减半及最大数
  • 基于 SpringBoot 与 Vue 的校园组团平台信息管理系统设计

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online