Python编程&数据科学入门 - 波士顿房价数据分析

本文将使用Python的绘图库Matplotlib,通过数据可视化分析影响房价的主要因素。

波士顿房价数据集

波士顿房价数据集来源于1978年美国某经济学杂志上。该数据集包含若干波士顿房屋的价格及其各项数据,每个数据项包含14个数据,分别是犯罪率、是否在河边和平均房间数等相关信息,其中最后一个数据是房屋中间价。

数据来源:https://archive.ics.uci.edu/ml/datasets/Housing

变量名称解释

  1. CRIM: per capita crime rate by town 每个城镇人均犯罪率
  2. ZN: proportion of residential land zoned for lots over 25,000 sq.ft. 超过25000平方英尺用地划为居住用地的百分比
  3. INDUS: proportion of non-retail business acres per town 非零售商用地百分比
  4. CHAS: Charles River dummy variable (= 1 if tract bounds river; 0 otherwise) 是否靠近查尔斯河
  5. NOX: nitric oxides concentration (parts per 10 million) 氮氧化物浓度
  6. RM: average number of rooms per dwelling 住宅平均房间数目
  7. AGE: proportion of owner-occupied units built prior to 1940 1940年前建成自用单位比例
  8. DIS: weighted distances to five Boston employment centres 到5个波士顿就业服务中心的加权距离
  9. RAD: index of accessibility to radial highways 无障碍径向高速公路指数
  10. TAX: full-value property-tax rate per $10,000 每万元物业税率
  11. PTRATIO: pupil-teacher ratio by town 小学师生比例
  12. B: 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town 黑人比例指数
  13. LSTAT: % lower status of the population 下层经济阶层比例
  14. MEDV: Median value of owner-occupied homes in $1000's 业主自住房屋中值

数据导入和查看

波士顿房价数据集在机器学习的sklearn.datasets包中,用datasets.load_boston()导入数据。接着使用.data.target分别加载房屋属性参数值和房屋中间价。

import pandas as pd
from sklearn import datasets
boston_dataset = datasets.load_boston()

X_full = boston_dataset.data
Y = boston_dataset.target

用房屋属性参数值创建DataFrame,使用.columns修改行标签为房屋属性名称,并添加一列房屋中间价数据。分别使用.head().info()查看数据,可以看到数据导入和整理成功,便于下一步的可视化分析。

boston = pd.DataFrame(X_full)
boston.columns = boston_dataset.feature_names
boston['PRICE'] = Y
boston.head()
boston.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 506 entries, 0 to 505
Data columns (total 14 columns):
CRIM       506 non-null float64
ZN         506 non-null float64
INDUS      506 non-null float64
CHAS       506 non-null float64
NOX        506 non-null float64
RM         506 non-null float64
AGE        506 non-null float64
DIS        506 non-null float64
RAD        506 non-null float64
TAX        506 non-null float64
PTRATIO    506 non-null float64
B          506 non-null float64
LSTAT      506 non-null float64
PRICE      506 non-null float64
dtypes: float64(14)
memory usage: 55.4 KB

数据可视化分析

从上文的数据可以看出,接下来要分析13个房屋属性参数与房屋中间价的关系。房屋属性参数中有一个数据是离散数据(CHAS,0 或者 1),其余的均为连续数据。

首先,使用matplotlib绘图分析河边CHAS(离散数据)和价格PRICE是否有相关性,可以看到二者没有明显的相关性,接下来的数据分析可以剔除属性CHAS。

import matplotlib.pyplot as plt

%matplotlib inline
%config InlineBackend.figure_format = 'retina'

plt.style.use('seaborn-whitegrid')
plt.scatter(boston.CHAS, boston.PRICE)
plt.xlabel('CHAS') 
plt.ylabel('PRICE')
plt.show()

接下来,需要分析12个连续数据与房屋中间价的相关性。因为变量比较多,为了迅速找出影响房屋中间价的因素,可以使用matplotlib中的Seaborn模块绘制多变量图。多变量图的对角线上是变量分布的直方图,非对角线上是两个变量的散点图。

把12个房屋属性分成两组与中间价绘图,第一组:CRIM, ZN, INDUS, NOX, RM 和 AGE。

从图中可以看出,CRIM(犯罪率)和 RM(平均房间数目)与PRICE(房屋中间价)有明显相关性,RM和 PRICE呈现正态分布。

import seaborn as sns
sns.pairplot(boston, vars=['CRIM', 'ZN', 'INDUS', 'NOX', 'RM', 'AGE', 'PRICE'])

第二组:DIS, RAD, TAX, PTRATIO, B 和 LSTAT。从图中可以看出,LSTAT(下层经济阶层比例)与PRICE有明显相关性。

sns.pairplot(boston, vars=['DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'PRICE'])

将CRIM,RM,LSTAT 与 PRICE绘图,可以更清楚的观察和分析数据的相关性。从图中看出 PRICE 与 LSTAT 及 CRIM 呈非线性关系,而与 RM 更呈线性关系。

sns.pairplot(boston, vars=['CRIM', 'RM', 'LSTAT', 'PRICE'])

总结:

通过数据可视化分析,获得波士顿地区自住房屋中间价与下层经济阶层比例、平均房间数目和犯罪率有明显的相关性。具体符合哪种相关性,进一步分析将会涉及到线性回归等模型的应用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容