第二部分:数据的清洗

数据的预处理主要是对原始数据进行一些清洗和整理工作,由于数据的质量影响着分析结果的质量,因此提高数据的质量对于后续的研究十分必要。

本文的数据清洗工作主要是用了python的numpy和pandas两个工具包,具体内容如下:

(1)excel数据的读写操作通过爬虫的数据保存在本地的excel文件里,现在要做的就是pandas读取这些文件,以便进行后续操作,具体代码如下行:

df = pd.read_csv('desktop/house_old_shanghai.csv',encoding='gbk',index_col=0,header=0)

本行代码读取了存贮路径为‘desktop/house_old_shanghai.csv’的excel文件,并且指定编码格式为gbk,注意如果不指定编码格式,读取的内容可能会出现乱码。

(2)选取某一列的部分字段

原始数据中评分列的数据类型是object,比如某些数据带有单位如评分:4.0分,要删去评分的单位‘分’才能将该列转还为数值型,具体python操作如下:

df['评分']=df['评分'].apply(lambda x:x[:-1])

此处用到了apply和lambda函数,功能是对列标签为’评分‘的列区取从0到倒数第一位字符,也就是删去了原有的倒数第一个字符“分”。

(3)选取部分行

在原始数据中,’评分‘这一列可能包含着其它杂乱数据,需要把这些数据删去,具体代码如下:

df['评分'].str.contains('0|1|2|3|4|5')

此处用到了contains函数,该函数的功能是对于包含括号里的值的行返回为True,因为我们需要的是评分的数据(去掉单位),所以包含数字0~5的就是我们需要的行。如果想知道有哪些数据不是我们想要的,~取反即可,如下所示

df1[~df1['评分'].str.contains('0|1|2|3|4|5')]

image

(4)选某列需要的数据

除了上述contains方法外,还可以使用extract搭配正则表达式选取满足需要的数据,python代码如下所示:

df['评分']=df['评分'].str.extract('(\d+\.\d+)')

使用该方法既可以在列上进行选取,也可以同时在行上进行选取。简单说一下此处正则表达式的用法,因为原始的数据格式是“4.0分”,\d+表示匹配数字,\.表示.符号(\为转义),\d+表示匹配数字,这样就可过滤掉其他字符了。

(5)删除含有空值的行

在上一个步骤筛选后的列中可能有空值,需要删除这些含有空值的行可以采用如下代码:

df.dropna(axis=0,how='any')

其中,参数axis=0表示按照行删除,axis=1表示按照列删除,how=‘any’表示含有空值就删除,how=‘all’表示所有的元素都是空值才删除

(6)删除重复的行

爬虫获取的数据可能有重复的数据,因此需要删除重复的行,具体python代码如下:

df.drop_duplicates(keep='first')

参数keep可以设置是否保留重复的行,keep=False表示不保留

(7)转化数据类型

首先可以用df.info()查看每列的数据类型,可以看到在未对数据类型更改之前,G列数据的数据类型是object,改变后某一列的数据类型是float32,如下所示:

df['G'].astype('float32')

image

image

(8)添加列标签

按照上述步骤,将每一列的数据都清洗完毕并添加列标签,最终得到的数据如下图所示:

a=['介绍','地址','价格','面积','房间','地产公司','评分']

df.columns =a

image

image

(9)列的拆分

如下图中,第一列的数据包含了好几个属性值,因此需要拆分,代码如下所示:

df['A'].str.split('|',expand=True)

屏幕快照 2020-03-05 下午5.25.35.png

(10)按照某个字段的内容添加另一列

如上图中的第二列是房屋详细的地址,现在需要添加一列,内容是小区的地区,可以从第二列中提取相关信息,具体代码如下所示:

a=['浦东','闵行','宝山','徐汇','松江','嘉定','静安','普陀','杨浦','虹口','长宁','黄浦','青浦','奉贤','金山','崇明']

for循环遍历列表 loc函数指定对应的列

for i in a:

df.loc[(df['B'].str.contains(i)),['E']]=i

