根据链家网二手房交易信息对二手房交易数据进行分析

用到的数据包含147169条交易信息,每条交易信息包括["房型","成交时间","地址","价格","朝向","装修","建造年代","楼层","产权","面积","得房面积","有无钥匙","编号"]列信息。

1. 首先载入数据集

此处用到的数据集为excel,可以使用pandas的pd.read_excel("data.xlsx", 0, header=None)

加载当前目录下excel文件"data.xlsx"的第1页(excel内包含多个sheet时,选择某页加载),并且没有列标签。

# 加载模块
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt%matplotlib inline# 让中文和负号在图表中正常显示
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号# 加载数据集
df = pd.read_excel("bjlianjia.xlsx",0,header=None) # 0表示excel的sheet1# 添加列名
df.columns = ["房型","成交时间","地址","价格","朝向","装修","建造年代","楼层","产权","面积","得房面积","有无钥匙","编号"]

2. 数据处理

df.dtypes可以得到各特征的数据类型,只有价格为float64,其他特征均为object。这种字符型数据不适合进行数据分析,需处理为可以分析比较的数值型数据。

写代码的时候一定要有异常捕获机制,使用try/except/else/finally来应对数据格式不符合规范时报错。

对"房型"数据进行处理:

# 定义函数逐行处理“房型”数据
def _parsehouse(s):# 使用try/except语句避免出现Error终止程序try:s = s.strip()r=[]if len(s)==8:r.append(s[0])r.append(s[2])r.append(s[4])r.append(s[6])else:r=[-1,-1,-1,-1]except:r=[-1,-1,-1,-1]return rdf_room = pd.DataFrame(df["房型"].apply(lambda s: _parsehouse(s)).values.tolist(),
columns = ["室","厅","厨","卫"])
# df["房型"].apply(lambda s: _parsehouse(s))得到的是一个Series(pandas一维数据),每行为[2,1,1,1]这种类型
# .values将Series转换成Array(numpy一维array),array(list[2,1,1,1],list[...],...)
# .tolist()将array转换成list,[['2','1','1','1'],['3','1','1','1'],...]
# 在外面使用df.DataFrame将list转换成pandas 二维DataFrame格式# 因为数据集中还存在“-室-厅-厨-卫”的数据,使用replace替换一下
df_room.replace({'-':'-1'},inplace=True)

对“成交时间”进行提取:

# 因为成交时间包括时间(年月日,空格,成交平台),可以用正则表达式来提取年月日import redef _parsedate(s):try:# 因为在原文本中年月日格式为2017.07.08,故可以用正则表达式“[\d\.]+”,# \d匹配任何十进制数字,\.匹配字符“.”,[]+匹配方括号里任意组合一次或多次data = re.compile("[\d\.]+")return data.findall(s)[0]except:return -1.-1.-1# 先将年月日提取出来,组成一个Series
df_date1=df["成交时间"].apply(lambda s:_parsedate(s))# 再逐列2017.07.06提取年月日
df_date = pd.DataFrame(df_date1.apply(lambda s:str(s).split(".")).values.tolist(),columns = ["年","月","日"])
df_date.fillna(-1,inplace=True)
# 在提取过程中s.split(".")会报错”'float' object has no attribute 'split' “
# 因为存在2017.07,系统将其错认为'float'
# 因此需要使用str(s),将所有行转换成字符形式

对"朝向"数据进行处理:

def _parseCX(s):try:s=s.strip()return s.split(" ")except:return ["unknown"]df_CX = pd.DataFrame(df['朝向'].apply(lambda s: _parseCX(s)).values.tolist())

对“面积”和“产权”进行处理:

def _parsenumber(s):try:data = re.compile("[\d\.]+")return data.findall(s)[0]except:return -1df_area = pd.DataFrame(df["面积"].apply(lambda s: _parsenumber(s)).values.tolist(), columns=["面积"])
df_property = pd.DataFrame(df["产权"].apply(lambda s: _parsenumber(s)).values.tolist(), columns=["产权"])

对“价格”和“建造年代”的NaN值进行填充:

# 将价格未知填充为0
df["价格"].fillna(0, inplace=True)# 将建造年代未知填充为-1
df["建造年代"].fillna(-1, inplace=True)

