zoukankan      html  css  js  c++  java
  • 仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    我有个小外甥,今年准备毕业,在我的极力劝说下来到了深圳工作,那第一件事就是租房子了。

    深圳的房价大家也知道,最近几年涨的厉害,3万一平都买不到什么好房子,其实看到这个情况,我着实为下一代担心,月入2W的应届毕业生寥寥无几,就是进了大厂赚到了钱,面临的压力也是非常大,最后买房就变成了掏空两个家庭一辈子的事情。

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    今天是周五,闲来无事,我就用Python爬点深圳房价的数据,然后做出可视化分析分析吧。

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    来了就是深圳人哈哈哈哈

    Python对于我的粉丝来说可能很简单,大家都是做IT的,面对最简单的语言不得大展身手?大家做可视化用什么工具呢?其实python也能,但是可视化太丑了,还很麻烦,所以不考虑。

    Pyecharts,Echarts,Highcharts...会点程序很重要阿,一个charts就能玩出这么多花样,但是他们最多算个图表插件罢了,我还是喜欢用现成的工具,比如BI工具。说到BI,我不止一次地给你们推荐,今天就来做个实际操作。

    FineBI是交互式数据可视化BI工具,可以快速地把数据转化为各种漂亮的可视化图表。

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    FineBI做出的驾驶舱

    除此之外,FineBI这款商业分析工具还可以制作出更多漂亮的图表,协作并共享自定义仪表板和交互式报表等,文末给你们送上它的下载地址,先看分析。

    一、数据获取

    我们的数据来源是链接网上的信息,应该还挺全的,虽然最近它在裁员....

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    这就是我们需要的数据页面了

    爬取各个行政区房源信息,并数据保存为DataFrame,话不多说,直接上代码:

    area_dic = {'罗湖区':'luohuqu',
                '福田区':'futianqu',
                '南山区':'nanshanqu',
                '盐田区':'yantianqu',
                '宝安区':'baoanqu',
                '龙岗区':'longgangqu',
                '龙华区':'longhuaqu',
                '坪山区':'pingshanqu'}
    
    
    # 加个header以示尊敬
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
               'Referer': 'https://sz.lianjia.com/ershoufang/'}
    
    # 新建一个会话
    sess = requests.session()
    sess.get('https://sz.lianjia.com/ershoufang/', headers=headers)
    
    # url示例:https://sz.lianjia.com/ershoufang/luohuqu/pg2/
    url = 'https://sz.lianjia.com/ershoufang/{}/pg{}/'
    
    
    # 新建一个DataFrame存储信息
    data = pd.DataFrame()
    
    for key_, value_ in area_dic.items():
        # 获取该行政区下房源记录数
        start_url = 'https://sz.lianjia.com/ershoufang/{}/'.format(value_)
        html = sess.get(start_url).text
        house_num = re.findall('共找到<span> (.*?) </span>套.*二手房', html)[0].strip()
        print('{}: 二手房源共计「{}」套'.format(key_, house_num))
        time.sleep(1)
        # 页面限制 每个行政区只能获取最多100页共计3000条房源信息
        total_page = int(math.ceil(min(3000, int(house_num)) / 30.0))
        for i in tqdm(range(total_page), desc=key_):
            html = sess.get(url.format(value_, i+1)).text
            soup = BeautifulSoup(html, 'lxml')
            info_collect = soup.find_all(class_="info clear")
            
            for info in info_collect:
                info_dic = {}
                # 行政区
                info_dic['area'] = key_
                # 房源的标题
                info_dic['title'] = re_match('target="_blank">(.*?)</a><!--', str(info))
                # 小区名
                info_dic['community'] = re_match('xiaoqu.*?target="_blank">(.*?)</a>', str(info))
                # 位置
                info_dic['position'] = re_match('<a href.*?target="_blank">(.*?)</a>.*?class="address">', str(info))
                # 税相关,如房本满5年
                info_dic['tax'] = re_match('class="taxfree">(.*?)</span>', str(info))
                # 总价
                info_dic['total_price'] = float(re_match('class="totalPrice"><span>(.*?)</span>万', str(info)))
                # 单价
                info_dic['unit_price'] = float(re_match('data-price="(.*?)"', str(info)))
                
                # 匹配房源标签信息,通过|切割
                # 包括面积,朝向,装修等信息
                icons = re.findall('class="houseIcon"></span>(.*?)</div>', str(info))[0].strip().split('|')
                info_dic['hourseType'] = icons[0].strip()
                info_dic['hourseSize'] = float(icons[1].replace('平米', ''))
                info_dic['direction'] = icons[2].strip()
                info_dic['fitment'] = icons[3].strip()
                
                # 存入DataFrame
                if data.empty:
                    data = pd.DataFrame(info_dic,index=[0])
                else:
                    data = data.append(info_dic,ignore_index=True)

    够意思吧,直接给各位学习,就是希望大家能一起交流,喜欢的记得帮我评论666。

    最后我们爬到的部分数据是这样的,链家房源的数据还是挺靠谱的:

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    二、数据处理

    上面说FineBI,我们就来看一下为什么是它。

    下载好之后,直接创建数据集,导入我们刚刚获取的房价数据:

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    同时,它内部自带ETL功能,直接在软件内操作就好,就算脏数据也没有关系,大大节约了我的时间。

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    数据处理好之后,新建仪表板,就可以直接分析了,整个过程都是在浏览器上进行的,反应很迅速。

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    三、深圳房价可视化分析

    从取数到分析出来,我一共花了半小时左右,个人觉得速度太快了,因为实在是太方便了。

    我们一共做这6个可视化分析:

    • 房源面积-总价散点图
    • 各行政区均价
    • 均价最贵的10个地段
    • 均价最贵的10个小区
    • 户型分布
    • 房源描述词云图

    1、房源面积-总价散点图

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    大家可以忽略最上面那个8800万的,那可能是腾讯马总的房子....

    可以看出来,深圳的房价是非常贵的,一个总价200W的房子,可能就只有几十平方,真的就是寸土寸金。

    如果你从毕业开始就进入腾讯或者华为,一路升职,你或许可以靠自己的力量在这里安家。来了就是深圳人,这也可能只是一句口号罢了。

    因为我也曾迷茫。

    2、各行政区均价

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    最贵的是南山区,整体均价9.2W/平米;最便宜的是坪山区,均价3.5W/平米。

    南山区拥有最多的名企,最好的医院、学校、商场。

    3、均价最高的10个小区

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    上面的这些小区,一般人是难以承受的,但是据我了解,入住率是不低的,说明深圳还是一座充满机会的城市。

    4、均价最高的10个地段

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    深圳湾就不说了,是重点发力的地区,无敌海景,我要是有钱,我也去买(我就是想想),比上海的黄浦江便宜一点。

    5、户型分布

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    3室2厅的房子数量是最多的,可是别以为大,在深圳,90平方的房子也能给你变成三室两厅,所以这个数据没什么价值,你只需要知道3室2厅及以下的占比达到了75%就够了。

    6、房源描述词云图

    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

    大家买房也就注意这么几个点:朝南、采光、户型、地铁、装修、几年,海景不海景的无所谓,毕竟海景房这些都有....

    总结

    以上就是我用FineBI给大家带来的数据分析实战,这个工具是不是很方便呢,虽然定位是企业级的数据分析平台,但是对于个人来说是不收费的,大家可以尝试一下。

    房价不会因为最近的事情下降的,所以年轻人,努力吧~

    有兴趣的可以评论“房价”,即可获得源代码和工具地址!

  • 相关阅读:
    浅谈Chrome V8引擎中的垃圾回收机制
    selenium反爬机制
    03 HTTP协议与HTTPS协议
    HTTP缓存机制和原理
    python 自动发送邮件
    02 Anaconda的介绍,安装记以及使用
    01 关于jupyter的环境安装
    SQLAlchemy
    django-debug-toolbar
    flask 第十篇 after_request before_request
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13325626.html
Copyright © 2011-2022 走看看