简单的链家租房数据分析

链家租房数据分析

以北京链家租房数据为例进行以下数据分析

  • 对“户型”、“面积”和“价格”以及每平米价格等信息进行简要的统计分析,如每平米价格的最大值、最小值、平均值,“面积”的分箱区间统计,“户型”的种类统计等。

    print("-----------分箱处理----------------")
    #bins=[0,30,70,100,130]
    labels=["小","中","微大","大"]
    dr["面积"]=ls2
    dr["范围"]=pd.cut(dr["面积"],bins=4,labels=labels,include_lowest = True)
    group_1=dr.groupby("地区").agg({"范围":"count"})
    print(group_1)
    
  • 按照具体户型(如 3 室 2 厅)或户型中的室(如 3 室)进行分组,统计每种户型的数量、最高 / 最低 / 平均租价等信息;按照区域(如海淀)进行分组,统计房源数量、最高 / 最低 / 平均租价等信息

    print("-----------按照区域(如海淀)进行分组,统计房源数量、最高/最低/平均租价----------------")
    
    group_3=dr.groupby("地区").agg({"房间":["count"],"价格(元/月)":["max","min","mean"]})
    print(group_3)
    
    
  • 将前两步实验中的信息进行可视化

    a. 使用条形图、饼图等形式绘制“户型”、“面积”和“价格”的分布情况:如将“户型”按 x 室绘制为饼图;将“面积”按不同的区间绘制为饼图;将“价格”按不同的区间绘制为饼图;

    b. 使用条形图、折线图等形式绘制“户型”(按室,如 3 室)和区域(如海淀)分组的房源数量和平均租金信息。(注释自己可以去除,图形也可以自己美化一下)

    #图一
    #plt.pie(dr["房间"],labels=dr["房间"],autopct='%3.1f%%')
    #plt.title('房源的户型占比')
    #plt.show()
    
    #图二
    #plt.pie(dr["面积"],labels=dr["户型"],autopct='%3.1f%%')
    #plt.title('面积按房源范围是否大小')
    #plt.show()
    
    
    
    #plt.pie(dr["价格(元/月)"],labels=dr["地区"],autopct='%3.1f%%')
    #plt.title('价格划图')
    #plt.show()
    
    #价格的条形图
    '''
    dr.plot.bar('小区名',"价格(元/月)",color="orange",edgecolor="green",width=0.6)
    plt.legend()
    plt.xlabel("小区名字")
    plt.ylabel("价格")
    plt.title("小区价格比较")
    plt.show()
    '''
    print(dr)
    dr["房间"]=pd.to_numeric(dr["房间"]) #将字符串转换为数字
    #户型条形图
    # dr.plot.bar('户型',"房间",color="orange",edgecolor="green",width=0.6)
    # plt.legend()
    # plt.xlabel("户型")
    # plt.ylabel("室")
    # plt.title("房间的比较")
    # plt.show()
    
    dr_=dr.groupby(["地区"],as_index=False).agg({'价格(元/月)':"mean"})
    
    #区域条形图
    dr_.plot.bar('地区','价格(元/月)',color="orange",edgecolor="green",width=0.6)
    plt.legend()
    plt.xlabel("区域")
    plt.ylabel("平均价格")
    plt.title("区域平均价格的比较")
    plt.show()
    

全部代码

import pandas
import pandas as pd
import requests
import re
import matplotlib.pyplot as plt
#plt.figure(dpi=300,figsize=(24,8))

plt.rcParams['font.sans-serif'] = ['SimHei']   #解决中文显示问题
plt.rcParams['axes.unicode_minus'] = False    # 解决中文显示问题
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                       'AppleWebKit/537.36 (KHTML, like Gecko)'
                       ' Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50'}
url='https://bj.lianjia.com/zufang/#contentList'

# for pag_index in range(1,5):
#     urls = 'https://bj.lianjia.com/zufang/'+'pg'+str(pag_index)+'/#contentList'
#     r_1 = requests.get(urls, headers=headers)
#     with open(r'D:\所有.txt','a+') as fp:
#         fp.write(r_1.text)
#
with open(r'D:\所有.txt','r') as fp:
    r=fp.read()
dr=pd.read_excel('2.xlsx',index_col=0);

r_1=requests.get(r'https://bj.lianjia.com/zufang/')

print(dr.describe()) # 对价格进行简要的统计

group_=dr.groupby("户型") #对户型进行统计分析
for i,j in group_:
    print(i)
    print(j)
    print()
ls1=re.findall(r'<i>\/<\/i>\s*(.+?)㎡',r) # 找面积
ls2=[]

for i in range(len(ls1)):
    ls2.append(int(float(ls1[i])))

print("-----------分箱处理----------------")
#bins=[0,30,70,100,130]
labels=["小","中","微大","大"]
dr["面积"]=ls2
dr["范围"]=pd.cut(dr["面积"],bins=4,labels=labels,include_lowest = True)
group_1=dr.groupby("地区").agg({"范围":"count"})
print(group_1)



ls4=re.findall(r'<i>\/<\/i>\s*(.+?[室,房间])',r) #找户型
ls5=re.findall(r'<i>\/<\/i>\s*(\d?)[室,房间]',r)  #找室,然后取数字

print(len(ls5))

dr["室"]=ls4
dr["房间"]=ls5
print("-----------统计每种户型的数量、最高/最低/平均租价----------------")
group_2=dr.groupby("室").agg({"房间":["count"],"价格(元/月)":["max","min","mean"]})
print(group_2)

print("-----------按照区域(如海淀)进行分组,统计房源数量、最高/最低/平均租价----------------")

group_3=dr.groupby("地区").agg({"房间":["count"],"价格(元/月)":["max","min","mean"]})
print(group_3)

#图一
#plt.pie(dr["房间"],labels=dr["房间"],autopct='%3.1f%%')
#plt.title('房源的户型占比')
#plt.show()

#图二
#plt.pie(dr["面积"],labels=dr["户型"],autopct='%3.1f%%')
#plt.title('面积按房源范围是否大小')
#plt.show()



#plt.pie(dr["价格(元/月)"],labels=dr["地区"],autopct='%3.1f%%')
#plt.title('价格划图')
#plt.show()

#价格的条形图
'''
dr.plot.bar('小区名',"价格(元/月)",color="orange",edgecolor="green",width=0.6)
plt.legend()
plt.xlabel("小区名字")
plt.ylabel("价格")
plt.title("小区价格比较")
plt.show()
'''
print(dr)
dr["房间"]=pd.to_numeric(dr["房间"]) #将字符串转换为数字
#户型条形图
# dr.plot.bar('户型',"房间",color="orange",edgecolor="green",width=0.6)
# plt.legend()
# plt.xlabel("户型")
# plt.ylabel("室")
# plt.title("房间的比较")
# plt.show()

dr_=dr.groupby(["地区"],as_index=False).agg({'价格(元/月)':"mean"})

#区域条形图
dr_.plot.bar('地区','价格(元/月)',color="orange",edgecolor="green",width=0.6)
plt.legend()
plt.xlabel("区域")
plt.ylabel("平均价格")
plt.title("区域平均价格的比较")
plt.show()
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值