数据可视化每周挑战——全国星巴克门店数据可视化

这是我国星巴克门店的位置,营业时间等数据。
1.导入需要用的库,同时设置绘图时用到的字体,同时防止绘图时负号无法正常显示的情况。
import pandas as pd
from pyecharts.charts import Bar,Map,Line,Pie,Geo
from pyecharts import options as opts
import matplotlib.pyplot as pltplt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
2.读取数据,并且查看数据是否有缺失值等
data = pd.read_excel('D:/每周挑战/星巴克门店.xlsx')
data.info()
从上面可以看出该数据集中没有缺失值,且营业时间属于标成属性,但是实际中时间应该是时间类型,因此我们将其转换为时间,以便于后续的可视化
3.首先先对营业时间进行处理,然后对星巴克在我国分布省份进行统计汇总。
data['开始营业时间_1'] = pd.to_datetime(data['开始营业时间'])
data['停止营业时间_1'] = pd.to_datetime(data['停止营业时间'])
data['营业时长'] = data['停止营业时间_1'] - data['开始营业时间_1']
data['营业时长'] = pd.to_timedelta(data['营业时长'])
data['营业时长'] = data['营业时长'].dt.total_seconds()/3600
data = data.drop(['开始营业时间_1','停止营业时间_1'],axis=1)
data['营业时长区间'] = pd.cut(data['营业时长'],bins=[0,8,10,12,14,16,24],labels=["0-8h","8-10h","10-12h","12-14h","14-16h","16-24h"])
range_colors = ['#228be6','#1864ab','#8BC34A','#FFCA28','#FF5722','#D32F2F','#1DFFF5','#FF850E']
province_data = data['省份'].value_counts().reset_index()
x = province_data['index'].tolist()
y = province_data['省份'].tolist()
bar = (Bar(init_opts = opts.InitOpts(width='1000px',height='800px')) # 创建一个柱状图,设置初始化选项(宽和高).add_xaxis(x[::-1]) # 设置X轴数据,将其反转 .add_yaxis('',y[::-1],label_opts = opts.LabelOpts(position='right')) # 设置y轴数据,将其反转,同时设置其为值为右侧.reversal_axis() # 反转x轴和y轴.set_global_opts(title_opts = opts.TitleOpts(title='全国各省星巴克门店数量', # 标题内容pos_top='2%', # 标题距离图表顶部的相对位置pos_left='center', # 指定了标题距离图表左侧的相对位置,这里是图表中心title_textstyle_opts = opts.TextStyleOpts(color='#FFC0CB',font_size='20',font_weight='bold' # 指定标题文本的颜色,字体大小,和粗细)),visualmap_opts = opts.VisualMapOpts(is_show=False, # 视觉映射组件是否显示max_=600, # 视觉映射组件的最大值dimension=0, # 视觉映射组件的维度。为 0 时根据数据的值来映射颜色。orient='horizontal',pos_top='20%',pos_left='70%',range_color=range_colors # 设置视觉映射组件的颜色范围),)
)
bar.render_notebook()