python关于二手房的课程论文_python之数据清理-以二手房信息为例相关推荐

  1. python关于二手房的课程论文_python二手房项目分析

    分析目的: 利用python进行简单数据分析 导入模块 利用使用到了python中的pandas,numpy包和matplotlib.seaboard可视化包 import pandas as pd ...

  2. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  3. python高级应用程序课程设计_Python高级应用程序设计任务

    一.主题式网络爬虫设计方案(15分) 1.主题式网络爬虫名称 <Python爬虫之国家统计局相关数据的爬取及分析> 2.主题式网络爬虫爬取的内容与数据特征分析 本次爬取内容为:国家统计局( ...

  4. python的发展及应用前景论文_Python在物联网中的应用与发展综述

    123 Python 在物联网中的应用与发展综述 陈光辉 (北京信息科技大学 自动化学院,北京 100091) 摘要:文章主要介绍了物联网的产生与发展和对人们生活与社会生产的促进作用,以及我国物联网发 ...

  5. python课程论文_python结课论文_python论文_工程伦理结课论文文库

    关于python爬虫的实验论文怎么写 叙述和描写为主,但往往兼有抒情和议论,是一种形式多样,笔墨灵活的文体,也是最广泛的文体.论文写作,是把自己的亲身感受和经历通过生动.形象的语言,描述给读者.论文. ...

  6. 时间序列分析python课程论文_python时间序列分析

    一.什么是时间序列 时间序列简单的说就是各时间点上形成的数值序列,时间序列分析就是通过观察历史数据预测未来的值. 在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的 ...

  7. python关于二手房的课程论文_用Python对二手房信息数据清洗及简单分析

    另外两份作业: 这几天看到社群大佬同学们发的作业,对本人有所启发,于是找来前段时间爬取的某二手房网站房源信息,进行简单的操作. 根据数据分析的基本步骤 一.提出问题 根据爬取的网站信息,额想不出有什么 ...

  8. python关于二手房的课程论文_用Python对2019年二手房价格进行数据分析

    本篇文章利用爬到数据的进行数据分析. 在这篇文章中,用到pandas.seaborn.Matplotlib等工具,分析工具用到提琴图.箱型图.散点图等. 描述性分析 首先导入各种需要的库方便后续一切操 ...

  9. python数据可视化课程论文_Python数据分析与数据可视化选修课答案

    What do you think ___________?[ ]A. he will happenB. will happen to himC. he happensD. happen to him ...

最新文章

  1. Linux 用户和用户组配置说明
  2. 【C++】21.函数传参 传指针和传引用的区别
  3. C++动态(显式)调用 C++ dll示例
  4. ckeditor回显带标签_Spring Boot中带有CKEditor的AJAX
  5. 统计各个函数的耗时_分享一次CMS GC耗时狠高优化过程全记录
  6. SIFT讲解(SIFT的特征点选取以及描述是重点)
  7. 【OpenCV】OpenCV实战从入门到精通之 -- 访问图像中的像素
  8. 鸿蒙轻内核M核源码分析:数据结构之任务排序链表
  9. python requests 乱码_python3 requests 抓取乱码问题
  10. 火灾原来离我们那么近
  11. SQLLoader2(导入EXCEL或csv格式的文件)
  12. C++ 函数需要有返回值,但非全分支return(RVO)
  13. 1114 Family Property (25 point(s)) PAT甲级
  14. 今天上班穿了一只拖鞋和一只凉鞋
  15. 设计一个程序,帮助小学生练习10以内的加法题目
  16. python怎么将删的代码恢复_找回丢失的Python代码--如果代码还驻留在内存中
  17. 老派道场普陀山 海天佛国的禅修氛围
  18. 闭关修炼30天,“啃透”这658页PDF,成功定级阿里P7
  19. 地图采集车的那些事 | 硬件质量篇
  20. Vue自定义表单生成器,通过Json生成表单

热门文章

  1. Juqery ready的几种写法
  2. 用 npm script 实现服务自动化运维
  3. 当async/await遇上forEach
  4. Oracle dataguard一主两备环境搭建
  5. Debian/Ubuntu系统下,apt-get update 、apt-get upgrade 、apt-get dist-upgrade 命令之间的区别
  6. oracle自定义存储过程:删除表(无论表是否存在)和检测表是否存在
  7. Spring框架声明式事务管理
  8. 【记录】Docker push 到dockerhub网站
  9. js 弹出框 背景不滑动 方案
  10. 【C语言】创建一个函数,判断某一正整数是否为水仙花数,并调用这个函数找出1000以内所有水仙花数...