• 疫情后来场说走就走的旅行,Python制作一份可视化的旅行攻略


     

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    疫情结束后,你最想做什么?摘掉口罩,出门晒晒太阳;吃货们,是去韩国菜?还是撸串?还是火锅?和家人待几天,弥补春节缺失的陪伴;走进曾经熟悉的电影院,把错过的贺岁大片全部都要一一补上。

    当疫情结束后,是否想要去英雄城市武汉,看看樱花,在户部巷吃上一碗热干面,看一看车来车往的长江大桥。是否将有更多的旅行计划,不管是哪里的美景,都想要去看看。

    旅行是为了放松心情、体验地方特色。为了一场完美的旅行,制作一份详细的旅行攻略是必不可少的。为此小编在上一篇文章中已爬取了《去哪儿》攻略库,获取了近3.8份攻略数据。数据字段有:区域、目的地、标题、链接、攻略作者、出发日期、天数、照片数、人数、玩法、费用、阅读数、点赞数、评论数、行程等。

     

     

    数据预处理

    对于获取的数据,我们需要进行进一步的处理以满足分析的需求,我们主要做的数据处理步骤如下:

    • 删除重复值
    • 修正字段
    • 删除不需要字段

    具体代码实现

    #数据读取
    import pandas as pd
    import re
    #数据读取
    base_data =  pd.read_excel('trip_data_merge.xlsx')
    #删除重复值
    base_data.drop_duplicates(inplace=True)
    #分析中不需要的字段
    base_data = base_data.drop(['链接'], axis=1)
    #字段修正,方便统计
    base_data['天数']= base_data['天数'].apply(lambda x :re.sub("D", "", x) )
    base_data['照片数']= base_data['照片数'].apply(lambda x :re.sub("D", "", x) )
    base_data['费用']= base_data['费用'].apply(lambda x :re.sub("D", "", str(x) ))
    base_data['费用'] = base_data['费用'].apply(lambda x : eval(x) if len(x)>0 else 0 )
    base_data['date']= base_data['出发日期'].apply(lambda x :x.split( )[0] )
    base_data['date_year']= base_data['出发日期'].apply(lambda x :x.split( )[0][:4])
    base_data['阅读数']= base_data['阅读数'].apply(lambda x : int(re.sub("D", "", str(x)))*10000 if str(x).find('') else x)

    数据分析、可视化

    费用问题

    外出旅行,首先要考虑的肯定的费用问题。因疫情原因,在费用的数据分析统计中,我们剔除了2020年的数据,考虑了2017年、2018年、2019年的数据。

     

    上图展示了近三年主要热门目的地人均消费情况,包含国内、国外热门地区。根据数据统计,国外人均平均消费为9461元,国内为3313元,游客在国外消费是国内消费的2.85倍。国内人均消费的排名前四名:丽江、三亚、香港、上海。在国外消费前四名:马尔代夫、法国、美国、日本。为什么游客在马尔代夫的人均消费比上海人均消费高达6倍的差距呢?

    游客人群

    马尔代夫游客人群分布

     

    上海游客人群分布

     

    马尔代夫,一个名字听起来就让人浮想联翩的地方,被称作上帝抛洒在人间的项链,人间最后的乐园,吸引了很多人去度假休闲,其中情侣占比高达54.8%,再加上机酒消费,这也成为马尔代夫消费高的一个重要原因,上海游客人群比较分散,其中情侣占比15%左右,一人旅行、三五好友占比相对较高。

    逗留时长

    上海游客逗留时长

     

    马尔代夫游客逗留时长

     

    判断一个城市对游客对心引力,游客逗留时间是最核心指标。从上图我们可以看到马尔代夫的逗留时间占比中4-7天、8-10天合计占比高达80%以上。上海逗留时间在1-3天占比为52.45%,4-7天、8-10天合计占比约为41%,这样是马尔代夫人均消费高的一个重要因素。

    玩法攻略

    我们可以看到,美食、购物+美食、短途周末、海滨海岛、自驾等玩法是大家的最爱,探险、环游、骑行等也收到不少人的喜爱,你喜欢什么样的玩法呢?

    打卡景点

    去一个地方去旅行,有些景点必须要去的,对于一个陌生的城市,怎么样可以快速确定打卡景点呢?小编选择了上海、成都、武汉,看看这些是否有遗漏的打卡景点呢。

     

     

     

    最赞路线

    想去的打卡景点都有了,我们要有一个最完美的路线,小编在下面梳理一下网友点赞最高的路线,你是否满意呢?下面进行图片展示。

     

    结论

    至此,小编已带大家了解一下旅游目的地的平均消费情况、玩法攻略、打卡攻略、最赞路线等,如果你有什么问题,欢迎评论区留言,因篇幅展示问题,附上部分核心代码

    核心代码展示

    #上海游客旅游逗留天数占比
    from pyecharts import options as opts
    from pyecharts.charts import Pie
    from pyecharts.faker import Faker
    
    c = (
        Pie()
        .add(
            "",
            [list(z) for z in zip(list(base_data_city_day_sh['天数']), list(base_data_city_day_sh['num']))],
            radius=["40%", "55%"],
            label_opts=opts.LabelOpts(
                position="outside",
                formatter="{a|{a}}{abg|}
    {hr|}
     {b|{b}: }{c}  {per|{d}%}  ",
                background_color="#eee",
                border_color="#aaa",
                border_width=1,
                border_radius=4,
                rich={
                    "a": {"color": "#999", "lineHeight": 22, "align": "center"},
                    "abg": {
                        "backgroundColor": "#e3e3e3",
                        "width": "100%",
                        "align": "right",
                        "height": 22,
                        "borderRadius": [4, 4, 0, 0],
                    },
                    "hr": {
                        "borderColor": "#aaa",
                        "width": "100%",
                        "borderWidth": 0.5,
                        "height": 0,
                    },
                    "b": {"fontSize": 16, "lineHeight": 33},
                    "per": {
                        "color": "#eee",
                        "backgroundColor": "#334455",
                        "padding": [2, 4],
                        "borderRadius": 2,
                    },
                },
            ),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="上海游客逗留时间占比"))
        .render("上海游客逗留时间占比.html")
    )

    词云图

    import stylecloud
    from IPython.display import Image # 用于在jupyter lab中显示本地图片
    result_gap = ' '.join(result)
    # 绘制词云图
    stylecloud.gen_stylecloud(text=result_gap, 
                              max_words=1000,
                              collocations=False,
                              font_path=r'msyh.ttf',
                              icon_name='fas fa-plane-departure',
                              size=624,
                              output_name='打卡词云图.png')
    
    Image(filename='打卡词云图.png') 
  • 相关阅读:
    数组实战---集合了一些常用函数
    PHP正则表达式函数
    ThinkPHP学习之-------视图
    ThinkPHP小技巧之改变应用名称
    ThinkPHP中常用总结一CURD操作
    PHPExcel从数据库导出数据
    用PHP脚本来拆分字符串并形成两个新字段
    PHPExcel导出数据的基本使用方法
    php 中文切割字符串长度
    Nginx 在configure时的参数
  • 原文地址:https://www.cnblogs.com/hhh188764/p/13198227.html
Copyright © 2020-2023  润新知