题目要求

1.对你爬取下来的北京二手房数据,进行数据的预处理,并计算:

(1)四个区的平均总价、最高总价、最低总价;

(2)四个区的平均单价、最高单价、最低单价;

(3)按照房屋建成的年份,计算2000年以前、2000-2009.12.31、2010-至今,这三个时间段的平均单价。

2. 处理北京空气质量数据

对HUMI、PRES、TEMP三列,进行线性插值处理。修改cbwd列中值为“cv”的单元格,其值用后项数据填充。

实验环境

1.系统:11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz   2.42 GHz

2.python+ pycharm

实验步骤

1、对北京二手房数据进行预处理,计算相应数据

  • 分别求四个区(海淀,朝阳,西城,东城)的平均总(单)价、最高总(单)价、最低总(单)价
  • 注:因为步骤相似,本文以海淀区为例子进行阐述;
  • 通过spiders爬虫,爬取 https://bj.lianjia.com/ershoufang/haidian/ 中小区名称、总价、房屋面积、房屋单价、房屋构造年份相关数据,存为lianjia-hd.json文件
  • 图1 海淀区二手房节选前50条(共3000)

  • 对lianjia-hd.json进行处理转换为hd1.csv文件
  • import csv
    import json
    def json_to_csv():json_file = open("lianjia-hd.json", "r",encoding='utf-8')  #输入需要转换格式的json文件csv_file = open("hd1.csv", "w")   #转换后的文件名和文件类型item_list = []for line in json_file:item_list.append(json.loads(line))key_data = item_list[0].keys()value_data = [item.values() for item in item_list]# csv文件写入对象csv_writer = csv.writer(csv_file)# 先写入表头字段数据csv_writer.writerow(key_data)# 再写入表的值数据csv_writer.writerows(value_data)csv_file.close()json_file.close()if __name__ == "__main__":json_to_csv()
  • 读取hd1.csv文件,进行数据处理以及提取需要的值;
  • import pandas as pd
    import numpy as np
    #读取hd1.csv文件
    df = pd.read_csv('hd1.csv')
    # 分别提取总价列数据,
    # 单价列数据
    # 两个数组
    totprice_hd = np.array(df['totalprice'])
    Unit_hd = np.array(df['Unitprice'])
    tot1_hd = []  #总价
    uni_hd = []  #单价
    # print(_totprice)
    #
    #遍历总价数组,将数据有字符串型str变为浮点型float;删除出数字以外的字符;
    for i in range(len(totprice_hd)):str = totprice_hd[i]pos = str.find("'")pos1 = str.find("万", pos + 1)str1 = str[pos + 1:pos1]tot1_hd.append(float(str1))#遍历单价数组,将数据有字符串型str变为浮点型float;删除出数字以外的字符;
    for j in range(len(Unit_hd)):str2 = Unit_hd[j]pos2 = str2.find("'")pos3 = str2.find("元", pos2 + 1)str3 = str2[pos2 + 1:pos3]str4 = str3.replace(',','') #去数据之间的逗号uni_hd.append(float(str4))tot1_hd.sort() #对总价数组进行排序
    print("总价列表从小到大排序(单位:万):\n",tot1_hd)
    print("海淀区\n平均总价:",np.mean(tot1_hd),"万","\n最高总价:",tot1_hd[-1],"万","\n最低总价:",tot1_hd[0],"万")uni_hd.sort()  #对单价数组进行排序
    print("单价列表从小到大排序(单位:元/平):\n",uni_hd)
    print("海淀区\n平均单价:",np.mean(uni_hd),"元/平","\n最高单价:",uni_hd[-1],"元/平","\n最低单价:",uni_hd[0],"元/平")
    
  • 打印出结果为:
  • 图2 海淀区相关数据

  • 由图2可知:海淀区相关数据;
  • 同海淀区操作步骤可得朝阳区、西城区、东城区数据如下图:
  • 图3 西城区、朝阳区相关数据

  • 图4 东城区相关数据

  • 数据汇总如下图:
  • 图5 汇总数据

2、处理北京空气质量数据

  • 读取BeijingPM20100101_20151231.csv文件进行处理
  • import pandas as pd
    print("开始处理数据。")
    data = pd.read_csv('BeijingPM20100101_20151231.csv',encoding='utf-8')
  • 对HUMI、PRES、TEMP三列,进行线性插值处理
  • # 对HUMI、PRES、TEMP三列,进行线性插值处理
    data['HUMI'] = data['HUMI'].interpolate()
    data['PRES'] = data['PRES'].interpolate()
    data['TEMP'] = data['TEMP'].interpolate()
    
  • 修改cbwd列中值为“cv”的单元格,其值用后项数据填充
  • # 修改cbwd列中值为“cv”的单元格,其值用后项数据填充。
    print("before",len(data[data.cbwd =='cv' ].index.tolist()))
    for i in reversed(range(len(data))):if data["cbwd"][i] =='cv':data["cbwd"][i] = data["cbwd"][i+1]
    print("after",len(data[data.cbwd =='cv' ].index.tolist()))
    
  • 存为.csv新文件
  • print("处理数据完成")
    data.to_csv("PM_bj.csv",index=False)
  • 实验结果与没有处理前的对比(节选)如图6
  • 图6 结果对比

实验总结

1、遇到问题

在处理北京二手房数据时遇到问题,一开始不知道如何将列表中数据从str类型转换为float类型;后来通过上网搜索和查找,一步步解决了问题;主要步骤是:整理数据通过find函数将列表中每一项的数字提取,再通过float()强制转换,最后存储到列表中。

