关注公众号:【小张Python】,为你准备了 50+ 本Python 精品电子书籍 与 50G + 优质视频学习资料,后台回复关键字:1024 即可获取;如果对博文内容有什么疑问,公众号后台添加作者【个人微信】,可与作者直接进行交流

哈喽,我是小张,大家好久不见啊~

最近呢,对链家平台上的北京二手房数据做了个可视化分析,对目前北京的二手房交易情况有了个大致了解,最终得到一个很实在的结论:奋斗一辈子也买不到一个厕所这句话不是骗人的,是真的;关于具体分析内容客官请看下文

1,工具说明

本文用到的 Python 库有

pandas
re
requests
json
pyecharts
folium
random
stylecloud
jieba
pyquery
fake_useragent
time

外加 百度地图 API

2,数据采集

所有数据来源于链家二手房交易平台,上面每页排列 30 条二手房数据,本文采集了前 100 页 数据,每条二手房交易数据中提取 标题、单价、价格、地址、年份、房间样式 等字段作为可视化分析的数据来源

网站没有设置很强的反爬机制, 爬取时用的是 requests + Cookies+ PyQuery 组合即可,最好在爬取时加条 time.sleep() 命令,隔几秒休眠一次,代码如下:

import requests
from pyquery import PyQuery as pq
from fake_useragent import UserAgent
import time
import random
import pandas as pdUA = UserAgent()
headers = {
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Cookie': '你的Cookie',
'Host': 'bj.lianjia.com',
'Referer': 'https://bj.lianjia.com/ershoufang/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36',
}
num_page = 2
class Lianjia_Crawer:def __init__(self,txt_path):super(Lianjia_Crawer,self).__init__()self.file = str(txt_path)self.df = pd.DataFrame(columns = ['title','community','citydirct','houseinfo','dateinfo','taglist','totalprice','unitprice'])def run(self):'''启动脚本'''for i in range(100):url = "https://bj.lianjia.com/ershoufang/pg{}/".format(str(i))self.parse_url(url)time.sleep(random.randint(2,5))print('正在爬取的 url 为 {}'.format(url))print('爬取完毕!!!!!!!!!!!!!!')self.df.to_csv(self.file,encoding='utf-8')def parse_url(self,url):headers['User-Agent'] = UA.chromeres = requests.get(url, headers=headers)doc = pq(res.text)for i in doc('.clear.LOGCLICKDATA .info.clear'):try:pq_i = pq(i)title = pq_i('.title').text().replace('必看好房', '')Community = pq_i('.flood .positionInfo a').text()HouseInfo = pq_i('.address .houseInfo').text()DateInfo = pq_i('.followInfo').text()TagList = pq_i('.tag').text()TotalPrice = pq_i('.priceInfo .totalPrice').text()UnitPrice = pq_i('.priceInfo .unitPrice').text()CityDirct = str(Community).split(' ')[-1]Community = str(Community).split(' ')[0]data_dict ={'title':title,'community':Community,'citydirct':CityDirct,'houseinfo':HouseInfo,'dateinfo':DateInfo,'taglist':TagList,'totalprice':TotalPrice,'unitprice':UnitPrice}print(Community,CityDirct)self.df = self.df.append(data_dict,ignore_index=True)#self.file.write(','.join([title, Community, CityDirct, HouseInfo, DateInfo, TagList, TotalPrice, UnitPrice]))print([title, Community, CityDirct, HouseInfo, DateInfo, TagList, TotalPrice, UnitPrice])except Exception as e:print(e)print("索引提取失败,请重试!!!!!!!!!!!!!")if __name__ =="__main__":txt_path = "ershoufang_lianjia.csv"Crawer = Lianjia_Crawer(txt_path)Crawer.run() # 启动爬虫脚本

最终一共采集到 3000 条数据:

3,地址经纬度坐标转换

获取到的数据是地址是字符串形式(例如梵谷水郡*酒仙桥),后面地图位置标记时需要经纬度数据,需要把所有地址转化为经纬度坐标,这里借助了百度地图 API 完成这步操作

3.1 百度地图 AK 申请

API 的使用需要在 百度地图开放平台 申请一个 AK 效验码,网址:https://lbsyun.baidu.com/apiconsole/center#/home,登录自己的百度账号,在控制台创建一个应用,

