鏈家租房信息案例數據分析

IT之一小佬 2022-01-07 15:44:52 阅读数:456

租房 信息 案例 分析

載入數據:

import pandas as pd
lj_data = pd.read_csv('../data/excel_data/LJdata.csv')
lj_data

把列名替換成英文:

#原始列名
print(lj_data.columns)
#Index(['區域', '地址', '標題', '戶型', '面積', '價格', '樓層', '建造時間', '朝向', '更新時間', '看房人數','備注', '鏈接地址'],dtype='object')
lj_data.columns = ['district', 'address', 'title', 'house_type', 'area', 'price', 'floor', 'build_time', 'direction', 'update_time', 'view_num', 'extra_info', 'link']
lj_data.columns

 查看數據基本情况:

 最貴和最便宜的房子:

lj_data.loc[lj_data['price']==210000]
lj_data.loc[lj_data['price']==1300]
lj_data[lj_data['price']==lj_data['price'].min()]
lj_data[lj_data['price']==lj_data['price'].max()]
lj_data.sort_values(by='price').head(1)
lj_data.sort_values(by='price').tail(1)

 找到最近新上的10套房子:

lj_data.sort_values(by='update_time', ascending=False).head(10)
#查看所有更新時間
lj_data['update_time'].unique()

 看房人數:

lj_data['view_num'].mean() #平均值
lj_data['view_num'].median() #中比特數
# 不同看房人數的房源數量
tmp_df =lj_data['view_num'].value_counts().to_frame().reset_index()
tmp_df.columns = ['view_num', 'count']
tmp_df.sort_values(by='view_num', inplace=True)
tmp_df.head()
#畫圖
%matplotlib inline
tmp_df['count'].plot(kind='bar',figsize=(20,10))

房齡最小的10套房子的平均看房人數、平均面積  :

def get_front_4_num(x):
try:
return int(x[:4])
except:
return -1
lj_data.loc[:,'house_age'] = 2019-lj_data['build_time'].apply(get_front_4_num)
#面積空值判斷
lj_data = lj_data[lj_data['area'].notnull()]
#截取面積數值部分
lj_data.loc[:,'area'] = lj_data['area'].apply(lambda x: x[:-2]).apply(lambda x:float(x))
#計算平均值

 房子價格的分布:

import numpy as np
print(lj_data['price'].mean()) #平均值
print(lj_data['price'].std()) #方差
print(lj_data['price'].median()) #中比特數

 看房人數最多的朝向:

popular_direction = lj_data.groupby('direction')[['view_num']].sum()
popular_direction = popular_direction.reset_index()
popular_direction[popular_direction['view_num']==popular_direction['view_num'].max()]

 房型分布情况:

house_type_dis = lj_data.groupby(['house_type']).count()
%matplotlib inline
house_type_dis['district'].plot(kind='pie') #餅圖
house_type_dis['district'].plot(kind='bar') #柱狀圖

 最受歡迎的房型:

tmp = lj_data.groupby('house_type').agg({'view_num':'sum'})
tmp = tmp.reset_index()
tmp[tmp['view_num']==tmp['view_num'].max()]

 房子的平均租房價格 (元/平米):

lj_data.loc[:,'price_per_m2'] = lj_data['price']/lj_data['area']
lj_data['price_per_m2'].mean()

 熱門小區:

address_df = lj_data[['address','view_num']].groupby(['address']).sum()
address_df = address_df.reset_index()
address_df.sort_values(by='view_num', ascending=False)

 出租房源最多的小區:

tmp_df2 = lj_data[['address','view_num']].groupby(['address']).count()
tmp_df2 = tmp_df2.reset_index()
tmp_df2.columns = ['address','count']
tmp_df2.nlargest(columns='count', n=1)

 集中供暖 平均價格:

 不同房型的平均/最大/最小面積:

house_type_info = lj_data[['house_type','area']].groupby("house_type")\
.agg({"area":{'mean','max', 'min'}})

 哪個地鐵口附近房源最多:

import re
#距離14號線(東段)東湖渠站731米 隨時看房 精裝修 集中供暖
def find_sub_station(x):
try:
return re.search(pattern="(.+號線)(.+站)([0-9]+)米", string=x).group(2)
except:
return None
lj_data.loc[:,'sub_station'] = lj_data['extra_info'].apply(find_sub_station)
#統計
lj_data[['sub_station','link']].groupby('sub_station').count()

 是否有地鐵 價格比較:

def has_sub_station(x):
return 1 if "距離" in x else 0
lj_data.loc[:,'has_sub_station'] = lj_data['extra_info'].apply(has_sub_station)
lj_data[['has_sub_station','price']].groupby('has_sub_station').agg('mean')

 地鐵附近房源距離地鐵平均距離:

#距離14號線(東段)東湖渠站731米 隨時看房 精裝修 集中供暖
def cal_sub_station_distance(x):
try:
return int(re.search(pattern="(.+號線)(.+站)([0-9]+)米", string=x).group(3))
except:
return None
lj_data.loc[:,'distance'] = lj_data['extra_info'].apply(cal_sub_station_distance)
lj_data['distance'].mean()

在租房源樓層情况:

def get_floor(x):
if '低樓層' in x:
return '低樓層'
elif '中樓層' in x:
return '中樓層'
else:
return '高樓層'
lj_data.loc[:,'floor'] = lj_data['floor'].apply(get_floor)

版权声明:本文为[IT之一小佬]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071544519996.html