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

这是我国星巴克门店的位置,营业时间等数据。
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来提高程序执行效率,在一些特殊场景下,还是有必须开启…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...
