Python——租房信息数据分析

2021/7/7 17:05:34

本文主要是介绍Python——租房信息数据分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

租房信息数据分析

    • 1 题目:租房信息数据分析

      1. 导入数据

      1. 各行政区房源分布

      1. 小区房源数量TOP10

      1. 户型TOP10分布

      1. 租金分布

Python——线性回归模型

数据源:在百度网盘喏,自行下载。 在这里插入图片描述 链接: https://pan.baidu.com/s/1bJbwmBza9KAmWMmXi4se7A 提取码:ru68

1 题目:租房信息数据分析

“data”文件夹中有一文件“house_info.csv”保存了租房信息数据,以该文件作为数据源,按以下要求进行分析:

  1. 导入数据并对数据进行预处理;

  2. 分析各行政区的房源分布情况,选择合适的图表对各行政区的房源分布情况进行可视化,并总结分析结果;

  3. 以小区为单位,分析各小区的房源数量,选择合适的图表对小区房源数量TOP10进行可视化,并总结分析结果;

  4. 对整个租房数据的户型进行分析,统计户型TOP10,并选择合适的图表进行可视化,并总结分析结果;

  5. 分析租房数据的租金分布情况,选择合适的图表进行可视化,并总结分析结果。

2. 导入数据

    import pandas as pd
    import numpy as np
    detail = pd.read_csv(r".\house_info.csv", encoding="utf-8")
    # print(detail.head())
    print("清洗前缺失值的数目:\n",detail.isnull().sum())
    # 删除detail的缺失值
    d1 = detail.dropna(axis=0, how="any") # 以d1 为数据源
    # print(d1)
    print("清洗后缺失值的数目:\n",d1.isnull().sum())
    
    # 从前向后查找和判断是否有重复值
    print("重复值:",d1.duplicated().sum())

在这里插入图片描述

3. 各行政区房源分布

选用合适的图表,以行政区为单位,对比分析各行政区房源数量分布情况,并对可视化结果进行简单的总结。

    area = set(d1["位置1"]) # 统计多少个行政区
    print(area)
    # 创建一个DataFrame 对象,筛选需要数据{行政区,房源数量}
    d2 = pd.DataFrame({'行政区':d1["位置1"].unique(),'房源数量':[0]*len(area)})
    print(d2)
    print('-'*20)
    
    # groupby统计房源数量,并从小到大排序
    groupby_area = d1.groupby(by="位置1").count()  
    print(groupby_area)
    d2["房源数量"] = groupby_area.values
    d2 = d2.sort_values(by=["房源数量"],ascending=True)
    print(d2)

在这里插入图片描述

    # 绘图
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['font.sans-serif']=['SimHei']
    matplotlib.rcParams['axes.unicode_minus']=False
    
    X = d2["行政区"]
    print(X)
    Y = d2["房源数量"]
    print(Y)
    plt.figure(figsize=(8,6),dpi=300)
    plt.bar(X, Y, width=0.5, linewidth=2)
    for i,j in zip(X, Y):
        plt.text(i, j, "%d" % j, fontsize=16)
    plt.xlabel("行政区")
    plt.ylabel("房源数量")
    plt.title("各行政区房源分布图")
    plt.show()

在这里插入图片描述 在这里插入图片描述 从数据可以看出:从行政区的福田区到龙岗区,房源的数量是逐渐增加的。

4. 小区房源数量TOP10

选用合适的图表,以居住小区为单位,对比分析各小区房源数量分布情况,并对TOP10进行可视化,对分析结果进行简单的总结。

    area_small = set(d1["小区"]) # 统计多少个小区
    # print(area_small)
    
    # 创建一个DataFrame 对象,筛选需要数据{小区,小区房源数量}
    d_samll = pd.DataFrame({"小区":d1["小区"].unique(),"小区房源数量":[0]*len(area_small) })
    print(d_samll)
    print('-'*40)
    
    # groupby统计小区房源数量,并从大到小排序
    groupby_area = d1.groupby(by="小区").count()  
    # print(groupby_area)
    d_samll["小区房源数量"] = groupby_area.values
    d_samll = d_samll.sort_values(by=["小区房源数量"],ascending=False)
    print(d_samll)
    d_top10 =  d_samll.head(10) # 取前十
    print("小区房源数量TOP10是:\n",d_top10)
    

在这里插入图片描述

    # 绘图
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['font.sans-serif']=['SimHei']
    matplotlib.rcParams['axes.unicode_minus']=False
    
    X = d_top10["小区"]
    print(X)
    Y = d_top10["小区房源数量"]
    print(Y)
    plt.figure(figsize=(8,6),dpi=300)
    plt.bar(X, Y, width=0.5, linewidth=2)
    for i,j in zip(X, Y):
        plt.text(i, j, "%d" % j, fontsize=12)
    plt.xlabel("小区")
    plt.ylabel("小区房源数量")
    plt.title("小区房源数量TOP10")
    plt.xticks(rotation=335)
    plt.savefig(r"C:\Users\锦樽\Desktop\小区房源数量TOP10.png",dpi=400)
    plt.show()

在这里插入图片描述 在这里插入图片描述 从图可知,小区的房源数量从 丰湖花园到 名仕阁逐渐递减,而且丰湖花园小区房源是其他小区的两倍左右,丰湖花园的房源很多,在该竞争领域很大优势。

