Advertisement

北京某平台二手房分析

阅读量:
复制代码
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    
      
      
      
      
    
复制代码
    # 解决中⽂显示问题
    # plt.rcParams['font.sans-serif'] = [u'SimHei']
    # plt.rcParams['axes.unicode_minus'] = False
    
    
      
      
      
    
复制代码
    df = pd.read_csv('二手房数据.csv',encoding='gb18030')
    
    
      
    
复制代码
    df.head()
    
    
      
    
市区 小区 户型 朝向 楼层 装修情况 电梯 面积(㎡) 价格(万元) 年份
0 朝阳 育慧里一区 1室0厅 西 7 精装 有电梯 52.0 343.0 2001
1 朝阳 大西洋新城A区 2室2厅 南北 10 精装 有电梯 86.0 835.0 1999
2 朝阳 团结湖路 2室1厅 东西 6 精装 无电梯 65.0 430.0 1980
3 朝阳 尚家楼48号院 2室1厅 南北 12 精装 有电梯 75.0 610.0 1998
4 朝阳 望京西园一区 3室2厅 南北 6 精装 无电梯 115.0 710.0 1997
复制代码
    df.info()
    
    
      
    
复制代码
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 23677 entries, 0 to 23676
    Data columns (total 10 columns):
     #   Column  Non-Null Count  Dtype  
    ---  ------  --------------  -----  
     0   市区      23677 non-null  object 
     1   小区      23677 non-null  object 
     2   户型      23677 non-null  object 
     3   朝向      23677 non-null  object 
     4   楼层      23677 non-null  int64  
     5   装修情况    23677 non-null  object 
     6   电梯      15420 non-null  object 
     7   面积(㎡)   23677 non-null  float64
     8   价格(万元)  23677 non-null  float64
     9   年份      23677 non-null  int64  
    dtypes: float64(2), int64(2), object(6)
    memory usage: 1.8+ MB
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    df.describe()
    
    
      
    
楼层 面积(㎡) 价格(万元) 年份
count 23677.000000 23677.000000 23677.000000 23677.000000
mean 12.764877 99.388616 610.668319 2001.326519
std 7.644138 51.270606 411.452107 9.001996
min 1.000000 15.000000 60.000000 1950.000000
25% 6.000000 66.000000 365.000000 1997.000000
50% 11.000000 88.000000 499.000000 2003.000000
75% 18.000000 118.000000 717.000000 2007.000000
max 57.000000 1019.000000 6000.000000 2017.000000
缺失值处理
复制代码
    df.isnull().any()
    
    
      
    
复制代码
    市区        False
    小区        False
    户型        False
    朝向        False
    楼层        False
    装修情况      False
    电梯         True
    面积(㎡)     False
    价格(万元)    False
    年份        False
    dtype: bool
    
    
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    df['电梯'].isnull().sum()
    
    
      
    
复制代码
    8257
    
    
      
    
复制代码
    df['电梯'].unique()
    
    
      
    
复制代码
    array(['有电梯', '无电梯', nan], dtype=object)
    
    
      
    
复制代码
    # 替换nan值
    df['电梯'].fillna('不清楚',inplace=True)
    
    
      
      
    
复制代码
    df['电梯'].unique()
    
    
      
    
复制代码
    array(['有电梯', '无电梯', '不清楚'], dtype=object)
    
    
      
    
查看朝房屋朝向数据
复制代码
    df['朝向'].unique()
    
    
      
    
复制代码
    array(['西', '南北', '东西', '南西', '西南', '东南', '南', '东北', '东', '西北', '北'],
      dtype=object)
    
    
      
      
    
复制代码
    df['朝向'] = df['朝向'].replace('南西','西南')
    df['朝向'].unique()
    
    
      
      
    
复制代码
    array(['西', '南北', '东西', '西南', '东南', '南', '东北', '东', '西北', '北'],
      dtype=object)
    
    
      
      
    

统计各城区二手房数量

复制代码
    df1 = df.groupby('市区')['小区'].count()
    
    
      
    
复制代码
    df1
    
    
      
    