控制台面板-> 我的应用-> 创建应用

其他参数默认,应用名称自定义命名即可,IP 白名单填入 0.0.0.0/0,点击提交

以上步骤操作完之后,控制台面板会多出一个应用,就是刚刚我们建立的,

3.2 地址经纬度坐标转换

获取到你的 AK 参数之后,把 AK 和 address(中文地址) 作为参数传入下面函数中,就能获取到对应的经纬度坐标

def get_location(address,AK):#根据地址转化为经纬度try:url = 'http://api.map.baidu.com/geocoding/v3/?address={}&output=json&ak={}&callback=showLocation'.format(address,AK)res_test = requests.get(url).textres = re.search('\((.*?)\)', res_test).group(0).strip('(').strip(')')lng = json.loads(res)['result']['location']['lng']lat = json.loads(res)['result']['location']['lat']print(lng, lat)return lng, latexcept Exception as e:print('error ---------\n')return None

百度地图 API 的 地址经纬度转换 功能 定位不仅仅局限于省、市,还能定位到门牌号,只要你提供的地址越详细,获取的经纬度信息越准确

4,可视化分析

这一部分进入可视化分析内容,城市毕竟是北京么所以首要的就是关注房价问题,在抓取的数据中,最高的将近19万+/每平方,最低的仅有 1.5 万/每平方

我看到 1.5 万每平方就不淡定了,这数据肯定有猫腻(北京房价按常理不可能这么低);为了验证想法,首先做了房产地段标记(经纬度地图标记借助百度地图地址 相关 Demo )

先看一下排名前十的:

上面是房价最高 Top10 的地段位置,看起来地理位置还行,都是在三环四环之内、分布在市中心附件,如果单看这张图的地图的话得不到有用的信息,可以对比一下 房价最低 Top10

下面是排名倒数前十的

上面是北京二手房房价排名后十 地段分布,房价在 1.5万-3万 不等,没看到这个分布图之前仅仅认为上面价格是卖家标错了,看完这个图后才发现卖家是 挂着羊头卖狗肉,挂着北京的名号,卖着北京以外的房子(有的房子已经位于河北境内),这可能就是卖房的套路之一吧

事出反常必有妖,无论买房还是买其他商品也好,卖家不会平白无故地给我们优惠,当价格远低于市场价之前交易需慎重、慎重、再慎重!

房价我分为 5 个区间,分别为 0-3万、3-8万、8-12万、12-15万,15万+ 五段,看一下各自的占比分布

其中房价位于 3-8万 占比最大达 76 %占比,次之就是8-12万、12-15万,依次占比为16.38%、3.46%,而房价位于 15 万 + 占比最少,仅有1.12% 左右;

接下来我们再看一下,不同价位二手房在北京的分布

15万+的

12-15万

8-12万

3-8万

从地段分布来看北京房价以8万作为分水岭,8万+和8万以内房产分布明显变化,价格越高,越靠市中心以外;从地图信息来看,想在北京买一套地段不错的房子,预期房价最低也要在8万+,8 万是什么概念,也就说如果你想在北京买一套50平米的房子,最低也要 400万!

关于15万+ 的房产,大致都分布两个区域,一个是高校区(周围是人大、北航、清华等高校),另一个位于右下角,也就是北京朝阳区

北京卖的二手房不一定都是装修之后的,有可能也是毛坯(刚建造交付之后,未进行任何装修);参考下图,北京二手房中毛坯占比约1.39%共41套,户主买来这些房子大概率用于资产增值而不是作为刚需;

借助 Treemap 图再看一下北京二手房建筑时间分布,大部分都集中于2002-2010 这 9 年,北京房产也是在这段期间迅速发展, 到 2015 年之后明显收缓,源于可建筑地段已经达到饱和再加上国家相关政策的施压

最后贴张词云图作为本文的结束,选取的文本信息为3000条房产信息的标题,从图中来看,标题中高频词汇有 南北通透、高楼层、精装修、采光好 等,也可以说这几个特点也是大多数房源的最大卖点(抛去价格、地段等因素)

5,小总结

本文针对北京二手房的分析角度并不全面,仅仅围绕着房价、地段、修建年份等几个维度做了简单分析,分析结果仅供学习,其数据真实性有考察

好了以上就是本文的全部内容,最后感谢大家的阅读,我们下期见~