5. 户型TOP10分布

选用合适的图表,分析户型分布情况,并对TOP10进行可视化,对分析结果进行简单的总结。

    house_type = set(d1["户型"]) # 统计多少个户型
    print(house_type)
    
    # 创建一个DataFrame 对象,筛选需要数据{户型,户型数量}
    d_house = pd.DataFrame({"户型":d1["户型"].unique(),"户型数量":[0]*len(house_type) })
    print(d_house)
    print('-'*40)
    
    # groupby统计户型数量,并从大到小排序
    groupby_area = d1.groupby(by="户型").count()  
    print(groupby_area)
    d_house["户型数量"] = groupby_area.values
    d_house = d_house.sort_values(by=["户型数量"],ascending=False)
    print(d_house)
    d_top10 =  d_house.head(10) # 取前十
    print("户型数量TOP10是:\n",d_top10)

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

    # 绘图
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['font.sans-serif']=['SimHei']
    matplotlib.rcParams['axes.unicode_minus']=False
    
    X = d_top10["户型"]
    # print(X)
    Y = d_top10["户型数量"]
    # print(Y)
    plt.figure(figsize=(12,8),dpi=300)
    # plt.bar(X, Y, width=0.5, linewidth=2)
    b = plt.barh(X, Y, height=0.6, linewidth=1)
    for i in b:
        plt.text(i.get_width(),i.get_y()+0.2,i.get_width() )
    plt.ylabel("户型")
    plt.xlabel("户型数量")
    plt.title("户型数量TOP10")
    plt.savefig(r"C:\Users\锦樽\Desktop\户型数量TOP10.png",dpi=400)
    plt.show()

在这里插入图片描述 从图可知,众多户型中 5室1卫户型数量远远超过其他户型,可以看出这个户型是很多购买者喜欢的。

6. 租金分布

选用合适的图表,分析租金的分布情况,对分析结果进行简单的总结。

    house_rent = set(d1["价格"]) # 统计多少个价格
    # print(house_rent)
    
    # 创建一个DataFrame 对象,筛选需要数据{价格,价格数量}
    d_rent = pd.DataFrame({"租金":d1["价格"].unique(),"价格数量":[0]*len(house_rent) })
    print(d_rent)
    print('-'*40)
    
    # groupby统计价格数量,并从大到小排序
    groupby_area = d1.groupby(by="价格").count()  
    print(groupby_area)
    d_rent["价格数量"] = groupby_area.values
    d_rent = d_rent.sort_values(by=["价格数量"],ascending=False)
    print(d_rent)
    d_top10 =  d_rent.head(10) # 取前十
    print("价格数量TOP10是:\n",d_top10)

在这里插入图片描述

    # 对每个行政区,进行租金价格平均分析
    # 新建一个DataFrame对象,设置房租总金额和总面积初始值为0
    print(area)
    avg_rent = pd.DataFrame({'行政区':d1["位置1"].unique(),'房租总金额':[0]*len(area),'总面积':[0]*len(area) })
    print(avg_rent)
    print('-'*40)
    
    # 求总金额和总面积
    sum_price = d1["价格"].groupby(d1["位置1"]).sum()
    sum_area = d1["面积"].groupby(d1["位置1"]).sum()
    avg_rent["房租总金额"] = sum_price.values
    avg_rent["总面积"] = sum_area.values
    print(avg_rent) 
    
    # 计算各区域每平方米房租价格,并保留2位小数
    avg_rent['每平方米租金(元)'] = round(avg_rent['房租总金额']/avg_rent['总面积'],2)
    print(avg_rent)
    print("*-"*25)
    # 合并需要的数据
    rent_merge = pd.merge(d2,avg_rent)
    rent_merge
    # print(rent_merge)

在这里插入图片描述

    import matplotlib
    import matplotlib.pyplot as plt
    import matplotlib.ticker as mtick
    from matplotlib.font_manager import FontProperties
    matplotlib.rcParams['font.sans-serif']=['SimHei']
    matplotlib.rcParams['axes.unicode_minus']=False
    num = rent_merge['房源数量']                  # 数量
    price = rent_merge['每平方米租金(元)']    # 价格
    
    X = rent_merge["行政区"]
    print(X)
    # Y = rent_merge["房源数量"]
    # print(Y)
    fig = plt.figure(figsize=(8,6))
    axl = fig.add_subplot(111)
    axl.plot(X, price,'or-',label = '价格')
    axl.set_ylim([0,210])
    axl.set_ylabel('价格')
    for i,j in zip(X, price):
        plt.text(i, j, "%d" % j, fontsize=16)
    plt.title("租金分布情况")
    ax2 = axl.twinx()
    plt.bar(X,num,width=0.4,color = 'green',label = '数量', linewidth=2)
    ax2.set_ylabel('数量')
    ax2.set_ylim([0,2000])
    for i,j in zip(X, num):
        plt.text(i, j, "%d" % j, fontsize=16)
    plt.title("租金分布情况")
    plt.savefig(r"C:\Users\锦樽\Desktop\租金分布情况图.png",dpi=400)
    plt.show()

在这里插入图片描述 从折线图可以看出,罗湖区与南山区 房源数量比较多,但是租金价格平均是高的,龙岗区的房源数量多而且租金相比其他行政区是价廉的,适合毕业生、求职者去租房。

 



这篇关于Python——租房信息数据分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程