1 项目摘要

Airbnb成立于2008年8月,是一个旅行房屋租赁社区,用户可发布、搜索度假房屋租赁信息并完成在线预定。2015年,Airbnb正式进入中国市场,在国内掀起了一波城市民宿的热潮。本项目基于Airbnb公开数据集,从用户角度出发,对Airbnb在北京地区的运营数据进行可视化处理,制作数据面板以探索北京地区的房源分布、价格趋势以及用户评价。

2 分析思路

需求理解——发掘用户关注点

假设一个从没到过北京的新用户访问了Airbnb北京地区的网页,TA首先希望了解的可能是该地区的房源分布、房屋类型,以便决定自己要住在哪里、有哪些房型可供选择,因此展示不同地段的房源分布和房型是有必要的;其次TA通常会看看各地区不同房型的租金,考虑是否符合自己的预算,那么我们需要提供房源价格的相关信息;接下来TA可能想进一步了解各种房源的评价,寻找一处舒心的居所或是避免踩坑,所以我们应该附上房源相关的评价信息……综上,可视化中需要包含的要素可以归纳如下

  • 地理位置
  • 房屋类型
  • 房源价格
  • 房源/房主评价

除了提供相关信息之外,考虑到需要呈现的数据量,采取何种方式聚合以及呈现数据也是需要斟酌的问题。在下文中将会结合使用的数据具体描述数据的呈现方式。

数据理解

Airbnb提供的数据集由6个表组成,包括39,732个房屋id及其对应的14,234个房东id,涵盖了地理位置、房源概况、住宿条件、预订要求、房东评价等方面的内容。主要表结构如下:

表名称 功能与结构
listings_detail.csv 房源的基本概况。用id和host_id区分每个房源及其房主,一条记录对应一个房源id,id具有唯一性。
reviews_detail.csv 住客的评价信息。Listing_id对应listings表中的房屋id,每一行代表一位用户对一个房源的评价。
calendar.csv 未来365天的房源预订信息。listing_id对应listings表中的id项,对于每个唯一的listing_id均有365条记录,表示该房源在未来365天内的每日预订信息。
neighbourhoods.geojson 提供了北京各区的地理位置信息

其中,listings表和reviews表分别有一个子表项,用于快速展示部分字段内容;
listings_detail表由106个字段构成,记录了39,732个房源的基本情况,提供了制作数据面板的主要信息;reviews_detail表由298,807个带有6个属性的评论组成,提供了listings表中的超过2W条房源的评价详情;
calendar表提供了39,732个房源在未来365天内的详细预定信息,共计14,502,180条。包括日期,价格,最大/最小起订天数。
neighbourhoods表提供了geojson格式的地理位置信息,可以用于绘制各区域的地图。

围绕上述可能的用户关注点,结合所拥有的数据,选择需要展现的字段,然后就可以开始进入数据准备与可视化的阶段了。

3 数据准备

Airbnb提供的数据源主要为.csv格式,且数据量较大,为保证结果的准确可靠以及展示质量,在可视化之前需要检查数据完整性并筛选出需要的数据以避免不必要的资源消耗。本项目使用postgreSQL进行数据的预处理。

数据导入和导出

由于数据量较大,使用INSERT语句插入数据耗时漫长,且容易出错;采用postgreSQL提供的COPY语句将.csv文件的内容复制到相同结构的空表中,可以大大提升数据导入导出的效率*。代码实现示例如下:

--COPY语句导入csv内容(.csv文件要放在data文件夹下的tmp路径中)
COPY calendar(listing_id, date, available, price, adjusted_price, minimum_nights, maximum_nights)
FROM 'E:\...\calendar.csv'
WITH csv HEADER;

*实测在主流家用机配置(i5 7代 16+256G SSD)下,使用COPY语句导入7*1400W+条记录用时<90s,而使用INSERT语句插入相同规模数据耗时30min以上

数据清洗

去重
主要核查房源id和listing_id,未发现重复字段。

缺失值处理
Calendar表中的price和adjusted_price字段存在空值1095条和0值2247条,其中6个listing_id没有任何price记录,直接予以删除;考虑到Calendar表对应的每个listing_id均有365条记录,因此取其平均值用于填充空字段。

格式同一化
数据源中的price字段采用货币格式存储数据,且单位为美元$(结合物价实际,实际价格单位应为RMB),需要将其格式修改为数值型NUMERIC以便排序:

BEGIN TRANSACTION;
UPDATE calendar
SET price = ROUND(CAST(REPLACE(REPLACE(REPLACE(price, '$' , ''), '.', ''), ',', '') AS NUMERIC)/100,2), adjusted_price = ROUND(CAST(REPLACE(REPLACE(REPLACE(adjusted_price, '$' , ''), '.', ''), ',', '') AS NUMERIC)/100,2)
;
COMMIT;

