2023年12月23日发(作者:c2驾照能开什么车)

课题

课时

第20课二手房数据分析与房价预测需求分析

2

课时(90 min )

知识技能目标:

(1)能够对案例进行需求分析

(2 )能根据需求对数据进行不同的预处理,选择合适的可视化图形进行分析和展示,并选择合适 的相关变教学目标

量进行预测

(3)练习使用Pandas处理异常值、重复值、缺失值,离散化连续数据和编码字符型数据等

素质目标:

(1)养成分析问题、事前规划的良好习惯

教学重难点

教学重点:对案例进行需求分析

教学难点:使用Pandas处理异常值、重复值、缺失值,离散化连续数据和编码字符型数据

教学方法

教学用具

案例分析法、问答法、讨论法、讲授法

电脑、投影仪、多媒体课件、教材、APP

第1节课:考勤(2 min )一问题导入(5 min )一传授新知(28 min )一课堂实践(10 min )

教学设计

第2节课:问题导入(8 min )一传授新知(20 min )一课堂实践(12 min )一课堂小结(3 min )

一作业布直(2 min )

教学过程 主要教学内容及步骤

第一节课

设计意图

考勤

【教师】使用APP进行签到

【学生】按照老师要求签到

培养学生的组 织纪律性,掌握学 生的出勤情况

(2 min )

【教师】提出问题

问题导入

我们已经学习了

python数据处理的相关知识,那么关于一手房数据分析与 房价预测如何进行需求分析呢?

【学生】思考、举手回答

通过提问的方 法,了解学生对案 例的了解程度,进 而引出新知

(5 min)

【教师】总结学生的回答,并引入新知,讲解案例需求分析的相关知识

7.1

需求分析

目标分析

7.1.1

传授新知

A【教师】提出问题

本案例的目标是什么?

>【学生】聆听、思考.主动回答问题

>【教师】总结学生的回答,并讲解新知

本章的目标是根据某房产网站中最新发布的北京_手房数据(共100页3 000

条数据,见图7-1),包拈区域、户型、面积、装修、房龄、总价、结构、朝向和

(28 min )

单价等,分析各区二手房数量和均价、二手房面积和总价区间占比、二手房房龄和 均价的相

关性、是否靠近地铁的不同装修二手房均价等,然后预测不同条件下二手 房的房价。

通过教师讲解、

课堂讨论、多媒体

演示等方式,使学

生了解案例的需(详见教材),并详细讲求分析,数据解

解各部分表示的内析,重复值处理等

01 H 知识>【教师】多媒体出示〃最新发布的北京二手房数据.xlsx〃文件的内容图片

数据源

数据源为通过网络爬虫爬取的某房产网站中最新发布的北京二手房数据,保存 在〃最

新发布的北京二手房数据文件中。

.Xlsx〃7.2数据预处理

二???1

开的

?A其面布扇公式

CrtKSVRfi

数据解析

台丽银河湾

通州R他

安华里社.安贞 天区 卢卡特通苑鲁能夫施所在所南音知苑一期丰台箕他东亚印7号院水道或蚀所在区 象台能啕升H他

岸公肩马坡

局塔蒙小区杜丹回通州 朝阳平 修义 丰台 逋州

中信邦城两限区亦庄开发区耳他亦庄开支区港城

华芳因 马连丰台

通中所 北分丰台西城

厂 红连哈包

福辣市园北区

与流北郃新区海淀马?*8

草括才园东里

西城连逗 定东庄

at水园

桥 五龙期H小区

丰台

杜丹园 顺义城

道口

双兴北区 万朝阳

方庄

榔园“、区

澹应

小西天王安国 龙期随义

Shwtl

唐宁one

丰力

gog。新世代

丰台

走强网园 王心,龛

桥北里卢海桥

王台

成海寺 马连正症

41

通州

朝阳户型

3室1厅

1室I厅

小【教师】提出问题

数据解析的步骤有哪些?

计【学生】聆听.思考、主动回答问题

计【教师】总结学生的回答,并讲解新知

(1

)定义dealYear()函数用于提取年份中的数值,转换为整型后计算房龄

(2022减去该数值)。

期南西东南两博两两四西南南两南西至陶南西南北南尔

面区79. 74平米

59. 06平米90. 03平米

