《Python数据分析与应用案例教程》(李兆延)教案 第20课 二手房数据分析与房价预测需求分析_第1页
《Python数据分析与应用案例教程》(李兆延)教案 第20课 二手房数据分析与房价预测需求分析_第2页
《Python数据分析与应用案例教程》(李兆延)教案 第20课 二手房数据分析与房价预测需求分析_第3页
《Python数据分析与应用案例教程》(李兆延)教案 第20课 二手房数据分析与房价预测需求分析_第4页
《Python数据分析与应用案例教程》(李兆延)教案 第20课 二手房数据分析与房价预测需求分析_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题第20课二手房数据分析与房价预测需求分析课时2课时(90min)教学目标知识技能目标:(1)能够对案例进行需求分析(2)能根据需求对数据进行不同的预处理,选择合适的可视化图形进行分析和展示,并选择合适的相关变量进行预测(3)练习使用Pandas处理异常值、重复值、缺失值,离散化连续数据和编码字符型数据等素质目标:(1)养成分析问题、事前规划的良好习惯教学重难点教学重点:对案例进行需求分析教学难点:使用Pandas处理异常值、重复值、缺失值,离散化连续数据和编码字符型数据教学方法案例分析法、问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材、文旌课堂APP教学设计第1节课:→→传授新知(28min)→课堂实践(10min)第2节课:→传授新知(20min)→课堂实践(12min)→课堂小结(3min)→作业布置(2min)教学过程主要教学内容及步骤设计意图第一节课考勤

(2min)【教师】使用文旌课堂APP进行签到【学生】按照老师要求签到培养学生的组织纪律性,掌握学生的出勤情况问题导入(5min)【教师】提出问题我们已经学习了python数据处理的相关知识,那么关于二手房数据分析与房价预测如何进行需求分析呢?【学生】思考、举手回答通过提问的方法,了解学生对案例的了解程度,进而引出新知传授新知