Python数据分析实战之一--某网站二手房交易信息(数据处理)相关推荐

  1. php爬取房源,用python爬取二手房交易信息并进行分析

    用python爬取二手房交易信息并分析第一步:编写爬虫 爬取某平台上海市十个区共900条二手房的交易信息#爬取上海十个区的二手房价信息 import requests from bs4 import ...

  2. Python数据分析实战:上海二手房价分析

    1 数据搜集 使用 urllib 库中的request 模块爬取赶集网发布的上海二手房信息,包括包括户型.面积.单价等,再使用BeautifulSoup 库解析爬取的HTML数据,最终将数据保存到CS ...

  3. Python数据分析实战学习

    Python数据分析实战学习\displaystyle\boxed{Python数据分析实战学习}Python数据分析实战学习​ AprilJulyOctober2015AprilJulyOctobe ...

  4. Python数据分析实战基础 | 初识Pandas

    这是Python数据分析实战基础的第一篇内容,主要是和Pandas来个简单的邂逅.已经熟练掌握Pandas的同学,可以加快手速滑动浏览或者直接略过本文. 01  重要的前言 这段时间和一些做数据分析的 ...

  5. 《Python数据分析实战》day2: Pandas中取得某行或者是某列的一点思考

    今天看了<Python数据分析实战>这本书的第四章:Pandas的简介的部分,大概看了一半,在实践代码的时候发现了jupyter notebook提示warning,研究了一下有了一些自己 ...

  6. python数据分析实战 fabio nelli百度云_Python数据分析实战 内利(Fabio Nelli),杜春晓 9787115432209...

    商品描述: 基本信息 书名:Python数据分析实战 定**价:59.00元 作者: 内利(Fabio Nelli) 著,杜春晓 译 出版社:人民邮电出版社 出版日期:2016-08-01 ISBN: ...

  7. python电影数据分析报告_【python数据分析实战】电影票房数据分析(二)数据可视化...

    在上一部分<[python数据分析实战]电影票房数据分析(一)数据采集> 已经获取到了2011年至今的票房数据,并保存在了mysql中. 本文将在实操中讲解如何将mysql中的数据抽取出来 ...

  8. Python数据分析实战学习与分享(一)

    学习的书籍: Python Data Analytics Python数据分析实战(尚未出版电子书) 1.1数据分析 当今世界对信息技术的依赖程度日渐加深,每天都会产生和存储海量的数据.数据的来源多种 ...

  9. Python数据分析实战

    Python数据分析实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1nlHM1IW8MYg3z79TUwIsWg 提取码:ux8t 复制这段内容后打开百度网盘手 ...

最新文章

  1. 从零搭建 Spring Cloud 服务(超级详细)
  2. MS SQL SERVER 2005 用于Web开发的安装注意事项
  3. 分享Silverlight/WPF/Windows Phone一周学习导读(07月18日-07月24日)
  4. printf-小代码,大问题
  5. 创建带有关联的 XML 架构的 XML 文件 从 XML 文件创建 XML 架构
  6. java rabbitmq 工具类_RabbitMq通用管理工具类
  7. 二进制(bit)整数
  8. RowVersion字段从SqlServer到PostgreSQL的迁移
  9. 今天算做正式开始SP开发吧,第一步当然是将down下来的资料好好地看一看,顺便也记下这些有用的地址...
  10. PHP模板引擎Smarty内建函数section,sectionelse用法详解
  11. 微软将弃用 System.Data.OracleClient
  12. 计算机桌面图标被挡怎么办,win7电脑桌面图标被挡住怎么恢复 - 卡饭网
  13. nas服务器搭建网站,小白都能看懂的NAS服务器搭建教程
  14. 樊登读书搞定读后感_樊登读书会听书《搞定》《高效人士的七个习惯》《人生效率手册》《搞定3》第四周学习感悟...
  15. nmn抗衰老是骗局吗,美国nmn骗局,正面解答
  16. 本地Blast2GO安装,及其数据库更新和导入数据中断的解决方案
  17. 服务器网卡信息BIOS中设置,bios设置如何关闭网卡
  18. 计算机待机时间长黑屏怎么办,电脑黑屏?如何解决?
  19. C++压缩解压之snappy
  20. autojs autoxjs text 选不中 失效 uiselector

热门文章

  1. cad图纸打印出来更高效的方法介绍
  2. 真Unity3d_梦幻西游无双的引擎是?
  3. vue3的组件传递之子传父(项目实操)
  4. C#课程设计(购物平台)
  5. nuscenes instance 调研笔记
  6. Linux的numactl
  7. 数十年军旅,钢铁意志成就他的技术颠峰
  8. 如何获取股票交易数据接口?
  9. 馄饨 (hún tun)
  10. JESD204B参数及时钟关系