142. X平米99. 43平米

65.12平米45. 5平米

72. 59平米123. 02平*

96. 57平米48. 29平米

53. 8平米77平米

87. 4平米118.89平米

61. 4平米137.25平米

54. 45平米51. 23平米

51.6平米57.

79平米

58平米43. 2平米

96. 04平米结H卷构精装总情葩财H情装单H城价苴阳柏旭筱也装R装精炮筱装楂装趋装苴装稻枪H装他K信H他精装精架他K也具

横隹装年精份耳中,,星(空18国)2018年诸板行550万68.975元/平顶层房源标签

(共18层)1990年建塔柠

46275 78,226元/平

18@2014年建板塔结合492方5% 649元/平低档M(共15层)2014年建板楼520万36,456元/平

卬傍目(共6层)2003年建板柠283万28,的3元/平中楼名(”12昼)2015年并板樽

225万34,552元/不

低方国(共。层)1989年建嵌格”0万123,077元/平泯柠昼(拄21昼)2013名建板塔结合320万44,084元/平

中穆义(共23区)2008年建板塔结合489万39,750元/平质层⑴24层)2000年建塔柠430万44.528元/平

中横国(共5层)1976年建战柠670万138, 746元/平中件层(\"4层)I960年建板价368万68. 402元/平

低柠县(共22昼)2000年建tg1;820万106, 494元/平11K2007年建板柠

368万6% 989元/平

顶层(共18层)1州6年建塔桂8的万75,617元/平低柠M(尹16区)1994年建塔柠

634万103,258元/平

原由共6居)2005迂建板柠

460万33,516元/平卬横层(共6层)1992年建板接325万59,688元/平

中梏M(拄17M) 1998三碑塔移33。万6% 416元/年10R2011年建板塔结合350万67,830元/平

低方君(井23W〉2005年皆塔特40$万70, 255元/平喜楞M

(共准)1984年速颗核5找万94,138元/千

质居出6层)1990年评板价188方43,519元/平9层2007年建板株860万89,547元/平

(2

)定义dealType()函数用于提取户型中室和厅的信息。在该函数中,首先 创建列标签为〃室〃和〃厅〃、值为0的DataFrame对象;然后循环使用正则表 达式获取每行厅

的数值,将其转换为整型后赋值给DataFrame对象对应的列。

271

Jr

1S1JT

2至1厅

3室I厅

3室I厅

2至1211

Jf 3室2厅

2室2(3 )将户型中的〃房间〃替换为〃室〃,然后将调用dealType。函数返回的

DataFrame对象通过join。函数横向连接到原数据中。

(4 )将年份中的字符替换为空字符,并使用lambda表达式调用dealYear()

函厅

数。

251

Jf 2室1厅

(5 )将面积、总价、单价等信息中的字符替换为空字符,仅保留数值部分,然 后转厅

211

Jf 32I1JT

3室I换为浮点型。

(6

)修改部分列标签,如〃面积〃修改为〃面积(平方米)〃、〃年份〃修改 为〃房龄〃、〃总价〃修改为〃总价(万元)〃、〃单价〃修改为〃单价(元/平方 米)\"等。

(7 )输出面积、房龄、总价、单价、室和厅。

十【教师】按照教材步骤进行程序演示:

室沂

2室1厅

1至1万

1室1厅

2室1厅

2至1斤

1室1厅

2至1厅

import pandas as pd

import numpy as np

import pandas as pd

