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()

在這里插入圖片描述 從折線圖可以看出,羅湖區與南山區 房源數量比較多,但是租金價格平均是高的,龍崗區的房源數量多而且租金相比其他行政區是價廉的,適合畢業生、求職者去租房。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM