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

news2024/12/24 2:23:48

这是我国星巴克门店的位置,营业时间等数据。

1.导入需要用的库,同时设置绘图时用到的字体,同时防止绘图时负号无法正常显示的情况。

import pandas as pd
from pyecharts.charts import Bar,Map,Line,Pie,Geo
from pyecharts import options as opts
import matplotlib.pyplot as plt

plt.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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1693625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iBarcoder for Mac v3.15.1中文激活版:让条形码生成变得如此简单

在现代社会,条形码无处不在,从超市商品到物流包裹,都离不开它的身影。iBarcoder for Mac作为一款简单易用的条形码生成软件,让条形码的生成变得如此简单。 iBarcoder for Mac v3.15.1中文激活版下载 无论你是需要为商品添加条形码…

springboot打包目录解析

一、引言 Java开发中我们使用最多的便是spring框架,比如springboot应用。微服务模式下,每个服务都是一个springboot应用,都会被打包成一个可执行jar包。那么我们有多少人尝试去了解过这个可执行jar到底是什么?它的结构是什么样的…

论文阅读--CLIPasso

让计算机把真实图片抽象成简笔画,这个任务很有挑战性,需要模型捕获最本质的特征 以往的工作是找了素描的数据集,而且抽象程度不够高,笔画是固定好的,素描对象的种类不多,使得最后模型的效果十分受限 之所以…

算法之背包问题

可分的背包问题是可以用贪心法来解决,而0-1背包问题通常使用动态规划方法来解决。 可分背包问题: 在可分背包问题中,物品可以被分割,您可以取走物品的一部分以适应背包的容量。这里的关键是物品的价值密度,即单…

GNSS中的多路径效应原理及计算方法

1 多路径效应原理 图1 多路径效应原理图 2 计算方法 如需原文,可加多源融合定位与智能控制讨论群获取,QQ群号:51885949

JAVAEE之线程(10)_线程池、线程池的创建、实现线程池

一 线程池 1.1为什么要有线程池? 线程池顾名思义是由多个线程所组成,作用就是减少线程的建立与销毁,与数据库连接池相同概念,为了减少连接与释放,从而降低消耗提升效率。 1.2 线程池的优势 总体来说,线程…

Milvus Cloud 非结构化数据平台

从技术面来看,向量数据库底座自然而然向外延伸的产品包含: 1)向量提取,从非结构化数据中提取向量,这是向量数据库上游的工作,十分重要; 2)模型选择,选择正确的模型,能够更精准、更高质量地提取向量; 3)映射管理,即管理数据的本体和数据的语义层之间的映射,在…

设计模式之创建型模式---原型模式(ProtoType)

文章目录 概述类图原型模式优缺点优点缺点 代码实现 概述 在有些系统中,往往会存在大量相同或者是相似的对象,比如一个围棋或者象棋程序中的旗子,这些旗子外形都差不多,只是演示或者是上面刻的内容不一样,若此时使用传…

【spring】@RequestBody注解学习

RequestBody介绍 RequestBody 是 Spring Framework 中的一个注解,用于将 HTTP 请求的正文绑定到处理方法的参数上。这个注解通常用于处理 POST 或 PUT 请求,这些请求通常包含 JSON 或 XML 格式的数据。 RequestBody 将 HTTP 请求的正文内容转换成指定的…

前端vue项目遇到的问题01——那些初级问题

前端vue项目遇到的问题01——那些初级问题 1. npm install 问题1.1 依赖冲突1.1.1 详细问题1.1.2 报错原因1.1.3 解决问题1.1.3.1 方式1——无视冲突1.1.3.1 方式2——更换依赖版本 1.2 nodejs版本问题1.3 node版本正确的情况(audit问题)(这个…

OpenH264 编解码器介绍

思科 思科系统(英语:Cisco Systems, Inc.)是一间跨国际综合技术企业,总部设于加州硅谷;思科开发、制作和售卖网络硬件、软件、通信设备等高科技产品及服务,并透过子公司(例子有OpenDNS、Webex、…

【C语言】整型提升与char取值范围

整型提升介绍 C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中字符、短整型操作数在使用前被转换为普通整型。而这个过程是悄悄发生的。 整型提升的意义: 表达式的整型运算要在CPU…

小米财报:业绩远超预期,汽车推着手机跑!

随着一季度财报陆续出炉,企业间的分化越来越明显。 新环境下,很多公司都陷入停滞时,去讨论“掉队”已经没有多少意义,现在真正值得我们关注的,是那些在逆风情况下,还能“领先”的企业。毫无疑问&#xff0…

小程序主体变更是通过迁移吗?是需要2个小程序吗?

小程序迁移变更主体有什么作用?好多朋友都想做小程序迁移变更主体,但是又不太清楚具体有啥用,今天我就来详细说说。首先,小程序迁移变更主体最重要的作用就是可以修改主体。比如你的小程序原来是 A 公司的,现在 A 公司…

2024-5-9-从0到1手写配置中心Config之@ConfigurationProperties热更新

在PropertySourcesProcessor中,需要通过http从config-server获取配置。 使用ConfigMeta包装服务信息 在MidnightConfigService接口中添加默认实现类 继承MidnightRepositoryChangeListener接口;获取默认的MidnightRepository;创建MidnightCo…

12306技术内幕

公司内部做的一次技术分享 文章目录 12306的成就12306系统特点12306系统难点解决思路产品角度技术角度余票库存的表如何设计? 抢票软件推荐巨人的肩膀 对于未公开的技术部分,只能结合已公开的信息,去做大胆的猜想。 本文提到的一些解决方案&…

chatgpt线性差值 将直线渐变颜色

color(x)(x-x1)/(x2-x1) 与gpt给出的 这个位置比例可以表示为d/L是概念相同 x-x1是计算当前点距离起点距离,x2-x1是计算长度 例如,如果我们在直线上距离起点A的距离为d,整条直线的长度为L 用数学方式解释 2024/5/25 18:54:30 当我们要在一…

【算法例题】递推与递归

刚讲完递推和递归,趁热打铁,给大家出点例题。 没学过的,先去学一下。 【算法】递推&递归https://blog.csdn.net/yangyanbin_sam/article/details/139182393?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22…

⌈ 传知代码 ⌋ 基于扩散模型的无载体图像隐写术

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…