(28min)【教师】总结学生的回答,并引入新知,讲解案例需求分析的相关知识7.1需求分析7.1.1目标分析✈【教师】提出问题本案例的目标是什么?✈【学生】聆听、思考、主动回答问题✈【教师】总结学生的回答,并讲解新知本章的目标是根据某房产网站中最新发布的北京二手房数据(共100页3000条数据,见图7-1),包括区域、户型、面积、装修、房龄、总价、结构、朝向和单价等,分析各区二手房数量和均价、二手房面积和总价区间占比、二手房房龄和均价的相关性、是否靠近地铁的不同装修二手房均价等,然后预测不同条件下二手房的房价。7.1.2数据源✈【教师】多媒体出示“最新发布的北京二手房数据.xlsx”文件的内容图片(详见教材),并详细讲解各部分表示的内容数据源为通过网络爬虫爬取的某房产网站中最新发布的北京二手房数据,保存在“最新发布的北京二手房数据.xlsx”文件中。7.2数据预处理7.2.1数据解析✈【教师】提出问题数据解析的步骤有哪些?✈【学生】聆听、思考、主动回答问题✈【教师】总结学生的回答,并讲解新知(1)定义dealYear()函数用于提取年份中的数值,转换为整型后计算房龄(2022减去该数值)。(2)定义dealType()函数用于提取户型中室和厅的信息。在该函数中,首先创建列标签为“室”和“厅”、值为0的DataFrame对象;然后循环使用正则表达式获取每行的数值,将其转换为整型后赋值给DataFrame对象对应的列。(3)将户型中的“房间”替换为“室”,然后将调用dealType()函数返回的DataFrame对象通过join()函数横向连接到原数据中。(4)将年份中的字符替换为空字符,并使用lambda表达式调用dealYear()函数。(5)将面积、总价、单价等信息中的字符替换为空字符,仅保留数值部分,然后转换为浮点型。(6)修改部分列标签,如“面积”修改为“面积(平方米)”、“年份”修改为“房龄”、“总价”修改为“总价(万元)”、“单价”修改为“单价(元/平方米)”等。(7)输出面积、房龄、总价、单价、室和厅。✈【教师】按照教材步骤进行程序演示:importpandasaspdimportnumpyasnpimportpandasaspdimportredf=pd.read_excel('最新发布的北京二手房数据.xlsx')pd.set_option('display.unicode.east_asian_width',True)defdealYear(year):num=yeariftype(year)==str:num=2022-int(year)returnnumdefdealType(ser):data=np.zeros((len(ser),),dtype='int')df=pd.DataFrame({'室':data,'厅':data})foriinser.index:ifser[i]!='车位':rec=re.findall(r'\d+',ser[i])df.loc[i,'室']=int(rec[0])df.loc[i,'厅']=int(rec[1])returndfdf['户型']=df['户型'].str.replace('房间','室')df=df.join(dealType(df['户型']))df['年份']=df['年份'].str.replace('年建','').apply(lambdax:dealYear(x))df['面积']=df['面积'].str.replace('平米','').astype('float')df['总价']=df['总价'].str.replace('万','').astype('float')df['单价']=df['单价'].str.replace(',','').str.replace('元/平','').astype('float')df=df.rename({'面积':'面积(平方米)','年份':'房龄','总价':'总价(万元)','单价':'单价(元/平方米)'},axis='columns')print(df[['面积(平方米)','房龄','总价(万元)','单价(元/平方米)','室','厅']])(详见教材)✈【学生】观察、记录、理解✈【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并对比程序运行结果(详见教材)✈【教师】巡视课堂记录,对学生进行个别指导7.2.2异常值处理✈【教师】按照教材进行问题分析并按照步骤进行处理异常值程序演示:二手房数据的户型列中包含车位信息,不在本次分析的需求中,因此可以看作异常值,需要删除。此处,使用布尔型索引选取户型为车位的行,并输出选取的数据;然后,删除包含车位的行,并输出删除前、后数据的行数。实现代码如下。df1=df[df['户型']=='车位']print('包含车位的行:\n',df1)print('删除户型异常值前数据的行数:',len(df))df=df.drop(df1.index)print('删除户型异常值后数据的行数:',len(df))此外,如果二手房的房龄太大(如超过50年),该房源的购买价值也不大,需要删除。此处,使用布尔型索引选取房龄小于0(年份存在错误)或大于50的数据,并输出选取的房龄数据;然后,删除包含房龄异常值的行,并输出删除前、后数据的行数。实现代码如下。df2=df['房龄'][(df['房龄']<0)|(df['房龄']>50)]print('房龄小于0或大于50的行:\n',df2)print('删除房龄异常值前数据的行数:',len(df))df=df.drop(df2.index)print('删除房龄异常值后数据的行数:',len(df))(详见教材)✈【学生】观察、记录、理解✈【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并对比程序运行结果(详见教材)✈【教师】巡视课堂记录,对学生进行个别指导【学生】聆听、思考、理解、记忆通过教师讲解、课堂讨论、多媒体演示等方式,使学生了解案例的需求分析,数据解析,重复值处理等知识课堂实践