6,源码获取

关于本文中涉及的全部源码和数据 获取方式,在微信公号:小张Python ,后台回复关键字 210303 即可~

Python爬虫 —3000+条北京二手房数据可视化分析相关推荐

  1. Python采集3000条北京二手房数据,看我都分析出了啥?

    最近呢,对链家平台上的北京二手房数据做了个可视化分析,对目前北京的二手房交易情况有了个大致了解,最终得到一个很实在的结论:奋斗一辈子也买不到一个厕所这句话不是骗人的,是真的:关于具体分析内容请看下文 ...

  2. 【大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析

    [大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析-哔哩哔哩https://b23.tv/saIKtBH flask web框架,数据使用requests模块爬取数据, ...

  3. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

  4. python xpath循环_Python爬虫 爬取北京二手房数据

    点击蓝字"python教程"关注我们哟! 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及 ...

  5. 基于Python的南京二手房数据可视化分析

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  6. Python 爬取北京二手房数据,分析北漂族买得起房吗?(附完整源码)

    来源:CSDN 本文约3500字,建议阅读9分钟. 本文根据Python爬取了赶集网北京二手房数据,R对爬取的二手房房价做线性回归分析,适合刚刚接触Python&R的同学们学习参考. 房价高是 ...

  7. 【Python】电商用户行为数据可视化分析实战

    本文中,云朵君将和大家一起从多个角度使用多个可视化技术,根据各种因素跟踪客户在电子商务网站的花费时间. 关于数据集 数据集来自kaggle -- Machine Hack. 先进电子商务的用户数量激增 ...

  8. python数据分析—10000条北京二手房电梯信息可视化分析(附源码)

    文章目录 开发工具 数据内容 实现代码 运行效果 处理异常数据 优化异常数据运行结果 10000条二手房信息下载地址 总结 开发工具 python版本:Python 3.6.1 python开发工具: ...

  9. 基于Python的招聘信息的大数据可视化分析系统

    1. 项目背景 互联网时代,网络已经完完全全渗透到我们的生活当中,成为我们生活当中的一部分,其中很多求职.找工作也不例外,因此,很多招聘平台,例如像赶集网.58同城.英才网.智联招聘.前程无忧等求职网 ...

最新文章

  1. 不吹牛会死!国内音乐平台进入“大逃杀”
  2. 将10进制整数转换成16进制整数输出
  3. 2018最新阿里Java技术三面(已拿Offer):JVM+高并发性能+单点登录+微服务
  4. DOM相关(主要是var和let的区别用法)
  5. matplotlib 设置水平线、垂直线
  6. 深度学习实践指南(五)—— 求解异或问题
  7. 打工人福利!教你如何一秒制作日报月报
  8. kuangbin专题-最短路练习
  9. MATLAB学习笔记02-MATLAB的数据类型
  10. ios审核新坑解决,因为需要访问相机权限被拒绝We noticed that your app requests the user’s consent to access their camera
  11. 分布式事务-TX-LCN 的lcn模式和tcc模式
  12. 腾讯与360继续争,受益的是谁?
  13. java语言 三国杀张昌蒲严教计算器
  14. uni-app做app自定义弹窗实现
  15. 【目标检测算法】YOLO-V5实战检测VOC2007数据集
  16. python 函数报错TypeError: object of type 'int' has no len()
  17. 物联网主流技术及其应用场景分析
  18. hihoCoder - 1353 满减优惠
  19. js 截取指定字符后面/前面的所有字符串
  20. 【渝粤教育】电大中专计算机职业素养 (8)作业 题库

热门文章

  1. 如何通过面试辨识一个人的责任心?
  2. 科学创新四十年,我们可能还没搞明白科学和技术的基本概念
  3. java 生成 pdf linux,java ppt在线转pdf linux
  4. 3DS MAX插件制作绚丽的拖光效果-3D建模教程
  5. MySQL中In与Exists的区别
  6. 如何隐藏控制台窗口?
  7. qq国际版android,QQ国际版(com.tencent.mobileqqi) - 6.0.3 - 应用 - 酷安
  8. 如何解决惠普WIN10系统的电源已接通,但未充电的问题
  9. 科学计算机bug,EMUI小助手:计算器百分比计算出bug?真相在这儿!
  10. 拉格朗日乘子库恩塔克条件