异常值处理
在reviews_detail表中发现comments字段内存在系统自动评价,系因住客取消预订产生,需要去除。共计3435条无效评论,涉及2909个listing_id:

--查找系统自动好评
SELECT COUNT(*) AS illegal_com,COUNT(DISTINCT listing_id) AS cnt_id
FROM reviews_detail
WHERE comments LIKE '%This is an automated posting%';

可视化处理

根据前文归纳的用户关注要素,从清理后的数据集中提取以下特征进行可视化展示,数据导入Tableau中绘制可视化图表:

地理位置
首先对北京各城区的房屋均价、房屋数量及房主数量结合地理位置信息进行展示,以便用户了解基本情况。考虑到展示对象可能包含初次到访北京的用户,在neighbourhoods表中为各区增加了details字段,其内容为对北京各个城区的旅游信息简介。利用在Tableau中生成地图信息并插入注释框,通过右侧的筛选器可以查看各个地区的概况。

房源分布
在地理位置的基础上,按房型分类统计各区房源数量,通过饼图直观地展示了各类型房源的占比。同时,利用图形大小反映各区房源数量差异,间接体现了房源密度分布情况。具体数据以注释的方式添加到图表中,移动鼠标到相应图形上即可显示,避免直接呈现的信息量过载。

价格与评分差异
延用相同的逻辑,按区域展示各个房源的价格与评分差异。注意到房源价格差异较大,从几十元一晚的合租房到大几万元的整租不等,而大部分房价则集中于千元以下的范围内。因此,考虑使用对数价格以展示完整的价格分布趋势,并通过箱线图的形式便于用户看出价格的分散性。

此外,每个数据点对应一个房源ID,可以用颜色标记各房源的评分情况。由于房源评分集中于70~100区间,故设置颜色的分界线为70分数段,以突出显示低于一般评价水平的房源,有利于用户避坑。同样地,出于减少信息过载的考量,将具体评价内容以及价格、评分等数据以注释的形式嵌入数据点,可通过移动鼠标展示。

最后,将制作完成的各个图表整合为数据面板(Dashboard),添加必要的筛选器和图例,完成发布。

4 结果展示

制作完成的数据面板由5部分组成,整体布局如下图所示:

各区简介模块主要展示了区域旅游资源概况、房源数量以及均价水平;
Airbnb时间线模块以时间轴为线索展示了各区域的评论变动。朝阳区是Airbnb最早进入的领地,而在2017年后,Airbnb的经营范围已遍布北京各区;
Airbnb房型模块展示了各区的房型分布以及房源密度情况。目前房源主要集中于主城区,以全屋整租(Entire Home)为主,合租房的占比很小;
Airbnb房东模块以气泡图的展示了各区房源的归属情况,每个气泡代表一位房东,而气泡大小则对应房东名下房源的数量多少;
Airbnb房源均价模块展示了各区房源的价格与评分的差异。

用户可以根据自己的需求和兴趣探索相应模块提供的细节信息。例如,将房源均价模块中的坐标调整至线性,范围设定在0~5000,可以对比各区域房价的离散性,如下图所示。相较于对数坐标,线性坐标能够更直观地反映价格分布的差异,图中显示了怀柔区房源价格离散程度最大,其房价中位数达到了985RMB/晚,明显高于平均水平;而下四分位数为542,甚至超过了大部分城区75%的房源价格;与其邻近的延庆县也出现了类似情况,结合房型模块中给出的房源分布数据可以得出结论,Airbnb在北部郊区房源密度较低,价格差异大,需要慎重选择。

小结
本项目从Airbnb官网获取了北京地区的公开数据集,并使用SQL对其进行了清理和筛选;从用户需求角度出发,分析了用户关注点,从地理位置、房屋类型、房源价格、房源评价等维度呈现了用户选择房源可能考虑的问题;通过叠加地图、气泡图、箱线图等图表对数据进行了可视化处理,并汇总为数据面板以供用户根据自己的需求和兴趣探索相关信息。后续可利用本项目提供的数据展示进行运营方向的探索,利用不同维度的组合与聚合发掘更多洞察,提升用户的居住体验,帮助用户避坑。

参考与致谢

数据来源: Inside Airbnb
作品发布: Tableau Public - Project of Airbnb Beijing

