import pandas as pd
lj_data = pd.read_csv('LJdata.csv')
#原始列名
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.head(5)
  district address title house_type area price floor build_time direction update_time view_num extra_info link
0 燕莎租房 新源街 亮马桥 新源街 精装两居 交通便利 看房方便 随时入住 2室1厅 50平米 5800 中楼层(共6层) 1981年建板楼 2017.07.21 26 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101803342.html
1 望京租房 澳洲康都 澳洲康都东向精致两居室........... 2室1厅 79平米 7800 中楼层(共28层) 2005年建板塔结合 2017.07.23 33 距离14号线(东段)东湖渠站731米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101753126.html
2 广安门租房 远见名苑 远见名苑 东向两居室 独立小区环境 适合居家 2室1厅 86平米 8000 低楼层(共25层) 2006年建塔楼 2017.07.20 34 距离7号线达官营站684米 随时看房 精装修 自供暖 https://bj.lianjia.com/zufang/101101756753.html
3 天通苑租房 天通苑北一区 北一区简装两居,采光好,视野美,出行方便 2室1厅 103平米 5300 低楼层(共13层) 2004年建板楼 东南 2017.07.25 30 距离5号线天通苑站927米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101780034.html
4 团结湖租房 团结湖北口 团结湖北口近地铁高楼层朝南向精装修正规两居室 2室1厅 63平米 6400 高楼层(共16层) 1982年建塔楼 2017.07.26 30 距离10号线团结湖站88米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101781083.html
lj_data.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2760 entries, 0 to 2759
Data columns (total 13 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   district     2760 non-null   object
 1   address      2760 non-null   object
 2   title        2760 non-null   object
 3   house_type   2760 non-null   object
 4   area         2760 non-null   object
 5   price        2760 non-null   int64 
 6   floor        2760 non-null   object
 7   build_time   2758 non-null   object
 8   direction    2760 non-null   object
 9   update_time  2760 non-null   object
 10  view_num     2760 non-null   int64 
 11  extra_info   2760 non-null   object
 12  link         2760 non-null   object
dtypes: int64(2), object(11)
memory usage: 280.4+ KB
'''
lj_data.shape
#(2760, 13)
lj_data.describe()   #只能计算数值型的
  price view_num
count 2760.000000 2760.000000
mean 7570.800725 13.448913
std 6316.204986 12.746202
min 1300.000000 0.000000
25% 4500.000000 4.000000
50% 6000.000000 10.000000
75% 8500.000000 19.000000
max 210000.000000 122.000000

最贵和最便宜的房子

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)
  district address title house_type area price floor build_time direction update_time view_num extra_info link
2658 和平里租房 雍和家园二期 雍和家园 底商出租 使用面积720米 6室3厅 720平米 210000 低楼层(共6层) 2005年建板楼 2017.07.26 21 距离2号线雍和宫站293米 随时看房 集中供暖 https://bj.lianjia.com/zufang/101101672514.htm

找到最近新上的10套房子

lj_data.sort_values(by='update_time', ascending=False).head(10)
#查看所有更新时间
lj_data['update_time'].unique()
'''
array(['2017.07.21', '2017.07.23', '2017.07.20', '2017.07.25',
       '2017.07.26', '2017.07.16', '2017.07.22', '2017.07.24',
       '2017.07.27', '2017.07.19', '2017.07.14', '2017.07.15',
       '2017.07.17', '2017.07.18'], dtype=object)
'''

看房人数

lj_data['view_num'].mean() #平均值
#13.44891304347826
lj_data['view_num'].median() #中位数
#10.0
# 不同看房人数的房源数量
tmp_df =lj_data['view_num'].value_counts().to_frame().reset_index()
tmp_df
index view_num
0 0 152
1 1 149
2 4 147
3 2 143
4 7 136
... ... ...
69 80 1
70 74 1
71 72 1
72 58 1
73 86 1

74 rows × 2 columns

tmp_df.columns = ['view_num', 'count']
tmp_df.sort_values(by='view_num', inplace=True)   #inplace=True直接在原始数据中保存排序之后的结果
tmp_df.head()
  view_num count
0 0 152
1 1 149
3 2 143
5 3 129
2 4 147
#画图 inline不会另外生成图片,在下面展示
%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
  district address title house_type area price floor build_time direction update_time view_num extra_info link house_age
0 燕莎租房 新源街 亮马桥 新源街 精装两居 交通便利 看房方便 随时入住 2室1厅 50平米 5800 中楼层(共6层) 1981年建板楼 2017.07.21 26 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101803342.html 38
1 望京租房 澳洲康都 澳洲康都东向精致两居室........... 2室1厅 79平米 7800 中楼层(共28层) 2005年建板塔结合 2017.07.23 33 距离14号线(东段)东湖渠站731米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101753126.html 14
2 广安门租房 远见名苑 远见名苑 东向两居室 独立小区环境 适合居家 2室1厅 86平米 8000 低楼层(共25层) 2006年建塔楼 2017.07.20 34 距离7号线达官营站684米 随时看房 精装修 自供暖 https://bj.lianjia.com/zufang/101101756753.html 13
3 天通苑租房 天通苑北一区 北一区简装两居,采光好,视野美,出行方便 2室1厅 103平米 5300 低楼层(共13层) 2004年建板楼 东南 2017.07.25 30 距离5号线天通苑站927米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101780034.html 15
4 团结湖租房 团结湖北口 团结湖北口近地铁高楼层朝南向精装修正规两居室 2室1厅 63平米 6400 高楼层(共16层) 1982年建塔楼 2017.07.26 30 距离10号线团结湖站88米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101781083.html 37
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2755 朝青租房 天鹅湾北区 天鹅湾北区 1室1厅 9500元 1室1厅 50平米 9500 中楼层(共8层) 2010年建板塔结合 2017.07.27 13 距离6号线青年路站736米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101697995.html 9
2756 太阳宫租房 水星园 水星园精装一居室 可自带家具家电 业主也可配齐 1室1厅 68平米 9500 中楼层(共23层) 2005年建板塔结合 2017.07.24 14 距离10号线太阳宫站432米 随时看房 集中供暖 https://bj.lianjia.com/zufang/101101698013.html 14
2757 六里桥租房 莲花小区 莲花小区 西南两居室 温馨舒适 楼层合适 2室1厅 84平米 7200 低楼层(共28层) 1999年建板塔结合 西南 2017.07.26 7 距离10号线莲花桥站661米 随时看房 集中供暖 https://bj.lianjia.com/zufang/101101702130.html 20
2758 陶然亭租房 中海紫御公馆 中海紫御公馆 把您的家安放在花园里 2室2厅 91平米 12000 中楼层(共22层) 2010年建板塔结合 2017.07.26 6 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101703605.html 9
2759 三元桥租房 曙光里 曙光里南向 高层两居室 随时看房 2室1厅 62平米 6200 高楼层(共18层) 1992年建塔楼 2017.07.25 19 距离机场线三元桥站980米 随时看房 集中供暖 https://bj.lianjia.com/zufang/101101704735.html 27

2760 rows × 14 columns

lj_data.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2760 entries, 0 to 2759
Data columns (total 14 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   district     2760 non-null   object
 1   address      2760 non-null   object
 2   title        2760 non-null   object
 3   house_type   2760 non-null   object
 4   area         2760 non-null   object
 5   price        2760 non-null   int64 
 6   floor        2760 non-null   object
 7   build_time   2758 non-null   object
 8   direction    2760 non-null   object
 9   update_time  2760 non-null   object
 10  view_num     2760 non-null   int64 
 11  extra_info   2760 non-null   object
 12  link         2760 non-null   object
 13  house_age    2760 non-null   int64 
dtypes: int64(3), object(11)
memory usage: 302.0+ KB

'''
#面积空值判断  area没有空值,不用判断

#截取面积数值部分
lj_data.loc[:,'area'] = lj_data['area'].apply(lambda x:x[:-2]).apply(lambda x:float(x))  #float只有转换类型,后面才能做计算 
lj_data.head()
district address title house_type area price floor build_time direction update_time view_num extra_info link house_age
0 燕莎租房 新源街 亮马桥 新源街 精装两居 交通便利 看房方便 随时入住 2室1厅 50.0 5800 中楼层(共6层) 1981年建板楼 2017.07.21 26 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101803342.html 38
1 望京租房 澳洲康都 澳洲康都东向精致两居室........... 2室1厅 79.0 7800 中楼层(共28层) 2005年建板塔结合 2017.07.23 33 距离14号线(东段)东湖渠站731米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101753126.html 14
2 广安门租房 远见名苑 远见名苑 东向两居室 独立小区环境 适合居家 2室1厅 86.0 8000 低楼层(共25层) 2006年建塔楼 2017.07.20 34 距离7号线达官营站684米 随时看房 精装修 自供暖 https://bj.lianjia.com/zufang/101101756753.html 13
3 天通苑租房 天通苑北一区 北一区简装两居,采光好,视野美,出行方便 2室1厅 103.0 5300 低楼层(共13层) 2004年建板楼 东南 2017.07.25 30 距离5号线天通苑站927米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101780034.html 15
4 团结湖租房 团结湖北口 团结湖北口近地铁高楼层朝南向精装修正规两居室 2室1厅 63.0 6400 高楼层(共16层) 1982年建塔楼 2017.07.26 30 距离10号线团结湖站88米 随时看房 精装修 集中供暖 https://bj.lianjia.com/zufang/101101781083.html 37
lj_data.describe()
  area price view_num house_age
count 2760.000000 2760.000000 2760.000000 2760.000000
mean 87.658696 7570.800725 13.448913 22.283333
std 41.862928 6316.204986 12.746202 85.577865
min 19.000000 1300.000000 0.000000 3.000000
25% 58.000000 4500.000000 4.000000 12.000000
50% 80.000000 6000.000000 10.000000 16.000000
75% 103.000000 8500.000000 19.000000 23.000000
max 720.000000 210000.000000 122.000000 2020.000000
lj_data.info()
'''
lj_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2760 entries, 0 to 2759
Data columns (total 14 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   district     2760 non-null   object 
 1   address      2760 non-null   object 
 2   title        2760 non-null   object 
 3   house_type   2760 non-null   object 
 4   area         2760 non-null   float64
 5   price        2760 non-null   int64  
 6   floor        2760 non-null   object 
 7   build_time   2758 non-null   object 
 8   direction    2760 non-null   object 
 9   update_time  2760 non-null   object 
 10  view_num     2760 non-null   int64  
 11  extra_info   2760 non-null   object 
 12  link         2760 non-null   object 
 13  house_age    2760 non-null   int64  
dtypes: float64(1), int64(3), object(10)
memory usage: 302.0+ KB
'''

房子价格的分布

import numpy as np
print(lj_data['price'].mean())   #平均值
print(lj_data['price'].std())    #方差
print(lj_data['price'].median())  #中位数
'''
7570.800724637681
6316.204986067457
6000.0
'''

看房人数最多的朝向

popular_direction = lj_data.groupby('direction',as_index=False)[['view_num']].sum()
popular_direction[popular_direction['view_num']==popular_direction['view_num'].max()]
  direction view_num
23 南 北 11785

房型分布情况

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()]
  house_type view_num
