24 Pandas+Pyecharts | 2019_2022年全国旅游酒店数据分析可视化

大家好,我是欧K~

本期利用 python 的 pyecharts 和 matplotlib 可视化库分析一下疫情前(2019年)和疫情后(2022年)全国各旅游地区酒店登记情况,希望对小伙伴们有所帮助,如有疑问或者需要改进的地方可以给小编留言。

1. 导入模块

import pandas as pd
from pyecharts.charts import Line
from pyecharts.charts import Bar
from pyecharts.charts import Map
from pyecharts.charts import Grid
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.style.use('ggplot')
import warnings

2. Pandas数据处理

2.1 读取数据

df_2019_1 = pd.read_excel('./2019年第四季度全国星级饭店经营情况统计表(按地区分).xlsx', header=2)
df_2019_1.head(10)
df_2022_1 = pd.read_excel('./2022年第四季度全国星级饭店经营情况统计表.xlsx', header=1)
df_2022_1.head(10)

2.2 数据处理

df_2019_1 = df_2019_1[2:-1].reset_index(drop=True)
df_2022_1 = df_2022_1[2:-1].reset_index(drop=True)

cols = ['地区', '数量(家)', '营业收入(亿元)', '餐饮收入比重(%)', '客房收入比重(%)', '平均房价(元/间夜)',
        '平均出租率(%)', '每间可供出租客房收入(元/间夜)', '每间客房平摊营业收入(元/间)', '平均房价同比(%)',
        '平均出租率同比(%)', '每间可供出租客房收入同比(%)', '每间客房平摊营业收入同比(%)']
df_2019_1.columns = cols
df_2022_1.columns = cols

df_hotel = df_2019_1[['地区', '数量(家)']]
df_hotel.columns = ['地区', '2019_数量(家)']
df_hotel['2022_数量(家)'] = df_2022_1['数量(家)']
df_hotel = df_hotel.sort_values('2019_数量(家)')
df_hotel['2019_数量(家)'] = df_hotel['2019_数量(家)']

3. Pyecharts数据可视化

3.1 第四季度全国星级饭店经营情况统计表

def get_bar1(df_hotel):
    bar = (
        Bar()
        .add_xaxis(df_hotel['地区'].values.tolist())
        .add_yaxis('2019年全国各地区酒店数量',
                       df_hotel['2019_数量(家)'].values.tolist(),
                       stack='1',
                       tooltip_opts=opts.TooltipOpts(is_show=False)
                       )
        .add_yaxis('2022年全国各地区酒店数量',
                       df_hotel['2022_数量(家)'].values.tolist(),
                       stack='1',
                       tooltip_opts=opts.TooltipOpts(is_show=False),
                       )
        .set_global_opts(
            tooltip_opts=opts.TooltipOpts(is_show=True, trigger='axis', axis_pointer_type='cross'),
            title_opts=opts.TitleOpts(
                title='2019_2022年全国各地区酒店数量(家)',pos_top='1%',pos_left='37%',title_textstyle_opts=opts.TextStyleOpts(font_size=20,color='#fff000')),
            legend_opts=opts.LegendOpts(is_show=True, pos_top='6%',pos_left='36%'),
            xaxis_opts=opts.AxisOpts(is_show=False, max_=500),
            yaxis_opts=opts.AxisOpts(
                axisline_opts=opts.AxisLineOpts(is_show=False),
                axislabel_opts=opts.LabelOpts(color='#00c6d7', font_size=12, font_weight='bold')),
            )
        ).reversal_axis()
  return bar

3.2 2022年全国各地区酒店登记数量

def get_map1(df_hotel):
    map_2022 = (
        Map()
        .add('',
             [list(z) for z in zip(df_hotel['地区'].values.tolist(), df_hotel['2022_数量(家)'].values.tolist())],
             maptype='china',
             is_map_symbol_show=False,
          )
        .set_global_opts(
            visualmap_opts=opts.VisualMapOpts(
                is_show=True,
                is_piecewise=True,
                min_ = 0,
                max_ = 500,
                split_number = 5,
                series_index=0,
                pos_top='70%',
                pos_left='20%',
            ),
            title_opts=opts.TitleOpts(
            title='2022年全国各地区酒店登记数量(家)',
            pos_left='center',pos_top='3%',
            title_textstyle_opts=opts.TextStyleOpts(color='#fff200',font_size=20))
        )
    )
    return map_2022

3.3 2019年全国各地区酒店登记数量

3.4 2019_2022_营业收入(亿元)

酒店营业额方面基本上各个地区都出现下滑的情况,北上广等地收入缩水最为严重

3.5 2019_2022_平均房价(元/间夜)

  • 大部分地区酒店平均价格都出现了一定幅度的,上海、北京、新疆等地下调尤为明显
  • 海南、河北、西藏、内蒙古、宁夏等五地酒店平均价格出现上调的情况

3.6 2022年全国50个重点旅游城市星级饭店数量

def get_count_50(x_data,y_data1,y_data2,y_data3):
    b2 = (
        Bar(init_opts=opts.InitOpts(theme='purple-passion',width='500px', height='1400px',bg_color='#0d0735'))
        .add_xaxis(x_data)
        .add_yaxis("三星饭店数量", y_data1, stack="stack1",itemstyle_opts=opts.ItemStyleOpts(color='#00b2a9'))
        .add_yaxis("四星饭店数量",y_data2, stack="stack1",itemstyle_opts=opts.ItemStyleOpts(color='#203fb6'))
        .add_yaxis("五星饭店数量",y_data3, stack="stack1",itemstyle_opts=opts.ItemStyleOpts(color='#e7298a'))
        .set_global_opts(
            tooltip_opts=opts.TooltipOpts(is_show=True, trigger='axis', axis_pointer_type='cross'),
            title_opts=opts.TitleOpts(
                title='2022年全国50个重点旅游城市星级饭店数量(家)',
                pos_top='1%',
                pos_left='center',
                title_textstyle_opts=opts.TextStyleOpts(font_size=20,color='#fff000')),
        )
        .reversal_axis()
    )
    return b2

4. 源码+数据

下载资源