上海市星巴克门店最多,超过了1000家。 广东省、浙江省、江苏省、北京市以超过500家的门店分列第二至五位。
4.对各省星巴克的占比进行可视化。
pie = (Pie().add(series_name='',data_pair=[list(z) for z in zip(x,y)],radius=['30%','50%'],label_opts=opts.LabelOpts(is_show=False,position='center')).set_global_opts(title_opts=opts.TitleOpts(title='各省星巴克门店数量占比',pos_top='2%',pos_left='center'),visualmap_opts=opts.VisualMapOpts(is_show=False,range_color=range_colors,max_=600,dimension=0),legend_opts=opts.LegendOpts(is_show=True, pos_right="2%", pos_top="8%",orient="vertical") #horizontal水平方向).set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{d}%'))
)
pie.render_notebook()
5.对各省星巴克的数量进行可视化
map = (Map().add('',[list(z) for z in zip(x,y)],maptype='china',is_map_symbol_show=False).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title='各省星巴克门店分布数量',pos_top='2%',pos_left='center'),visualmap_opts=opts.VisualMapOpts(is_show=True,max_=600,dimension=0,pos_top='80%',pos_left='20%',range_color=range_colors),legend_opts=opts.LegendOpts(is_show=True))
)
map.render_notebook()
6.各省数量的热力图可视化。
data_pair = []# 新建一个BMap对象
geo = Geo(init_opts=opts.InitOpts(theme='dark'))for _, row in data.iterrows():geo.add_coordinate(row['城市'], row['经度'], row['纬度']) data_pair.append([row['城市'], 1])geo = (geo.add_schema(maptype='china').add('',data_pair,type_='heatmap',symbol_size=5).set_series_opts(label_opts=opts.LabelOpts(is_show=True)).set_global_opts(title_opts=opts.TitleOpts(title='各城市星巴克门店数量分布热力图',pos_top='2%',pos_left='center'),visualmap_opts = opts.VisualMapOpts(pos_top='60%',pos_left='20%'),legend_opts = opts.LegendOpts(is_show=True))
)
geo.render_notebook()

7.对营业开始时间进行分析
data['开始营业时间'] = pd.to_datetime(data['开始营业时间'])
time_data = data['开始营业时间'].value_counts().reset_index().sort_values(by='index', ascending=True)
x = time_data['index'].tolist()
y = time_data['开始营业时间'].tolist()bar = (Bar().add_xaxis(x[::-1]).add_yaxis('',y[::-1]).set_global_opts(title_opts=opts.TitleOpts(title='开始营业时间分布',pos_top='2%',pos_left="center"),visualmap_opts=opts.VisualMapOpts(is_show=False),legend_opts=opts.LegendOpts(is_show=True, pos_right="8%", pos_top="8%",orient="vertical"),)
)
bar.render_notebook()

7.对一天内的营业时间进行可视化分析。
df_duration = data['营业时长区间'].value_counts()
df_duration_g = data.groupby('营业时长区间')['店铺名称'].count()
x_data = df_duration_g.index.tolist()
y_data = df_duration_g.values.tolist()
bar = (Bar(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,max_=2000,orient="horizontal",pos_top='70%',pos_left='20%',range_color=range_colors),legend_opts=opts.LegendOpts(is_show=True, pos_right="8%", pos_top="8%",orient="vertical"),)
)
bar.render_notebook()