Airbnb 北京地区数据可视化——用户篇相关推荐

  1. 知乎爬虫与数据分析(二)pandas+pyecharts数据可视化分析篇(上)

    注:代码完整版可移步Github--https://github.com/florakl/zhihu_spider. 知乎爬虫与数据分析(一)数据爬取篇 知乎爬虫与数据分析(三)pandas+pyec ...

  2. echart雷达图文字挤在一起_【数据可视化·图表篇】雷达图

    数据可视化基础图表系列的最后一篇终于跟大家见面了!今天小数将带大家走进雷达图. (之前关于柱状图.折线图.饼图和散点图的分享文章,感兴趣的小伙伴可以查看历史文章哦) 为方便大家理解,本文生成图表所使用 ...

  3. Python爬虫 —3000+条北京二手房数据可视化分析

    关注公众号:[小张Python],为你准备了 50+ 本Python 精品电子书籍 与 50G + 优质视频学习资料,后台回复关键字:1024 即可获取:如果对博文内容有什么疑问,公众号后台添加作者[ ...

  4. chart.js 饼图显示百分比_【数据可视化.图表篇】饼图

    上一次我们介绍了 Excel 其中两大男神:柱状图和折线图,这次小数接着带大家追另外一位憨态可掬的男神:饼图. (为了让大家有更直观的感受,基础图表篇系列文章里的图表都是借助 Excel 生成) 按套 ...

  5. 数据可视化---plotly篇

    plotly https://plot.ly/python/ plotly是现代平台的敏捷商业智能和数据科学库,它作为一款开源的绘图库,可以应用于Python.R.MATLAB.Excel.JavaS ...

  6. 北京房价信息(2002-2018)数据可视化

    本文是数据可视化的第二篇练习文,目的是承接上一篇中国全国各省结婚率和离婚率数据可视化 该篇文章主要使用的是Python数据可视化,用来分析北京地区从2002到2018年房价的趋势变化 为了方便读者理解 ...

  7. 数仓第6篇:大数据可视化BI工具

    目录 导读: 开源BI工具 Superset Redash metabase CBoard Davinci SpagoBI Pentaho 商业BI工具 FineBI QlikView Tableau ...

  8. 《数据可视化》之小白学习篇(一)

    本博客记录这学期关于数据可视化的一些学习,由于我是一个菜鸟,编程能力很弱,希望看到的大佬不要笑话. 文章目录 前言 一.为什么要数据可视化? 二.数据可视化基础篇 1.Javascript实现直方图绘 ...

  9. 丽水数据可视化设计价格_网站建设之B端交互设计——数据可视化图表

    在B端设计中,数据可视化是必不可少而且非常重要,越来越多的设计师需要和数据打交道,但是很多设计师不懂可视化当中不同用途的图表规范,只是单纯设计出好看的数据图表,却不能给用户带来更多的信息和价值. 因此 ...

  10. 《大数据可视化》课后习题答案-何光威版

    大数据可视化 本篇只包含部分简答 第一章 一.填空与选择题 1.数据可视化的主要作用包括___ 数据记录和表达_____.数据操作_____和____数据分析_ 三个方面,这也是可视化技术支持计算机辅 ...

最新文章

  1. 国内大陆芯片70个细分领域重要代表企业!
  2. 下载android的linux内核的方法
  3. phpstudy composer 安装YII2
  4. C++中char*与wchar_t*之间的转换
  5. 概率论 方差公式_概率论与数理统计课程教学、学习基本要求和教学建议
  6. android sdkversion
  7. mysql 交叉表行转列_Oracle行转列、列转行的Sql语句总结
  8. 【已解决】关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案...
  9. 《Effective Ruby:改善Ruby程序的48条建议》一第2条:所有对象的值都可能为nil
  10. VMware14虚拟机安装Mac OS教程
  11. 人体姿态识别代码深度解析,带你一步步理解代码
  12. 计算机编号、硬盘序列号和Mac地址查询方法
  13. CC2430DMA学习
  14. 博弈 - SG函数和SG定理
  15. 解决SQLServer2000安装被挂起的方法
  16. 苹果要创新,IPhone是累赘
  17. ubuntu为脚本添加桌面图标
  18. (接上)将txt中的一组时间转换为简化儒略日的小工具
  19. PPT制作3D绘图(1)
  20. 将华氏度转换为摄氏度的简单代码

热门文章

  1. tiup telemetry
  2. 深入了解ElasticSearch的Nested数据类型
  3. PS给图片四周加上圆角
  4. [CTF]天网管理系统
  5. hidl 原理分析_【一点资讯】安卓手机NFC模拟门禁卡(设置UID)的一种方法 www.yidianzixun.com...
  6. CTID易捷开放平台赋能小微企业完成网络身份认证服务
  7. 写switch case语句不加break会怎样。
  8. 解决MAC删除应用程序后依然残留的图标
  9. 利用python进行识别相似图片(一)
  10. 开发人员常说的CLI是什么