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

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

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

  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一份关于西安地铁客流量分析的数据课程设计: 1. 课程目标:通过本课程的学习,学生将能够了解数据的基础知识和技术,掌握如何使用数据工具分析和展示西安地铁的客流量数据,提高学生的数据分析和可能力。 2. 课程内容: (1)数据类型和格式:介绍常见的数据类型和格式,包括文本、表格、图像、JSON等。 (2)数据准备和清洗:讲解如何准备和清洗数据,包括数据获取、数据预处理、数据清洗等。 (3)可工具和技术:介绍常见的数据工具和技术,包括Python的Matplotlib、Seaborn、Plotly等,以及Tableau、PowerBI等商业工具。 (4)数据分析和可案例:通过具体的案例分析,让学生了解如何使用数据工具分析和展示西安地铁的客流量数据,例如客流量的时间分布、空间分布、高峰期客流量分析等。 3. 教学方法:采用讲解、案例分析、实践操作、小组讨论等教学方法,以满足学生的不同需求和学习风格。 4. 课程评估:设计实践项目和考试,以检验学生的学习效果和能力。实践项目可以要求学生使用具体的数据工具完成西安地铁客流量数据的分析和展示,考试可以采用选择题、填空题、简答题等形式。 5. 资源准备:准备必要的教学资源,例如PPT、教材、参考书籍、数据集等,以帮助学生更好地理解课程内容和实践操作。数据集可以从公开的数据源中获取,例如西安地铁公司官网、国家数据等。 6. 实践项目:设计实践项目,让学生使用具体的数据工具完成西安地铁客流量数据的分析和展示。可以要求学生在特定的时间段内,收集某一地铁站的客流量数据,并使用数据工具展示数据分析结果,例如时间序列图、热力图、地图等。 以上是一份关于西安地铁客流量分析的数据课程设计,希望能对您有所帮助。如果您需要更加具体的帮助或者有其他问题,欢迎随时向我提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值