链家租房信息案例数据分析

载入数据:

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)

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值