Python数据清洗与可视化——北京租房数据统计分析05

本文详细介绍了使用Python进行北京租房数据的清洗与分析,包括数据爬取、区域房源热力图绘制、户型数量条形图、各区域房源柱状图与折线图以及面积市场占有率饼状图的制作。通过数据去重、类型转化等预处理步骤,结合百度地图API绘制了热力图,并进行了多种图表的绘制分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

北京租房数据统计分析

5.1数据的爬取

代码:


# 5北京租房数据统计分析
# 5.1数据的爬取
import pandas as pd
import numpy as np
file_path=open(r"D:\python课设\数据\数据\5、北京租房数据统计分析\链家北京租房数据.csv")
file_data=pd.read_csv(file_path,encoding="utf-8")
file_data

运行结果:

image-20211228094128260

首先使用pandas的read_csv()方法进行数据的读取,然后就能够看到相应的表格信息。

5.2区域的房源总量的热力图分析

5.2.1数据去重:

代码:

# 先做数据预处理
file_data.duplicated()

运行结果:

image-20211228094618154

先做数据预处理,将重复的数据做去重处理,我们可以看到使用duplicated()可以返回一组布尔数组,重复的部分返回值为FALSE,不重复的为True。

代码:

filed_data=file_data.drop_duplicates()
filed_data

运行结果:

image-20211228094656656

使用drop_duplicates()方法对数据做去重处理,去除重复的数据,方便后面绘图计算以及其他操作。

5.2.2去除重复值

代码:

# 删除缺失的数据
data=filed_data.dropna()
data

运行结果:

image-20211228094758863

使用dropna()的方法删除空值,做数据进一步的处理,方便后面绘图计算以及其他操作。

5.2.3数据类型的转化

代码:

# 刚我搞完了AK码的申请,现在我开始进行后面的数据处理,由于我们在这里,存在着热图查看需要准确经纬度
# 位置所以需要在这里把详细的部分做数据拼接
data["位置"]="北京市"+data["区域"].values+"区"+data["小区名称"].values
data

运行结果:

image-20211228100042733

在这里显示热力图需要调用百度地图的API,就需要我们申请一个AK码,方便调用,然后还需要我们提供特别需要显示的经纬度。

这个地方比较复杂,所以我将会在另一篇博客中详细的论述这个部分的内容。

5.2.4导出热力图经纬度

代码:

# _*_ coding:utf-8 _*_
import requests
import pandas as pd
import time
import json


class LngLat:
    # def __init__(self):
    #     self.headers = {
   
    #         "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"}
    #     self.proxies = {
   
    #         "http": "http://61.135.217.7:80",
    #         "http": "http://118.190.95.43:9001",
    #         "http": "http://180.122.147.67:37153",
    #         "http": "http://118.190.95.35:9001",
    #         "http": "http://119.5.0.11:808",
    #         "http": "http://106.56.102.192:8070"
    #     }

    # 读取数据
    def read_data(self):
        file_path=open(r"D:\python课设\数据\数据\5、北京租房数据统计分析\链家北京租房数据.csv")
        file_data = pd.read_csv(file_path)
        duplicate_removal = file_data.drop_duplicates()
        house_names = duplicate_removal['位置']
        house_names = house_names.tolist()
        return house_names

    def get_url(self):
        url_temp = "http://api.map.baidu.com/geocoder/v2/?address={}&output=json&ak=NnQokv12fkyf4YoG59j9fRbGq4G8Lb4K&callback=showLocation"
        # ak = 'NnQokv12fkyf4YoG59j9fRbGq4G8Lb4K'
        house_names = self.read_data()
        return [url_temp.format(i) for i in house_names]

    # 发送请求
    def parse_url(self, url):
        while 1:
            try:
                r = requests.get(url)
            except requests.exceptions.ConnectionError:
                time.sleep(2)
                continue
            return r.content.decode('utf-8')

    def run(self):
        li = []
        urls = self.get_url()
        for url in urls:
            data = self.parse_url(url)
            str = data.split("{")[-1].split("}")[0]
            try:
                lng = float(str.split(",")[0].split(":")[1])
                lat = float(str.split(",")[1].split(":")[1])
            except ValueError:
                continue
                # 构建字典
            dict_data = dict(lng=lng, lat=lat, count=1)
            li.append(dict_data)
        f = open(r"D:\python课设\经纬度信息.txt",'w', 'w')
        f.write(json.dumps(li))
        f.close()
        print('写入成功')

if __name__ == '__main__':
    execute = LngLat()
    execute.run()

运行结果:

image-20211228100832200

首先读取链家北京租房数据.csv的数据,位置信息获取,然后使用request获取相关的经纬度信息,然后将处理好的经纬度数据写入到txt文件中方便后面进行热力图的绘制。

5.2.5 热力图绘制

代码:

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content
# 1. 数据集说明 这是一份北京租房数据,总计7000 多 条记录,分为 8 个同样结构的 CSV 数据文件。 # 2. 数据处理 首先通过 pandas 将这些数据文件合并到一起,然后进行数据处理,最后将清洗好的数据写到 sqlite 。 # 3.数据分析可视化 ## 3.1 整体情况 该数据集总共有 6024 个房源信息,平均每平米的租金为 169 元,每套房源的平均出租面积为 15.68 平米。 ## 3.2 地区分析 房源数量分布情况如下,可以看到朝阳和通州这两个地区的房源数量要远大于其它区,说明这两个地方的租赁市场比较活跃,人员流动和人口密度可能也比较大。 房租最贵的小区 TOP 10。半壁街南路 1 号院的房租最高,达到 596 元/平米,是平均值 169 元/平米的 **3** 倍。 从户型的房源数量分布来看,主要集中在 2-4 室的户型。之前也分析了,每套房源的平均出租面积为 15.68 平米,可见大部分房源都是合租,毕竟房租那么贵,生活成本太高了。 国家规定楼层 7 层以上需要装电梯,依据这个规定,我们根据楼层数来判断房源是否有电梯。 从下图可以看到,电梯房的房源数量比较多,毕竟楼层高,建的房子多,此外,电梯房平均每平米的租金也要比非电梯房贵 10 块钱。 在区分出电梯房之后,我们再引入楼层的纬度进行分析。 从租金上看,不管是电梯房还是非电梯房,低楼层的租金都会比较贵一些。因为北京地处北方,天气较干燥,不会有回南天,而且低楼层出行较为方便。电梯房的高楼层,租金也会比较贵,这大概是因为高楼层的风景较好。 > 南方天气潮湿,在春天的时候,有时会出现 回南天 这一气象,导致低楼层会出现地板、墙壁渗水,所以在南方一般都不爱租低层。 从房源数量上看,非电梯房的高层房源最多,低层房源最少。说明非电梯房的高层房源不容易租出去,这点在租金上也有所体现。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值