2、总结

通过整理数据、对数据进行操作,发现爬虫中将数据从网页上爬取下来是很简单的一个步骤了,对于爬取下来的数据进行清洗的到有用的数据并不是想象中那么简单的,需要对python基础知识有很强的应用能力,所以要学习的还有很多,继续加油吧。

实验三:数据预处理1相关推荐

  1. 河北工业大学数据挖掘实验一 数据预处理

    河北工业大学数据挖掘实验一 数据预处理 一.实验目的 二.实验原理 1.数据预处理 2.数据清理 3.数据集成 4.数据变换 5.数据归约 三.实验内容和步骤 1.实验内容 2.实验步骤 3.程序框图 ...

  2. 数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D;

    数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D: 实验数据单

  3. 实验2-Python数据预处理

    实验2-Python数据预处理 文章目录 实验2-Python数据预处理 一.实验目的与要求 二.实验任务及答案 一.实验目的与要求 1.目的: 掌握数据预处理和分析的常用库Pandas的基本用法,学 ...

  4. 【R语言】实验三 数据可视化

    系列文章目录 实验一 R 语言数据结构.数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1. death rate 数据集 选 ...

  5. 数据库实验三-数据控制(安全性部分)

    数据控制(安全性部分) 实验环境:Windows 10操作系统.MySQL 8.0.Navicat 实验内容与完成情况: 一.实验目的 (1)熟悉通过SQL对数据进行安全性控制. (2)完成书本上习题 ...

  6. 数据库实验三 数据查询一

    第1关:按条件查询单表的所有字段 任务描述 本关任务:按条件查询数据表的所有字段 为了完成本关任务,你需要掌握: 如何查询数据表的所有字段 相关知识 查询数据表 命令格式: select * from ...

  7. 数据库实验三 数据查询二

    第1关:多表查询 任务描述 本关任务:查询来自借阅.图书.读者数据表的数据 为了完成本关任务,你需要掌握: 如何多表查询 相关知识 查询多个数据表 在实际应用中,查询经常会涉及到几个数据表. 基于多个 ...

  8. 实验三 数据输入与输出(长沙理工大学—)

    第1关:各位数字之和 任务描述 本关任务:输入一个三位正整数,输出其个位.十位和百位上数字之和. 编程要求 根据提示,在右侧编辑器补充代码,输入一个三位正整数,输出其个位.十位和百位上数字之和. 测试 ...

  9. R语言入门第四集 实验三:数据可视化

    R语言入门第四集 实验三:数据可视化 一.资源 [R语言]R语言数据可视化--东北大学大数据班R实训第三次作业 在r中rowsums_R语言初级教程(15): 矩阵(下篇) R语言环境变量的设置 环境 ...

  10. 卷积在计算机中实现+pool作用+数据预处理目的+特征归一化+理解BN+感受野理解与计算+梯度回传+NMS/soft NMS

    一.卷积在计算机中实现 1.卷积 将其存入内存当中再操作(按照"行先序"): 这样就造成混乱. 故需要im2col操作,将特征图转换成庞大的矩阵来进行卷积计算,利用矩阵加速来实现, ...

最新文章

  1. 网站位置服务器,如何查看网站的服务器位置
  2. 大科学时代,指数级增长的科学仍然拥有前所未有的朝气与活力
  3. VirtualBox 在Linux升级后不能用的解决办法实践
  4. 用最简单话概括SSH三框架
  5. 大数据--循序渐进的大数据(2)
  6. 关于 Cisco SCE 的介绍
  7. ssm 跨库查询_SSM使用AbstractRoutingDataSource后究竟如何解决跨库事务
  8. python123九宫格输入_使用python PIL库实现简单验证码的去噪方法步骤
  9. nginx 优化,突破十万并发
  10. 如何从列表中删除第一个项目?
  11. contos7改分辨率_centos7分辨率怎么设置-修改centos7分辨率的方法 - 河东软件园
  12. 计算机网络与综合布线系统设计,浅谈计算机网络综合布线系统设计
  13. 计算机维护系统Win8PE,U盘启动计算机维护系统(Win8PEx64内核仅160M)
  14. 2022年聚合工艺考试试卷及聚合工艺考试总结
  15. js实现图片跟随鼠标移动
  16. 计算机win7设置用户密码,怎么给win7电脑设置开机密码_w7电脑开机密码怎么设置...
  17. 中国人霸屏奥运会乒乓球赛这事 外国人怎么看?
  18. css 首个元素,类的第一个元素的CSS选择器
  19. 如何用安装启动盘启动计算机,U大师U盘启动盘制作教程 详细图解步骤教你怎么装系统(老机版)...
  20. c语言自动安装打印机驱动,安装自定义的即插即用打印机驱动程序

热门文章

  1. 某资产配置平台系统方案建设规划
  2. 知道RAD Studio Sydney(Delphi 10.4.2)这些,少走弯路
  3. 怎么批量下载Onedrive分享文件_【软件分享】简单易用的照片批量处理软件,有需求的下载用用!...
  4. 小商品销售平台+后台管理系统(day2-day5)练习小项目~
  5. matlab 向量取倒数,Matlab 求倒数命令及控制方法
  6. android隐藏键盘方法,【工具类】Android 最有效的隐藏软键盘方法
  7. 在Affinity Designer中创建健身应用程序设计
  8. webgis开发智慧校园实现路径规划
  9. FT2000盒子运行ubuntu20.04系统
  10. sb版 java后端(spring boot)应用Conflux Java SDK尝试交互Conflux实录