import redf = _excel(\'最新发布的北京二手房数据.xlsx\')

\', True) def dealYear(year):

num = yearif type(year) == str*:

num = 2022 - int(year) return num

def dealType(ser):

data

=((len(ser)/)/ dtype=\'int\') ame({室\':data,厅:data})for i in :

if ser[i] !=\'车位:

rec = l(r\'d+\'/ ser[i]) [i,\'室\']=int(rec[0]) df」oc[i,厅]=int(rec[l])return df

df[户型\']=df[户型\'].e(\'房间冒室’)

df = (dealType(df[户型\']))

df[年份\']=df[年份\'].e(‘年建\',\')apply(lambda x: dealYear(x))

df[\'面积\']=df]面积

e(\'平米丁)astype(\'float\')

df[总价\']=df]总价[e(\'万\',\')astype(\'float\')

df「单价\']=df]单价\'].e(\',\', \").e(\'元/平\',\')astype(\'float\')

df = ({面积,:\'面积(平方米)丁年份\'房龄丁总价\'总价(万元) 冒单价,:,单价(元/平方米)1 axis=\'columns\')print(df[]面积(平方米)丁房龄丁总价(万元)丁单价(元/平方米厂,室,厅]])

(详见教材)

★【学生】观察.记录、理解

十【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并 对比程序运行结果(详见教材)

A【教师】巡视课堂记录,对学生进行个别指导

7.2.2 异常值处理

*【教师】按照教材进行问题分析并按照步骤进行处理异常值程序演示:

二手房数据的户型列中包含车位信息,不在本次分析的需求中,因此可以看作 异常值,需要删除。此处,使用布尔型索引选取户型为车位的行,并输出选取的数 据;然后,删除包含车位的行,并输出删除前、后数据的行数。实现代码如下。

dfl = df[df[户型\']==\'车位]

printf包含车位的行:n\', dfl)printC删除户型异常值前数据的行数: len(df))

df = ()print(删除户型异常值后数据的行数: len(df))

此外,如果二手房的房龄太大(如超过50年),该房源的购买价值也不大,需 要删除。此处,使用布尔型索引选取房龄小于0(年份存在错误)或大于50的数据, 并输出选取的房龄数据;然后,删除包含房龄异常值的行,并输出删除前、后数据 的行数。实现代码如下。

df2 = df[房龄][(df「房龄】< 0) | (df厂房龄[>50)]print(\'房龄小于0或大于50的行:n: df2)

print(\'删除房龄异常值前数据的行数: len(df))df = ()

print(删除房龄异常值后数据的行数:; len(df))(详见教材)

小【学生】观察.记录、理解

小【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并 对比程序运行结果(详见教材)十【教师】巡视课堂记录,对学生进行个别指导

【学生】聆听、思考、理解、记忆【教师】提出问题

根据学过的知识及异常值的处理办法,请同学讨论尝试进行重复值处理【学生】聆听、思考、讨论、编写程序 【教师】检查并总结学生程序编写

7.2.3 重复值处理

课堂实践

通过课堂讨论,

加深学生对处理 数(10 min)

房产网站中会重复发布相同的房源信息,此时,须将相同的房源数据删除。 此处,检查所有列都相同的重复值并输出;然后,删除除包含重复值的第一行外 其他包含重复值的行,并输据重复值的理 解

出删除前、后数据的行数。实现代码如下。

df3

ated(keep=False)print(\'所有列重复的行:n df[df3 == True])

print(\'删除重复值前数据的行数: len(df))df = _duplicates()

printC删除重复值后数据的行数: len(df))

第二节课

【教师】提出问题

通过提问的方 法,问题导入

我们已经学习了数据重复值,异常值预处理方式,那么缺失值要如何处理呢?

【学生】聆听、思考.回答问题

引导学生主动 思考激发学生的 学习兴趣

(8 min)

【教师】总结学生的回答,并引入新知,讲解数据预处理的相关知识

7.2.4

缺失值处理

十【教师】按照教材进行问题分析并按照步骤进行处理缺失值程序演示:

在房源数据中,房龄和房源标签信息存在缺失值,须对其进行处理。此处,将 房龄中包含缺失值的行删除,并输出删除前、后数据的行数;然后,将房源标签中的 缺失值替换为不近地铁,并输出后10列数据。实现代码如下。

print(删除房龄缺失值前数据的行数: len(df))

df = (subset二\'房龄\')

print。删除房龄缺失值后数据的行数:\',len(df))

df = ({\'房源标签\':\'不近地铁\'})

print(\'房源标签替换缺失值后的数据:n; ; -10:])

(详见教材)

十【学生】观察、记录、理解

>【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并对 比程序运传授新知

(20

行结果(详见教材)

>【教师】巡视课堂记录,对学生进行个别指导

通过教师讲解 和课堂联系,使学 生了解异常值,时 间信息处理,预处 理数据保min)

7.2.5

连续数据离散化

存等的 相关知识

计【教师】按照教材进行问题分析并按照步骤进行处理连续数据离散化程序演示: 为了分析一手房面积和总价的区间信息,须将连续数据离散化,划分成不同的 区间。此处,将面积和总价划分成不同的区间;然后,将区间的数据添加至嫄数据列 末,并输出离散化后数据的后5歹山实现代码如下。

bins = [1, 60, 90, 120, 150, 180, 210, 520]

areajabel = [,60

平方米以下丁

60 ~ 90

平方米丁

90 ~ 120

平方米丁

120 ~ 150

平方米丁

150 ~ 180平方米冒180 ~ 210平方米冒210平方米以上\']

df[\'面积区间\']=(list(df]面积(平方米)\']),

bins, labels=area_label)

#面积数据的离散化

bins = [lz 200, 400, 600, 800, 1000, 2000z 4500]

totalPriceJabel =1200

万兀以卜\',’200

~400

万兀\',’400

~600

月兀\', ,600万?800万兀丁800 Jj ~ 1000万兀丁1000万~

2000万兀丁2000万兀以上\']

df[\'总价区间\']=(list(df[\'总价(力兀),]),

bins, labels=totalPrice_label)

#总价数据的离散化

print(dfjloc[:, -5:])

(详见教材)

>【学生】观察、记录、理解

★【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并对 比程序运行结果(详见教材)

计【教师】巡视课堂记录,对学生进行个别指导

【学生】聆听、思考、理解、记录

【教师】提出问题,请同学们分小组练习:

字符型数据如何编码呢?

【学生】聆听.结组.思考、讨论、写代码、展示程序代码及运行结果

【教师】聆听并总结学生的回答

[教师】痛翻才进hi逾分析W按照步兼指存!拈懒询码丽:

字符型数据编码

在使用模型对房价进行预测时,无法使用字符型数据,须对其进行编码。此处, 将所在区、装修、结构、房源标签和朝向进行编码,然后将数据保存〃最新发布 的北乐一手房数据一预处理.xlsx〃文件中。其中,编码刖须重新设置连续的行索引; 结构编码刖须删除其中包含暂无数据的行;定义get_dummies_dirt()函数用十条、 南、西、北、东北、东南、西南课堂实践

和西北8个方位的编码。实现代码如下。

通过课堂实训, 使学生能够了解 更多关于数据预 处理的(12 min)

df = _index(drop=True)

df = dfjoin(_dummies(df[\'^T:i?lK1]))

df = (_dummies(df[\'装修\']))

df = (df[df[结构\']==\'智尢数据)

df = (_dummies(df[\'结构,]))

df = (_dummies(df[\'房源标签\']))

def get_dummies_dirt(ser):

知识

dirts =『东\',南,西,‘北丁东北广东南,\'西^丁西北\']

data = ((len(ser)/), dtype=\'int\')#创建数值为

0

的数组

df = ame({\'东\':data,\'南\':data, \'S\': data, \'I匕data,‘东」匕\':

data,\'东南:data,\'西南data,\'西北\':data}, index=)

for i in :

#分割字符串

rec = ser[i].strip().split(\'\')

#遍历每条数据分割后的方位

for dirt in rec:

#如果方位信息包含在dirts中,则该方位列对应的行赋值为1

if dirt in dirts:

df[dirt][i] = 1

return df

df = (get_dummies_dirt(df[朝向\']))

_excel(\'最新发布的北京—手房数据—预处理.xlsx\', index=False)。

【教师】简要总结本节课的要点

课堂小结

(3

本节课学习了需求分析与数据预处理的相关知识,包括数据解析,缺失值,重复 值,异常值,连续数据离散化及字符串编码等相关内容,希望大家在课下多加练习, 巩固所学知识。

【学生】总结回顾知识点

总结知识点讥 固学生对相关知 识的印象

min)

【教师】布置课后作业

作业布置

(2

(1)完成课后〃本章考核T的习题。

(2 )预习第8章的内容。

【学生】完成课后任务

通过课后作业 复习巩固学到的 知识提高理论接 收能力

min)

教学反思 这节课整体节奏较好,但学生在课堂练习环节中的表现差距较大。每个学生对于程序的认知和感受

不同,接受能力也不同,教币应因材施教,对于优秀学生应使其在达到基本要求后,向更高层次迈进, 对于后进生,应打好其基础,努力使其达到基本要求,并通过学生间的互助,让优秀学生带动后进生。

更多推荐

数据,学生,进行,教师