2021.05.29 技術シェア
【技术浅谈】Python数据科学使用指南:用数据可视化来理解房价

前言


我最近遇到了一位从事咨询行业工作的数据科学家(data scientist),他告诉我他多希望在开始任职之前能知道,之后的工作中被严重低估的部分,那就是沟通。与他最初的信念相背,虽然和其他行业一样,技术技能是成功的数据科学家所必需的,但他很快就意识到,即使不能断言说沟通能力是更重要,但却同样不可或缺。


不仅仅是数据科学的工作,在现实中很多其他行业也常常会遇到这样的场景,无论代码编写的有多么精妙完美,客户往往没有足够的时间和精力去关注到项目中的每一个细节。在这样的情况下,如何以一种简洁而有力的方式来总结以及传递关键发现的能力变得尤为重要,也就是我们说的“有效的沟通”。


这也是我们需要数据可视化的地方,它是一种更有效沟通方式。所谓“一图胜千言”,如果我们能掌握正确的方法,那在生活和工作中,我们将能很快的总结和发现数据中潜在的重要趋势。让我们更了解隐藏在某些事件背后的故事。很多时候我们其实已经在不知不觉中熟悉了数据可视化这个概念,就比如下图,一图就能让我们了解到目前日本地价的分布。


 


                                                                  图片

 


 

看似性感的数据科学工作,其实...


在本文中,将为大家演示一些有用的数据可视化技术。如果你自己也在学习或者利用python来做些分析,相信下面的一些方法将会对你有所帮助。在这之前,先简单介绍下何为数据科学以及数据科学家们都在干什么。


从事数据科学相关工作,撇开必要的技术开发和管理客户关系,正如data scientist这个职业名称所表示的,我们其实大部分的时间都在和数据打交道。为了开发一个能适用于特定业务领域的技术解决方案,除去很多核心算法模型开发外,我们更要比任何人都更了解客户的数据,这样才能有信心的向我们的客户表达出我们的发现和见解。而这个过程多半是枯燥和需要大量时间经验积累的。为了能让这个枯燥过程中的发现能更快更有效的被客户所理解,我们需要用到数据可视化的方法。这里将用到俗称python瑞士军刀系列工具中的seaborn可视化工具来给大家做个示范。


 


 

实际案例手把手教你分析房价


假设你正在考虑买房,但在这之前你对不动产这个行业一无所知,也没有值得信赖的朋友能给你排忧解惑,那我们只能自己来丰衣足食了。为了介绍可行的方法,我找来了一套Kaggle数据平台上的美国爱荷华州的房价数据集(https://www.kaggle.com/c/house-prices-advanced-regression-techniques)。在本文中我并不会对具体的数据做过多说明,而更多的是对不同的工具和方法的解释。


图片


正如上图看到的,这是一份记载了1460栋爱荷华州埃姆斯市住宅方方面面的数据集,从每栋房屋的大小,新旧到房屋周边的街道类型等等都有记载,总共包含了80种不同的特征和最终房价。而我们要做的就是,可视化这些特征分布和特性,并从数据集中发现不同特征和房价之间的关系。

 

① sns.displot来查看房价分布


sns工具集(sns是seaborn的简称)中有大量工具可以供我们快速分析和可视化数据,类似于excel中的散点图和柱状图。这里我们第一个要用到的工具是displot工具,他可以可视化连续数值的分布。


Distplot可以将直方图与内核密度平滑化相结合,以说明连续变量的分布。


图片


正如图中表示的,我们可以看到大部分的房价是符合正态分布规律的(加餐,正态分布在统计学上十分重要,经常用来表达自然和社会科学来代表一个不明的随机变量分布)。既然符合正态分布,那也就是说,当你物色到一栋新房时,在调查了各种周边数据后,却发现这个房价不符合这个分布规律时,那势必要引起重视了(是事故房?还是房主太好心呢... ,又或者被坑了~)。


 

② sns.regplot来寻找和房价最相关的属性


如何像经验老道的卖房业务员一样,一眼看出房价中的猫腻,一个简单直接的方法就是找到一个或多个最能决定房价高低的属性,比如区位,大小属性等。


Regplot可以绘制数据间的回归模型拟合,并添加线性拟合线。


图片


这里我试着画出了房价和房屋面积间的关系,就如我们所预期的,这两个属性之间有着正相关的关系。


 

③ sns.boxplot来看看建筑年数和房价之间的关系


图片


和我们的主观经验判断所相悖。在这里我们会发现,并不是越新的房子就越能卖个好价钱。根据数据显示,在爱荷华州有时候一些年数超过百年的房子反而更有价值。


 

④ sns.heatmap来看看多个属性和房价之间的关系


最后我们用热力图来快速的发现多个变量之后的关系。


Heatmap热力图是分析数值变量之间相关性的最简单方法之一。正相关意味着两个变量沿相同方向移动。相反,负相关表示两个变量沿相反方向移动。


图片


如图中表示的,颜色越深表示两个变量之间有更高的相关性。而这里,我们会发现,房屋的总体质量,房屋大小,是否有停车库等属性更能决定一栋房屋的价格。


 

你可以做得更好


Seaborn作为一个建立在python编程语言上的强大的数据可视化库,可以帮助我们简单快速的来分析数据。很多时候,我们只需要一行简单的代码,就能得到我们想要的结果。这也是为何python在如今的各个领域都越来越受欢迎的原因之一。并不需要太多的编程知识,就能很好的完成任务,并生成一幅幅简洁明了的数据分析图。


 


在本文中,我们选了4个小工具来分析并可视化了房价数据,以及试着找到最影响房价的属性特征。而你如何想更进一步理解,学会并用好python工具,那就试着来加入我们的python基础训练营课程吧。


 


 

Python系列课程讲师介绍


❖ 龚老师


「课程B+:AI高阶+大数据分析应用强化+多项目实战」主讲


筑波大学(计算机专业)/互联网大手/Research Scientist


擅长方向:大数据分析·AI建模·模型优化


图片