利用pandas对在链家网爬取的租房数据进行清洗
爬虫代码可以参考这篇文章,全是干货,在此不再赘述。
爬下来的数据就可以进行数据清洗啦!首先确定需要处理的字段。因为后续准备做回归,所以我的变量设置是这样的:
清洗前的数据如下所示:
结合模型的变量、数据的字段,可以总结出数据清洗阶段需要完成的任务:
- house_address中的区级行政区、街道和小区通过连字符连接,需要将其拆分
- house_rental_area中的面积是字符串格式,需要删掉面积符号再将其转换为数字格式
- house_layout包含了三个变量,需要将其切片
- house_floor中的变量分为地下室、低楼层、中楼层、高楼层,需要将其转换为定序变量
- house_rental_price中的价格是字符串格式,需要删掉单位再将其转换为数字格式
- house_tag中只需要提取出是否精装、是否临近地铁两个定性变量
- house_elevator、house_heating、house_electricity同属定性变量,需要将其分类为0和1。house_water与house_electricity都是反映房屋是否商用,故只保留house_electricity
需要注意的是:
- house_layout字段中存在“x室x厅x卫”和“x房间x卫”两种表述方式,分析发现“x房间x卫”意味着没有living room,所以处理时现将“房间”换为“'室0厅”,以便后续切片
- 有些变量中存在“暂无数据”字段,需要将这列数据删除
- 爬下来的数据是有中文字符的,需要注意encoding的方式!总之utf_8_sig或者gbk都可以试试
需要用到的函数主要有:
- df1['house_tag'].str.contains('精装')注意该函数返回的是布尔值
- df1['room_num'] = df1['house_ayout'].str[0:1] 统计房间数量
- df1['house_heating']=df1['house_heating'].repace(['自采暖','集中供暖'],[0,1])将‘自采暖’repace成0(int);‘集中采暖’换成1
- df1 = pd.concat([df,df['house_address'].str.spit('-',expand=True)],axis=1).drop('house_address',axis=1)按照‘-’分割得到三列再弃掉['house_address']列
- df1.rename(coumns={0: 'house_district', 1: 'house_street',2: 'house_apartment_compexes'}, inpace=True)分割字符串得到的新的三列重命名
- df1.drop(df1[df1["house_water"]=='暂无数据'].index,inpace = True)删除无效数据
代码如下:
import pandas as pd
import numpy as np
df = pd.DataFrame(pd.read_excel("D:\filename.xlsx"))
df.shape
df.info()
df.describe()df1 = pd.concat([df,df['house_address'].str.split('-',expand=True)],axis=1).drop('house_address',axis=1) #按照’-‘切割
df1.rename(columns={0: 'house_district', 1: 'house_street',2: 'house_apartment_complexes'}, inplace=True) #重命名
df1['house_layout']=df1['house_layout'].str.replace('房间', '室0厅')
print('--------')
#print(df1['house_layout'].str[2:4])
df1.drop(df1[df1["house_water"]=='暂无数据'].index,inplace = True) #删除无效数据
df1.drop(df1[df1["house_electricity"]=='暂无数据'].index,inplace = True)
df1.drop(df1[df1["house_heating"]=='暂无数据'].index,inplace = True)
df1['room_num'] = df1['house_layout'].str[0:1] #只需要统计房间、客厅、卫生间数量
df1['living_room_num'] = df1['house_layout'].str[2:3]
df1['bath_room_num'] = df1['house_layout'].str[4:5]
df1['subway'] = df1['house_tag'].str.contains('近地铁') #若house_tag中含有'近地铁'的描述,则新增的subway列中填上布尔值true
df1['refine'] = df1['house_tag'].str.contains('精装')
df1['house_heating']=df1['house_heating'].replace(['自采暖','集中供暖'],[0,1])
df1['house_gas']=df1['house_gas'].replace(['无','有'],[0,1])
df1['house_electricity'] = df1['house_electricity'].replace(['商电','民电'],[0,1])
df1['house_rental_area']=df1['house_rental_area'].str.rstrip('㎡')
df1['house_rental_price']=df1['house_rental_price'].str.rstrip('元/月')
df1['house_rental_area']= pd.to_numeric(df1['house_rental_area']) #字符串转换为数字
df1['house_rental_price']= pd.to_numeric(df1['house_rental_price'])
df1['house_floor1'] = df1['house_floor'].str[0:1] #只需要切第一个字就可以完成分类
df1['house_floor1'] = df1['house_floor1'].replace(['地','低','中','高'],[0,1,2,3])
#print("Datatype of Cost column after type conversion:")
#print(df1['house_rental_area'].dtypes)
df1=df1.replace([True,False],[1,0]) #将前面的布尔值换成0、1以便回归
df1.to_csv("D:\filename.csv",encoding="utf_8_sig")
清洗后的数据的部分字段如下所示:
总之数据清洗要结合手上的数据进行具体的字段、数据类型的分析,然后多翻阅一下pandas手册就可以啦!
利用pandas对在链家网爬取的租房数据进行清洗相关推荐
- python爬虫爬取58网站数据_Python爬虫,爬取58租房数据 字体反爬
Python爬虫,爬取58租房数据 这俩天项目主管给了个爬虫任务,要爬取58同城上福州区域的租房房源信息.因为58的前端页面做了base64字体加密所以爬取比较费力,前前后后花了俩天才搞完. 项目演示 ...
- python 爬取了租房数据
爬取链接:https://sh.lianjia.com/zufang/ 代码如下: import requests # 用于解析html数据的框架 from bs4 import BeautifulS ...
- 链家网沈阳二手房数据分析——从数据爬取到数据分析
数据爬取主要是通过使用requests实现的,鉴于爬取数据的流程简单以及电脑的性能所限,没有使用scrapy框架,而是使用where循环手动控制页码的形式,每次爬取5页信息,并将信息写入.csv文件中 ...
- 链家java_java爬取链家网数据
int num = 1; String path = "D:\\房源信息.txt"; BufferedWriter bf = new BufferedWriter(new File ...
- 链家网杭州租房信息数据爬取+数据分析
参考https://mp.weixin.qq.com/s/vvZ2yBb2eMKP800LUPoAWg 需求分析¶ 过去一个月,全国热点城市的房租如脱缰野马.一线的房租同比涨了近20%.一夜醒来,无产 ...
- 链家网北京市租房数据分析(一)——基于python的数据清洗
作为北漂中的一员,我们都明白,租房是不能回避的问题.租房被坑,也是难以避免的.多数人都有那么一段不堪回首的与黑中介面对面的往事.其实,就是贪图便宜. 便宜可以占,但是我们要理性地占便宜.要有全局观.大 ...
- 利用神经网络预测链家网上海租房价格(Python)
代码详见:Predict-house-rent-with-neutral-network 简介 本项目利用Python的scrapy框架爬取链家网的上海市租房信息,利用pandas.numpy.mat ...
- 2020年链家网成都二手房销售情况可视化总结
功课 前端框架: python web微框架--flask,https://dormousehole.readthedocs.io/en/latest/# python web应用框架--Django ...
- python爬房源信息_用python爬取链家网的二手房信息
题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...
最新文章
- AngularJS中实现无限级联动菜单(使用demo)
- commons-fileupload-1.2.1实现文件上传
- Java技术之掌握数据库连接工具DBUtils的应用
- 毕业设计——第三章 开发方法及系统实现(5)
- seo伪原创工具_文章伪原创工具哪个好用(伪原创工具有哪些)
- 【英语学习】【English L06】U01 Breakfast L6 Make at home vs. eat out
- HttpClientHelper的封装
- ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
- 宗成庆《统计自然语言处理》 目录的思维导图
- EBT 道客巴巴的加密与破解 - 实用组合工具箱
- 微信公众号开发之网页授权
- LeetCode——5731. 座位预约管理系统(Seat Reservation Manager)[中等]——分析及代码(Java)
- 巨头的联盟链选择 | 直播实录
- 算法的时间复杂度排序
- 业务知识(2)立案与受理的区别裁定书和判决书的区别
- CYCADA: cycle-consistent adversaial domain adaption阅读笔记
- 用keil写程序时出现“C(162): error C249: 'DATA': SEGMENT TOO LARGE“的错误
- 普罗米修斯Prometheus+Grafana,监控搭建与界面基础配置
- 计算机二级抽题规律,计算机二级考试抽题规律计算机二级考试题及答案.doc
- Linux命令行初体验
热门文章
- NBA 球星杜兰特的加密投资版图
- java php同时访问数据库,Java Spring中同时访问多种不同数据库的代码实例分享
- 利用pandas模块实现excel多行文本合并
- 在word中输入文字后面的文字会被删除?原来是这么回事!
- 微型计算机控制数字量输入输出,[工学]WX_微型计算机控制技术_第二章5.ppt
- 在pycharm中使用arcpy
- 【宝藏级构建桌面应用程序】使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序
- 【消息队列】五个问题详解消息中间件
- Windows主机间批量操作的基本配置
- 开源运行时社区 - 核心概念说明