复制代码
    市区
    东城     1533
    丰台     2952
    大兴     2115
    密云       12
    平谷       41
    延庆      469
    怀柔       15
    房山     1442
    昌平     2811
    朝阳     2973
    海淀     2983
    石景山     882
    西城     2130
    通州     1602
    门头沟     496
    顺义     1221
    Name: 小区, dtype: int64
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    plt.style.use('seaborn')
    # 解决中⽂显示问题
    plt.rcParams['font.sans-serif'] = [u'SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(figsize=(16,4))
    plt.plot(df1)
    plt.show()
    
    
      
      
      
      
      
      
      
    
在这里插入图片描述
复制代码
    df.head()
    
    
      
    
市区 小区 户型 朝向 楼层 装修情况 电梯 面积(㎡) 价格(万元) 年份
0 朝阳 育慧里一区 1室0厅 西 7 精装 有电梯 52.0 343.0 2001
1 朝阳 大西洋新城A区 2室2厅 南北 10 精装 有电梯 86.0 835.0 1999
2 朝阳 团结湖路 2室1厅 东西 6 精装 无电梯 65.0 430.0 1980
3 朝阳 尚家楼48号院 2室1厅 南北 12 精装 有电梯 75.0 610.0 1998
4 朝阳 望京西园一区 3室2厅 南北 6 精装 无电梯 115.0 710.0 1997

各城区二手房平均价格

复制代码
    df2 = df.groupby('市区').mean()['价格(万元)']
    
    
      
    
复制代码
    df2.head()
    
    
      
    
复制代码
    市区
    东城    851.425245
    丰台    525.103591
    大兴    460.469693
    密云    425.333333
    平谷    308.658537
    Name: 价格(万元), dtype: float64
    
    
      
      
      
      
      
      
      
    
复制代码
    df2.values
    
    
      
    
复制代码
    array([851.42524462, 525.10359079, 460.46969267, 425.33333333,
       308.65853659, 549.87633262, 785.2       , 360.61185853,
       469.23034507, 757.320148  , 827.74019444, 468.92675737,
       828.90920188, 455.10755306, 388.05403226, 558.33988534])
    
    
      
      
      
      
    
复制代码
    plt.figure(figsize=(16,4))
    plt.bar(df2.index,df2.values)
    # 给条形图添加数据标注
    for x,y in enumerate(df2):
    plt.text(x-0.2,y,round(y,2))
    plt.show()
    
    
      
      
      
      
      
      
    
在这里插入图片描述

二手房价格最高Top10

复制代码
    TOP10_price = df.sort_values(by='价格(万元)',ascending=False)[:10]
    TOP10_price
    
    
      
      
    
市区 小区 户型 朝向 楼层 装修情况 电梯 面积(㎡) 价格(万元) 年份
20390 西城 朱雀门 4室2厅 东南 5 其他 有电梯 376.0 6000.0 2008
22228 东城 贡院六号 5室2厅 南北 23 精装 有电梯 459.0 5500.0 2002
22907 东城 NAGA上院 6室2厅 东南 12 精装 有电梯 608.0 5000.0 2008
3219 顺义 丽宫 5室2厅 南北 3 精装 不清楚 685.0 5000.0 2007
22982 东城 当代MOMA 5室2厅 东南 7 精装 不清楚 384.0 4988.0 2006
20202 西城 耕天下 5室3厅 南北 7 其他 有电梯 330.0 4650.0 2003
6191 昌平 碧水庄园 5室3厅 南北 2 精装 不清楚 571.0 4600.0 2005
2391 顺义 丽嘉花园 4室2厅 东南 2 其他 不清楚 548.0 4500.0 2007
17285 朝阳 首府官邸 叠拼别墅 南北 5 精装 不清楚 523.4 4500.0 2007
15327 海淀 紫御府 4室2厅 南北 12 精装 有电梯 374.0 4368.0 2008

二手房总价与面积散点图

复制代码
    df.head()
    
    
      
    
市区 小区 户型 朝向 楼层 装修情况 电梯 面积(㎡) 价格(万元) 年份
0 朝阳 育慧里一区 1室0厅 西 7 精装 有电梯 52.0 343.0 2001
1 朝阳 大西洋新城A区 2室2厅 南北 10 精装 有电梯 86.0 835.0 1999
2 朝阳 团结湖路 2室1厅 东西 6 精装 无电梯 65.0 430.0 1980
3 朝阳 尚家楼48号院 2室1厅 南北 12 精装 有电梯 75.0 610.0 1998
4 朝阳 望京西园一区 3室2厅 南北 6 精装 无电梯 115.0 710.0 1997
复制代码
    df_scatter = df[['面积(㎡)','价格(万元)']]
    
    
      
    
复制代码
    plt.figure(figsize=(16,8))
    sns.scatterplot(x='面积(㎡)',y='价格(万元)',data=df_scatter,palette='husl',s=50,markers='O')
    plt.show()
    
    
      
      
      
    
在这里插入图片描述

房屋朝向饼图

复制代码
    df.head()
    
    
      
    
市区 小区 户型 朝向 楼层 装修情况 电梯 面积(㎡) 价格(万元) 年份
0 朝阳 育慧里一区 1室0厅 西 7 精装 有电梯 52.0 343.0 2001
1 朝阳 大西洋新城A区 2室2厅 南北 10 精装 有电梯 86.0 835.0 1999
2 朝阳 团结湖路 2室1厅 东西 6 精装 无电梯 65.0 430.0 1980
3 朝阳 尚家楼48号院 2室1厅 南北 12 精装 有电梯 75.0 610.0 1998
4 朝阳 望京西园一区 3室2厅 南北 6 精装 无电梯 115.0 710.0 1997
复制代码
    df_pie = df.groupby('朝向').count()['小区']
    df_pie
    
    
      
      
    
复制代码
    朝向
    东       934
    东北      681
    东南     2096
    东西     1559
    北       612
    南      2847
    南北    11433
    西       889
    西北      781
    西南     1845
    Name: 小区, dtype: int64
    
    
      
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    plt.figure(figsize=(16,8))
    plt.pie(df_pie.values,
        labels = df_pie.index,
        autopct = '%.2f%%', # 设置百分比格式
        pctdistance = 0.8,# 设置百分比到圆心的距离
        #shadow = False,# 添加饼图阴影效果
        startangle = 240,# 设置饼图的初始摆放角度
        radius = 1.2, # 设置饼图半径大小
        #wedgeprops = {'linewidth':'1.5','edgecolor':'gray'},# 设置饼图内外边界属性值
        textprops ={'fontsize':12,'color':'black'}, # 设置饼图中文本属性
        counterclock = False # 是否逆时针呈现
       )
    plt.show()
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    
在这里插入图片描述

装修情况/有无电梯组合图

复制代码
    df3 = df.groupby('装修情况').count()['小区']
    df3
    
    
      
      
    
复制代码
    装修情况
    其他     3239
    毛坯      583
    简装     8499
    精装    11356
    Name: 小区, dtype: int64
    
    
      
      
      
      
      
      
    
复制代码
    df4 = df.groupby('电梯').count()['小区']
    df4
    
    
      
      
    
复制代码
    电梯
    不清楚    8257
    无电梯    6078
    有电梯    9342
    Name: 小区, dtype: int64
    
    
      
      
      
      
      
    
复制代码
    plt.figure(figsize=(16,8))
    plt.subplot(121)
    plt.bar(df3.index,df3.values)
    for x,y in enumerate(df3):
    plt.text(x-0.1,y+100,y)
    plt.subplot(122)
    plt.pie(df4.values,labels=df4.index, autopct = '%.2f%%')
    plt.show()
    
    
      
      
      
      
      
      
      
      
    
在这里插入图片描述

二手房楼层分布柱状图

复制代码
    df5 = df.groupby('楼层').count()['小区']
    df5.head()
    
    
      
      
    
复制代码
    楼层
    1       6
    2      94
    3     201
    4     465
    5    1070
    Name: 小区, dtype: int64
    
    
      
      
      
      
      
      
      
    
复制代码
    plt.figure(figsize=(16,8))
    plt.bar(df5.index,df5.values)
    plt.show()
    
    
      
      
      
    
在这里插入图片描述

房屋面积分布柱状图

复制代码
    area_l = [0, 50, 80, 100, 120, 150, 200, 250, 300, 350, 400, 1500]    
    label_l = ['小于50', '50-80', '80-100', '100-120', '120-150', '150-200', '200-250', '250-300', '300-350', '350-400', '大于400']    
    mj_cut = pd.cut(df['面积(㎡)'], area_l, labels=label_l)        
    df_area = mj_cut.value_counts()
    df_area
    
    
      
      
      
      
      
    
复制代码
    50-80      7962
    80-100     5691
    120-150    2928
    100-120    2881
    150-200    1677
    小于50       1562
    200-250     545
    250-300     226
    300-350      94
    大于400        56
    350-400      55
    Name: 面积(㎡), dtype: int64
    
    
      
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    plt.figure(figsize=(16,8))
    plt.bar(df_area.index,df_area.values)
    for x,y in enumerate(df_area):
    plt.text(x-0.1,y+100,y)
    plt.show()
    
    
      
      
      
      
      
    
在这里插入图片描述

总结

  • 丰台区、房山区、昌平区、朝阳区、海淀区的二手房居多,高达12000多套,约占总量的1/2。
  • 东城区、西城区和海淀区二手房平均售价最高,均在800万元以上。
  • 二手房面积多集中于0-400平米,价格在0-3000万元居多。
  • 房屋朝向约50%是坐北朝南的

资源下载: 源数据下载

全部评论 (0)

还没有任何评论哟~