Python——租房信息数据分析 Love The Way You Lie 2023-01-01 15:59 283阅读 0赞 ### 租房信息数据分析 ### * * 1 题目:租房信息数据分析 * 2. 导入数据 * 3. 各行政区房源分布 * 4. 小区房源数量TOP10 * 5. 户型TOP10分布 * 6. 租金分布 [Python——线性回归模型][Python] 数据源:在百度网盘喏,自行下载。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70] 链接:[https://pan.baidu.com/s/1bJbwmBza9KAmWMmXi4se7A][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()) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 1] ## 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) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 2] # 绘图 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() ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 3] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 4] 从数据可以看出:从行政区的福田区到龙岗区,房源的数量是逐渐增加的。 ## 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) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 5] # 绘图 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() ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 6] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 7] 从图可知,小区的房源数量从 丰湖花园到 名仕阁逐渐递减,而且丰湖花园小区房源是其他小区的两倍左右,丰湖花园的房源很多,在该竞争领域很大优势。 ## 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) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 8] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 9] ![在这里插入图片描述][20210103220625717.png] # 绘图 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() ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 10] 从图可知,众多户型中 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) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 11] # 对每个行政区,进行租金价格平均分析 # 新建一个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) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 12] 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() ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 13] 从折线图可以看出,罗湖区与南山区 房源数量比较多,但是租金价格平均是高的,龙岗区的房源数量多而且租金相比其他行政区是价廉的,适合毕业生、求职者去租房。 [Python]: https://blog.csdn.net/weixin_44775255/article/details/112159173 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70]: /images/20221120/01f7425e82fc4e52aaa68ec4e4911d53.png [https_pan.baidu.com_s_1bJbwmBza9KAmWMmXi4se7A]: https://pan.baidu.com/s/1bJbwmBza9KAmWMmXi4se7A [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 1]: /images/20221120/845b70cc3ef84432b0dd20483c598666.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 2]: /images/20221120/bfaebcbd6422456a8964dc145f9ceb48.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 3]: /images/20221120/43e04a229f254982a82598695225b89f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 4]: /images/20221120/a7cec1e793c64a80972009addd1d51f3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 5]: /images/20221120/b7bb85104da045eaace26ee08c677684.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 6]: /images/20221120/a52499820f8d4a64bb4b3618edcdd12f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 7]: /images/20221120/7847893c157e4e2692a10ec727c5d4cf.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 8]: /images/20221120/2f05d79095c64dbd8679dd784dcb0a22.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 9]: /images/20221120/afabac7d47364a5884bf86130b8c92cc.png [20210103220625717.png]: /images/20221120/c63e63c6e4de4d75bd75ae58622d4aff.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 10]: /images/20221120/16b63040e4e24c9ab99374ff3b7bb15f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 11]: /images/20221120/5bfa917d157a48e4bcff814f7b5d87b2.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 12]: /images/20221120/b3ea12716a4b4b899a0f01f62547e882.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc3NTI1NQ_size_16_color_FFFFFF_t_70 13]: /images/20221120/757cf765bda84356b8a2f32979539efd.png
相关 基于python+scrapy的租房信息数据展示系统 目 录 摘 要 I ABSTRACT II 1 绪论 1 1.1 研究背景及需求分析 1 1.2 国内外研究现状 2 1.2.1 爬虫技术概述 2 旧城等待,/ 2024年04月01日 13:59/ 0 赞/ 40 阅读
相关 Python——租房信息数据分析 租房信息数据分析 1 题目:租房信息数据分析 2. 导入数据 3. 各行政区房源分布 4. 小区房源数量TOP10 Love The Way You Lie/ 2023年01月01日 15:59/ 0 赞/ 284 阅读
相关 深圳市蛋壳公寓租房数据分析 ![format_png][] 图片来源:蛋壳公寓官网 前言 2020年以来,受疫情冲击、政策监管收紧等多重因素影响,长租公寓可谓路途坎坷。根据中国房地产报不完全统计 系统管理员/ 2022年12月23日 11:27/ 0 赞/ 255 阅读
相关 【数据分析师-数据分析项目案例一】600w+条短租房数据案例分析 短租房数据案例分析 1 前言 1.1 数据集 1.2 数据分析思路梳理 2 数据分析 2.1 数据加载 2 ╰+哭是因爲堅強的太久メ/ 2022年09月08日 14:48/ 0 赞/ 330 阅读
相关 python 爬虫抓取19楼租房信息 查看19lou.com的Cookie chrome中打开19lou.com,按F12可以打开开发者工具查看 ![这里写图片描述][20160521164932189] 以你之姓@/ 2022年07月24日 11:16/ 0 赞/ 199 阅读
相关 python 爬取了租房数据 爬取链接:[https://sh.lianjia.com/zufang/][https_sh.lianjia.com_zufang] 代码如下: import 谁借莪1个温暖的怀抱¢/ 2022年05月14日 07:42/ 0 赞/ 317 阅读
相关 利用python爬取贝壳网租房信息 最近准备换房子,在网站上寻找各种房源信息,看得眼花缭乱,于是想着能否将基本信息汇总起来便于查找,便用python将基本信息爬下来放到excel,这样一来就容易搜索了。 1. 红太狼/ 2021年12月22日 03:45/ 0 赞/ 561 阅读
相关 JAVA爬虫 - 爬取豆瓣租房信息 最近打算换房子,豆瓣上面的租房小组相对来说较为真实,但是发现搜索功能不是那么友好,所以想把帖子的数据都爬到数据库,自己写sql语句去筛选,开搞! 每步过程都贴上完整代码,感兴 柔情只为你懂/ 2021年12月17日 12:04/ 0 赞/ 425 阅读
相关 深圳租房信息爬虫 考虑到以后可能会在深圳工作,所以写了这个爬虫,希望对自己的找房过程提供一些便捷。 信息来源是豆瓣的深圳租房小组(想爬取其他城市只需要更换一下URL就好)。 你们一定会说这么 叁歲伎倆/ 2021年09月29日 11:18/ 0 赞/ 329 阅读
还没有评论,来说两句吧...