5 2室1厅 17589

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

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

热门小区

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)
address view_num
951 清芷园 246
369 卡布其诺 245
938 润枫水尚 217
1149 芍药居北里 194
743 新康园 186
... ... ...
383 双河北里 0
191 人民大学北路19号院 0
763 方舟苑二期 0
758 新风街 0
482 大柳树13号院 0

1473 rows × 2 columns

出租房源最多的小区

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)
  address count
1288 远洋山水 19

集中供暖 平均价格
 

def center_heating(x):
    return 1 if "集中供暖" in x else 0

lj_data.loc[:,'center_heating'] = lj_data['extra_info'].apply(lambda x:center_heating(x))
lj_data['center_heating'].value_counts()
lj_data[['center_heating','price']].groupby('center_heating').mean()
  price
center_heating  
0 7317.436975
1 7623.603327

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

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

house_type_info
  area
  mean max min
house_type      
1室0厅 48.484076 140.0 19.0
1室1厅 54.669584 107.0 28.0
1室2厅 72.411765 109.0 45.0
1房间1卫 42.875000 48.0 35.0
2室0厅 49.888889 55.0 42.0
2室1厅 78.725857 194.0 26.0
2室2厅 106.028169 228.0 60.0
2房间1卫 60.166667 67.0 52.0
2房间2卫 37.000000 38.0 36.0
3室0厅 67.000000 70.0 61.0
3室1厅 114.237197 217.0 54.0
3室2厅 145.690821 255.0 79.0
3室3厅 144.000000 181.0 123.0
3房间1卫 85.333333 91.0 77.0
3房间2卫 46.750000 63.0 39.0
4室1厅 165.285714 330.0 87.0
4室2厅 196.333333 304.0 119.0
4室3厅 179.000000 237.0 150.0
5室1厅 138.250000 180.0 99.0
5室2厅 242.125000 332.0 181.0
5室3厅 191.600000 219.0 135.0
5房间2卫 158.000000 158.0 158.0
6室2厅 274.000000 316.0 232.0
6室3厅 720.000000 720.0 720.0

哪个地铁口附近房源最多

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()
link
sub_station  
(东段)东湖渠站 21
(东段)东风北桥站 13
(东段)北工大西门站 8
(东段)将台站 14
(东段)方庄站 13
... ...
黄村火车站站 3
黄村西大街站 3
黄渠站 6
鼓楼大街站 9
龙泽站 2

190 rows × 1 columns

是否有地铁 价格比较

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')
  price
has_sub_station  
0 6106.436464
1 8520.800478

地铁附近房源距离地铁平均距离

#距离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()
#709.1182364729459

 在租房源楼层情况

def get_floor(x):
    if '低楼层' in x:
        return '低楼层'
    elif '中楼层' in x:
        return '中楼层'
    else:
        return '高楼层'

lj_data.loc[:,'floor'] = lj_data['floor'].apply(get_floor)

lj_data.loc[:,'floor']
0       中楼层
1       中楼层
2       低楼层
3       低楼层
4       高楼层
       ... 
2755    中楼层
2756    中楼层
2757    低楼层
2758    中楼层
2759    高楼层
Name: floor, Length: 2760, dtype: object

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