Python数据分析实战之一--某网站二手房交易信息(数据处理)
根据链家网二手房交易信息对二手房交易数据进行分析
用到的数据包含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数据分析实战之一--某网站二手房交易信息(数据处理)相关推荐
- php爬取房源,用python爬取二手房交易信息并进行分析
用python爬取二手房交易信息并分析第一步:编写爬虫 爬取某平台上海市十个区共900条二手房的交易信息#爬取上海十个区的二手房价信息 import requests from bs4 import ...
- Python数据分析实战:上海二手房价分析
1 数据搜集 使用 urllib 库中的request 模块爬取赶集网发布的上海二手房信息,包括包括户型.面积.单价等,再使用BeautifulSoup 库解析爬取的HTML数据,最终将数据保存到CS ...
- Python数据分析实战学习
Python数据分析实战学习\displaystyle\boxed{Python数据分析实战学习}Python数据分析实战学习 AprilJulyOctober2015AprilJulyOctobe ...
- Python数据分析实战基础 | 初识Pandas
这是Python数据分析实战基础的第一篇内容,主要是和Pandas来个简单的邂逅.已经熟练掌握Pandas的同学,可以加快手速滑动浏览或者直接略过本文. 01 重要的前言 这段时间和一些做数据分析的 ...
- 《Python数据分析实战》day2: Pandas中取得某行或者是某列的一点思考
今天看了<Python数据分析实战>这本书的第四章:Pandas的简介的部分,大概看了一半,在实践代码的时候发现了jupyter notebook提示warning,研究了一下有了一些自己 ...
- python数据分析实战 fabio nelli百度云_Python数据分析实战 内利(Fabio Nelli),杜春晓 9787115432209...
商品描述: 基本信息 书名:Python数据分析实战 定**价:59.00元 作者: 内利(Fabio Nelli) 著,杜春晓 译 出版社:人民邮电出版社 出版日期:2016-08-01 ISBN: ...
- python电影数据分析报告_【python数据分析实战】电影票房数据分析(二)数据可视化...
在上一部分<[python数据分析实战]电影票房数据分析(一)数据采集> 已经获取到了2011年至今的票房数据,并保存在了mysql中. 本文将在实操中讲解如何将mysql中的数据抽取出来 ...
- Python数据分析实战学习与分享(一)
学习的书籍: Python Data Analytics Python数据分析实战(尚未出版电子书) 1.1数据分析 当今世界对信息技术的依赖程度日渐加深,每天都会产生和存储海量的数据.数据的来源多种 ...
- Python数据分析实战
Python数据分析实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1nlHM1IW8MYg3z79TUwIsWg 提取码:ux8t 复制这段内容后打开百度网盘手 ...
最新文章
- 从零搭建 Spring Cloud 服务(超级详细)
- MS SQL SERVER 2005 用于Web开发的安装注意事项
- 分享Silverlight/WPF/Windows Phone一周学习导读(07月18日-07月24日)
- printf-小代码,大问题
- 创建带有关联的 XML 架构的 XML 文件 从 XML 文件创建 XML 架构
- java rabbitmq 工具类_RabbitMq通用管理工具类
- 二进制(bit)整数
- RowVersion字段从SqlServer到PostgreSQL的迁移
- 今天算做正式开始SP开发吧,第一步当然是将down下来的资料好好地看一看,顺便也记下这些有用的地址...
- PHP模板引擎Smarty内建函数section,sectionelse用法详解
- 微软将弃用 System.Data.OracleClient
- 计算机桌面图标被挡怎么办,win7电脑桌面图标被挡住怎么恢复 - 卡饭网
- nas服务器搭建网站,小白都能看懂的NAS服务器搭建教程
- 樊登读书搞定读后感_樊登读书会听书《搞定》《高效人士的七个习惯》《人生效率手册》《搞定3》第四周学习感悟...
- nmn抗衰老是骗局吗,美国nmn骗局,正面解答
- 本地Blast2GO安装,及其数据库更新和导入数据中断的解决方案
- 服务器网卡信息BIOS中设置,bios设置如何关闭网卡
- 计算机待机时间长黑屏怎么办,电脑黑屏?如何解决?
- C++压缩解压之snappy
- autojs autoxjs text 选不中 失效 uiselector