相关文章:
数据可视化每周挑战——全国星巴克门店数据可视化
这是我国星巴克门店的位置,营业时间等数据。 1.导入需要用的库,同时设置绘图时用到的字体,同时防止绘图时负号无法正常显示的情况。 import pandas as pd from pyecharts.charts import Bar,Map,Line,Pie,Geo from pyecharts import option…...
【前端】js通过元素属性获取元素
【前端】js通过元素属性获取元素 <div for"hc_opportunity_config">aaaaa</div>//通过属性获取元素document.querySelector([for"hc_opportunity_config"]) document.querySelector([属性"属性值"])...
申请轻纺行业工程设计资乙级对企业有什么要求
注册资金:企业的注册资金应至少达到三百万,这是衡量企业经济实力和承担风险能力的重要指标。独立法人资格:企业应具备独立的法人资格,能够独立承担民事责任,并具备相应的经营自主权。专业技术人员配备:企业…...
基于单片机电梯控制系统设计与实现
摘 要: 介绍了电梯控制系统架构 , 指出了该系统的硬件设计和控制系统的软件设计以及系统调试 , 使系统可根据按键 要求完成载客任务,为电梯控制系统的优化提供了参考 。 关键词 : 电梯控制 ; 单片机 ; 系统设计 0 引言 在高层建筑中发挥…...
嵌入式单片机笔试题
DC-DC 和 LDO两者有何区别? DC-DC转换器(直流-直流转换器)和LDO(低压差线性稳压器)都是用于电源管理的设备,但它们在原理和特性上有一些显著的区别: 原理: DC-DC转换器通过改变输…...
生活小区火灾预警新篇章:泵吸式可燃气体报警器的检定与运用
在现代化的生活小区中,燃气设备广泛应用于居民的日常生活之中,但同时也带来了潜在的火灾风险。 可燃气体报警器作为一种安全监测设备,能够及时检测到燃气泄漏等安全隐患,并在达到预设的阈值时发出警报,提醒居民采取相…...
263 基于matlab得到的频分复用(FDM,Frequency Division Multiplexing)实现
基于matlab得到的频分复用(FDM,Frequency Division Multiplexing)实现,仿真时录入三路声音信号进行处理,将用于传输信道的总带宽划分成三个子频带,经过复用以后再将录入的声音信号恢复出来。程序已调通,可直接运行。 2…...
使用v-model完成数据的双向绑定
创作灵感 面试问道了,没答出来,呜呜呜~ v-model实现双向绑定的原理 首先我们要知道,v-model实现的双向绑定其实只是props与emit的简化版本。其中,props负责父组件向子组件传递值,emit负责子组件向父组件传递值。 在…...
如何使用Android NDK将头像变成“遗像”
看完本文的标题,可能有人要打我。你说黑白的老照片不好吗?非要说什么遗像,我现在就把你变成遗像!好了,言归正传。我想大部分人都用过美颜相机或者剪映等软件吧,它们的滤镜功能是如何实现的,有人…...
python判断字符串是否为回文串的详细解析与实现
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:回文串的定义与背景 二、判断回文串的基本思路 示例解析 三、代码实…...
148.【Windows DOS命令脚本文件】
Window待处理脚本 (一)、批处理编程初步体验1.什么是批处理程序?(1).批处理程序的定义(2).如何编辑批处理程序 2.批处理程序可以做什么?(1).匹配规则删除文件(2).新建文件,日志等(3).创建计算机病毒等 3.一个基本的批处理文件(1).带盘符的输出…...
推荐网站(13)plantumlb自动帮我们创建 UML 图表
今天推荐一个网站plantumlb,它可以自动帮我们创建 UML 图表。 plantumlb网站中的PlantUML是一个开源工具,它允许用户使用简单的文本描述来创建UML(统一建模语言)图表。PlantUML支持多种类型的UML图表,包括用例图、类图…...
【vue-1】vue入门—创建一个vue应用
最近在闲暇时间想学习一下前端框架vue,主要参考以下两个学习资料。 官网 快速上手 | Vue.js b站学习视频 2.创建一个Vue3应用_哔哩哔哩_bilibili 一、创建一个vue3应用 <!DOCTYPE html> <html lang"en"> <head><meta charset&q…...
【微信小程序开发】小程序前后端交互--发送网络请求实战解析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
【NOIP2013普及组复赛】题2:表达式求值
题2:表达式求值 【题目描述】 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 【输入文件】 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “ ” “” “”和乘法运算符 “ ∗ ” “…...
datasheet芯片数据手册—新手入门学习(二)【8-18】
参考芯片手册已经上传,可自行下载 因为芯片参考手册内容比较多,故再一次介绍本文内容主要讲解章节。 目录 8、内容介绍 命令真值表 9、Command Definitions 10、READ Operations (1)页面读取操作 (2ÿ…...
UE5 双手握剑的实现(逆向运动学IK)
UE5 双手握剑的实现 IK 前言 什么是IK? UE官方给我们提供了很多对于IK处理的节点,比如ABRIK、Two Bone IK、Full Body IK 、CCD IK等,但是看到这,很多人就好奇了,什么是IK? 首先我们来看看虚幻小白人的骨…...
Java中的接口(Interface)及其与抽象类的区别
一、技术难点 在Java中,接口是一种完全抽象的类,主要用于定义一组方法的规范,但不提供具体的实现。接口的技术难点主要体现在以下几个方面: 方法的定义与实现分离:接口只定义了方法的签名,没有方法体&…...
代码随想录算法训练营第十四天(py)| 二叉树 | 递归遍历、迭代遍历、统一迭代
1 理论基础 1.1 二叉树的种类 满二叉树 只有度为0和2的节点,且度为0的节点在同一层。 深度为k,有2^k-1个节点 完全二叉树 除了最底层可能没填满,其余每层节点数都达到最大。并且最底层节点全部集中在左边。 二叉搜索树 是一个有数值…...
Golang并发编程-协程goroutine初体验
文章目录 前言一、Goroutine适合的使用场景二、Goroutine的使用1. 协程初体验 三、WaitGroupWaitGroup 案例一WaitGroup 案例二 总结 前言 学习Golang一段时间了,一直没有使用过goroutine来提高程序执行效率,在一些特殊场景下,还是有必须开启…...
3分钟快速上手:用BetterNCM安装器彻底改造你的网易云音乐
3分钟快速上手:用BetterNCM安装器彻底改造你的网易云音乐 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在使用功能单一的网易云音乐吗?想不想让你的播放器拥…...
【DeepSeek测试用例生成实战指南】:20年QA专家亲授5大高覆盖率生成模式与3个避坑红线
更多请点击: https://codechina.net 第一章:DeepSeek测试用例生成的核心价值与适用边界 DeepSeek系列大模型在代码理解与生成任务中展现出显著的上下文建模能力,其测试用例生成功能并非通用“黑盒测试器”,而是聚焦于**单元级、函…...
告别外部中断!用EnableInterrupt库轻松搞定Arduino Nano多通道PWM读取(附完整代码)
Arduino Nano多通道PWM读取实战:用EnableInterrupt突破硬件限制当你用Arduino Nano开发四轴飞行器或机器人项目时,是否遇到过这样的尴尬:遥控器的四个通道PWM信号需要同时读取,但Nano只有两个外部中断引脚?这个问题困扰…...
Python基础语法:常用内置函数
round():四舍五入 # 省略 ndigits print(round(3.14)) # 输出 3(int) print(round(3.66)) # 输出 4# 指定 ndigits print(round(3.14159, 2)) # 输出 3.14(float) print(round(3.666, 2)) # 输出 3.67# …...
Python合并Excel文档
有若干个Excel文档,每个文档格式一致,及第一行为文件标题,第二行为表格表头(表头不完全一致)。现需要将他们合并。合并规则为:去掉每个文档的第一行,以第二行为表头,将每个文档的第三…...
ROS Noetic实战:从bag包里‘抠’出雷达点云和IMU数据的保姆级教程(Ubuntu 20.04)
ROS Noetic实战:从bag包里提取雷达点云和IMU数据的完整指南(Ubuntu 20.04)在机器人开发中,ROS bag文件就像是一个装满珍贵数据的宝箱,而雷达点云和IMU数据则是其中最闪亮的宝石。作为一名长期与ROS打交道的开发者&…...
Atomic Layout核心概念解析:Composition组件如何实现布局与间距分离的终极指南
Atomic Layout核心概念解析:Composition组件如何实现布局与间距分离的终极指南 【免费下载链接】atomic-layout Build declarative, responsive layouts in React using CSS Grid. 项目地址: https://gitcode.com/gh_mirrors/at/atomic-layout Atomic Layout…...
ImageGlass:一个支持90+图像格式的轻量级Windows图片查看器
ImageGlass:一个支持90图像格式的轻量级Windows图片查看器 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 还在为Windows自带的图片查看器功能单一而烦恼吗&…...
还在手动触发Lindy子任务?这6个隐藏API+3个低代码集成技巧,今天就能上线全自动流水线
更多请点击: https://kaifayun.com 第一章:Lindy多步骤任务自动化的价值与演进路径 Lindy效应指出,一项技术的预期剩余寿命与其当前已存在时间正相关;在自动化领域,Lindy原则催生了对“经久验证、语义稳定、可组合性强…...
yuzu模拟器:在PC上完美运行Switch游戏的终极解决方案
yuzu模拟器:在PC上完美运行Switch游戏的终极解决方案 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想要在电脑上体验任天堂Switch游戏的魅力吗?yuzu模拟器作为目前最成熟的开源Switch模拟…...