(10min)【教师】提出问题根据学过的知识及异常值的处理办法,请同学讨论尝试进行重复值处理【学生】聆听、思考、讨论、编写程序【教师】检查并总结学生程序编写7.2.3重复值处理房产网站中会重复发布相同的房源信息,此时,须将相同的房源数据删除。此处,检查所有列都相同的重复值并输出;然后,删除除包含重复值的第一行外其他包含重复值的行,并输出删除前、后数据的行数。实现代码如下。df3=df.duplicated(keep=False)print('所有列重复的行:\n',df[df3==True])print('删除重复值前数据的行数:',len(df))df=df.drop_duplicates()print('删除重复值后数据的行数:',len(df))通过课堂讨论,加深学生对处理数据重复值的理解第二节课问题导入(8min)【教师】提出问题我们已经学习了数据重复值,异常值预处理方式,那么缺失值要如何处理呢?【学生】聆听、思考、回答问题通过提问的方法,引导学生主动思考,激发学生的学习兴趣传授新知(20min)【教师】总结学生的回答,并引入新知,讲解数据预处理的相关知识7.2.4缺失值处理✈【教师】按照教材进行问题分析并按照步骤进行处理缺失值程序演示:在房源数据中,房龄和房源标签信息存在缺失值,须对其进行处理。此处,将房龄中包含缺失值的行删除,并输出删除前、后数据的行数;然后,将房源标签中的缺失值替换为不近地铁,并输出后10列数据。实现代码如下。print('删除房龄缺失值前数据的行数:',len(df))df=df.dropna(subset='房龄')print('删除房龄缺失值后数据的行数:',len(df))df=df.fillna({'房源标签':'不近地铁'})print('房源标签替换缺失值后的数据:\n',df.iloc[:,-10:])(详见教材)✈【学生】观察、记录、理解✈【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并对比程序运行结果(详见教材)✈【教师】巡视课堂记录,对学生进行个别指导7.2.5连续数据离散化✈【教师】按照教材进行问题分析并按照步骤进行处理连续数据离散化程序演示:为了分析二手房面积和总价的区间信息,须将连续数据离散化,划分成不同的区间。此处,将面积和总价划分成不同的区间;然后,将区间的数据添加到原数据列末,并输出离散化后数据的后5列。实现代码如下。bins=[1,60,90,120,150,180,210,520]area_label=['60平方米以下','60~90平方米','90~120平方米','120~150平方米','150~180平方米','180~210平方米','210平方米以上']df['面积区间']=pd.cut(list(df['面积(平方米)']),bins,labels=area_label) #面积数据的离散化bins=[1,200,400,600,800,1000,2000,4500]totalPrice_label=['200万元以下','200万~400万元','400万~600万元','600万~800万元','800万~1000万元','1000万~2000万元','2000万元以上']df['总价区间']=pd.cut(list(df['总价(万元)']),bins,labels=totalPrice_label) #总价数据的离散化print(df.iloc[:,-5:])(详见教材)✈【学生】观察、记录、理解✈【学生】教师演示完成后,学生按照教材提示和教师演示进行实际操作,并对比程序运行结果(详见教材)✈【教师】巡视课堂记录,对学生进行个别指导【学生】聆听、思考、理解、记录通过教师讲解和课堂联系,使学生了解异常值,时间信息处理,预处理数据保存等的相关知识课堂实践(12min)【教师】提出问题,请同学们分小组练习:字符型数据如何编码呢?聆听、结组、思考、讨论、写代码、展示程序代码及运行结果【教师】聆听并总结学生的回答7.2.6字符型数据编码在使用模型对房价进行预测时,无法使用字符型数据,须对其进行编码。此处,将所在区、装修、结构、房源标签和朝向进行编码,然后将数据保存到“最新发布的北京二手房数据_预处理.xlsx”文件中。其中,编码前须重新设置连续的行索引;结构编码前须删除其中包含暂无数据的行;定义get_dummies_dirt()函数用于东、南、西、北、东北、东南、西南和西北8个方位的编码。实现代码如下。df=df.reset_index(drop=True)df=df.join(pd.get_dummies(df['所在区']))df=df.join(pd.get_dummies(df['装修']))df=df.drop(df[df['结构']=='暂无数据'].index)df=df.join(pd.get_dummies(df['结构']))df=df.join(pd.get_dummies(df['房源标签']))defget_dummies_dirt(ser):dirts=['东','南','西','北','东北','东南','西南','西北']data=np.zeros((len(ser),),dtype='int')#创建数值为0的数组df=pd.DataFrame({'东':data,'南':data,'西':data,'北':data,'东北':data,'东南':data,'西南':data,'西北':data},index=ser.index)foriinser.index:#分割字符串rec=ser[i]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论