对爬取的某平台二手房数据进行数据分析以及特征工程处理
Crawl:利用bs4和requests爬取了国内*某房源平台(2020年7月2日上海二手房)将近30*100多条数据并进行房价分析以及预测
ML之FE:对爬取的某平台二手房数据进行数据分析以及特征工程处理实现代码https://yunyaniu.blog.csdn.net/article/details/107318135
1、定义数据集
<class 'pandas.core.frame.DataFrame'>
total_price unit_price roomtype height direction decorate area \
0 290万 46186元/平米 2室1厅 高楼层/共6层 南 平层/简装 62.79平米
1 599万 76924元/平米 2室1厅 低楼层/共6层 南 平层/精装 77.87平米
2 420万 51458元/平米 2室1厅 低楼层/共6层 南 北 平层/精装 81.62平米
3 269.9万 34831元/平米 2室2厅 低楼层/共6层 南 平层/精装 77.49平米
4 383万 79051元/平米 1室1厅 中楼层/共6层 南 平层/精装 48.45平米
age garden district id Unnamed: 11 total_price_Num \
0 1993.0 国和一村 杨浦 107102693322 NaN 290.0
1 2005.0 虹康花苑(三期) 长宁 107102590033 NaN 599.0
2 1995.0 纪念小区 虹口 107102469522 NaN 420.0
3 2009.0 新凯二期 松江 107102187832 NaN 269.9
4 1996.0 白浪新村 闵行 107102568627 NaN 383.0
unit_price_Num area_Num
0 46186 62.79
1 76924 77.87
2 51458 81.62
3 34831 77.49
4 79051 48.45
total_price unit_price roomtype height direction decorate area \
2995 230万 43144元/平米 1室1厅 低楼层/共11层 南 平层/简装 53.31平米
2996 372万 75016元/平米 1室1厅 低楼层/共11层 南 平层/精装 49.59平米
2997 366万 49973元/平米 2室1厅 中楼层/共6层 南 平层/简装 73.24平米
2998 365万 69103元/平米 2室1厅 低楼层/共17层 北 平层/精装 52.82平米
2999 420万 49412元/平米 2室2厅 低楼层/共14层 南 北 平层/精装 85平米
age garden district id Unnamed: 11 total_price_Num \
2995 2010.0 南新东园 浦东 107102716551 NaN 230.0
2996 2006.0 九歌上郡 闵行 107102716557 NaN 372.0
2997 1995.0 高境一村 宝山 107102716802 NaN 366.0
2998 1990.0 遵义西大楼 长宁 107102716833 NaN 365.0
2999 2011.0 象屿名城 松江 107102717793 NaN 420.0
unit_price_Num area_Num
2995 43144 53.31
2996 75016 49.59
2997 49973 73.24
2998 69103 52.82
2999 49412 85.00
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3000 entries, 0 to 2999
Data columns (total 15 columns):
total_price 3000 non-null object
unit_price 3000 non-null object
roomtype 3000 non-null object
height 3000 non-null object
direction 3000 non-null object
decorate 3000 non-null object
area 3000 non-null object
age 2888 non-null float64
garden 3000 non-null object
district 3000 non-null object
id 3000 non-null int64
Unnamed: 11 0 non-null float64
total_price_Num 3000 non-null float64
unit_price_Num 3000 non-null int64
area_Num 3000 non-null float64
dtypes: float64(4), int64(2), object(9)
memory usage: 375.0+ KB
None
age id Unnamed: 11 total_price_Num \
count 2888.000000 3.000000e+03 0.0 3000.000000
mean 2001.453601 1.070999e+11 NaN 631.953450
std 9.112425 1.535036e+07 NaN 631.308855
min 1911.000000 1.070000e+11 NaN 90.000000
25% 1996.000000 1.071020e+11 NaN 300.000000
50% 2003.000000 1.071026e+11 NaN 437.000000
75% 2008.000000 1.071027e+11 NaN 738.000000
max 2018.000000 1.071027e+11 NaN 9800.000000
unit_price_Num area_Num
count 3000.000000 3000.000000
mean 58939.028333 102.180667
std 25867.208297 62.211662
min 11443.000000 17.050000
25% 40267.500000 67.285000
50% 54946.000000 89.230000
75% 73681.250000 119.035000
max 250813.000000 801.140000
数据集维度: (3000, 15)
数据集所有字段: Index(['total_price', 'unit_price', 'roomtype', 'height', 'direction',
'decorate', 'area', 'age', 'garden', 'district', 'id', 'Unnamed: 11',
'total_price_Num', 'unit_price_Num', 'area_Num'],
dtype='object')
统计字段名及其对应长度: roomtype 22
['2室1厅' '2室2厅' '1室1厅' '3室2厅' '1室0厅' '3室1厅' '2室0厅' '1室2厅' '4室3厅' '5室2厅'
'4室2厅' '5室3厅' '3室0厅' '5室1厅' '5室4厅' '6室4厅' '6室2厅' '6室3厅' '7室2厅' '9室6厅'
'3室3厅' '4室1厅']
roomtype字段下所有类别 对应数量
2室2厅 751
3室2厅 706
2室1厅 622
1室1厅 323
4室2厅 192
3室1厅 174
1室0厅 47
1室2厅 37
2室0厅 37
5室2厅 35
4室3厅 25
5室3厅 17
6室2厅 9
6室3厅 5
5室1厅 5
3室3厅 4
3室0厅 3
5室4厅 3
4室1厅 2
6室4厅 1
7室2厅 1
9室6厅 1
Name: roomtype, dtype: int64
统计字段名及其对应长度: height 138
['高楼层/共6层' '低楼层/共6层' '中楼层/共6层' '高楼层/共18层' '低楼层/共9层' '中楼层/共5层' '高楼层/共11层'
'高楼层/共4层' '高楼层/共32层' '中楼层/共7层' '高楼层/共30层' '中楼层/共12层' '中楼层/共24层' '低楼层/共4层'
'低楼层/共5层' '中楼层/共13层' '中楼层/共11层' '低楼层/共7层' '高楼层/共8层' '中楼层/共18层' '中楼层/共14层'
'低楼层/共17层' '中楼层/共30层' '低楼层/共18层' '高楼层/共13层' '中楼层/共31层' '中楼层/共29层'
'独栋/共2层' '高楼层/共29层' '低楼层/共30层' '低楼层/共15层' '高楼层/共28层' '联排/共3层' '中楼层/共8层'
'中楼层/共56层' '低楼层/共16层' '低楼层/共56层' '低楼层/共32层' '高楼层/共7层' '高楼层/共5层' '中楼层/共9层'
'高楼层/共33层' '高楼层/共22层' '低楼层/共26层' '中楼层/共35层' '低楼层/共23层' '低楼层/共35层'
'中楼层/共19层' '中楼层/共17层' '高楼层/共31层' '低楼层/共38层' '低楼层/共28层' '低楼层/共22层'
'低楼层/共24层' '中楼层/共16层' '高楼层/共25层' '低楼层/共14层' '双拼/共2层' '中楼层/共4层' '高楼层/共17层'
'低楼层/共34层' '中楼层/共28层' '高楼层/共24层' '中楼层/共20层' '低楼层/共12层' '高楼层/共16层'
'中楼层/共25层' '联排/共1层' '中楼层/共15层' '高楼层/共34层' '低楼层/共49层' '中楼层/共10层'
'低楼层/共11层' '高楼层/共14层' '中楼层/共21层' '中楼层/共32层' '共3层' '中楼层/共38层' '共1层'
'低楼层/共19层' '中楼层/共22层' '中楼层/共33层' '低楼层/共13层' '低楼层/共20层' '高楼层/共12层'
'中楼层/共37层' '高楼层/共15层' '低楼层/共25层' '低楼层/共31层' '高楼层/共26层' '高楼层/共9层' '双拼/共3层'
'低楼层/共33层' '高楼层/共20层' '高楼层/共40层' '低楼层/共21层' '低楼层/共10层' '上叠别墅/共4层'
'低楼层/共2层' '低楼层/共8层' '低楼层/共61层' '中楼层/共59层' '高楼层/共36层' '中楼层/共27层'
'下叠别墅/共6层' '高楼层/共10层' '高楼层/共27层' '高楼层/共21层' '低楼层/共3层' '高楼层/共37层'
'高楼层/共49层' '低楼层/共27层' '高楼层/共19层' '中楼层/共34层' '低楼层/共1层' '高楼层/共35层'
'低楼层/共43层' '低楼层/共51层' '中楼层/共39层' '低楼层/共29层' '中楼层/共36层' '高楼层/共43层'
'联排/共2层' '中楼层/共23层' '独栋/共3层' '高楼层/共23层' '高楼层/共39层' '共2层' '高楼层/共38层'
'高楼层/共45层' '中楼层/共63层' '中楼层/共26层' '下叠别墅/共5层' '下叠别墅/共3层' '下叠别墅/共4层'
'低楼层/共37层' '低楼层/共41层' '高楼层/共58层']
height字段下所有类别 对应数量
高楼层/共6层 557
中楼层/共6层 335
低楼层/共6层 260
中楼层/共5层 90
低楼层/共18层 84
高楼层/共18层 75
中楼层/共11层 65
中楼层/共18层 65
中楼层/共14层 57
低楼层/共14层 56
低楼层/共11层 51
高楼层/共5层 50
高楼层/共11层 47
高楼层/共7层 43
中楼层/共7层 43
中楼层/共17层 36
中楼层/共8层 35
低楼层/共24层 33
中楼层/共24层 32
低楼层/共7层 31
低楼层/共12层 30
高楼层/共14层 27
低楼层/共16层 26
高楼层/共16层 25
低楼层/共15层 24
中楼层/共12层 24
低楼层/共17层 24
高楼层/共12层 24
低楼层/共5层 21
低楼层/共13层 19
...
低楼层/共38层 3
高楼层/共23层 3
共1层 2
高楼层/共40层 2
高楼层/共36层 2
高楼层/共49层 2
独栋/共3层 2
低楼层/共49层 2
上叠别墅/共4层 2
共2层 2
高楼层/共10层 2
中楼层/共56层 2
低楼层/共37层 2
低楼层/共2层 1
高楼层/共45层 1
下叠别墅/共6层 1
下叠别墅/共3层 1
双拼/共2层 1
低楼层/共41层 1
低楼层/共51层 1
下叠别墅/共5层 1
高楼层/共39层 1
联排/共2层 1
高楼层/共43层 1
中楼层/共63层 1
高楼层/共58层 1
中楼层/共59层 1
中楼层/共36层 1
低楼层/共61层 1
低楼层/共56层 1
Name: height, Length: 138, dtype: int64
统计字段名及其对应长度: direction 34
['南' '南 北' '东南' '东 南' '北 西北' '东北' '西' '西南' '东南 南' '南 西南' '东' '南 西 北' '西 东'
'东 东南' '北' '南 西' '东 西' '北 南' '西南 西北' '暂无数据' '东 北' '东南 西北' '西北' '东南 西'
'东北 南 北' '东 南 北' '西 东北' '南 东南' '南 北 东 东南' '南 东' '南 北 西' '西 北 南' '西 北'
'东南 南 西北 北']
direction字段下所有类别 对应数量
南 2131
南 北 653
东南 50
西南 46
西 19
东 13
北 12
南 西 8
东南 南 7
北 南 7
南 西南 6
东北 5
东 南 5
暂无数据 5
南 西 北 4
西 东 3
东 东南 3
西北 3
东 西 3
东 北 2
北 西北 2
西 北 南 1
南 北 西 1
东南 南 西北 北 1
南 东南 1
西 东北 1
南 东 1
东南 西北 1
东南 西 1
西南 西北 1
西 北 1
南 北 东 东南 1
东北 南 北 1
东 南 北 1
Name: direction, dtype: int64
统计字段名及其对应长度: decorate 18
['平层/简装' '平层/精装' '简装' '平层/毛坯' '精装' '复式/精装' '平层/其他' '跃层/精装' '错层/精装' '复式/简装'
'复式/其他' '错层/其他' '错层/简装' '复式/毛坯' '跃层/简装' '毛坯' '错层/毛坯' '跃层/毛坯']
decorate字段下所有类别 对应数量
平层/精装 1428
平层/简装 997
平层/毛坯 247
复式/精装 166
平层/其他 57
复式/简装 39
复式/毛坯 17
错层/精装 16
精装 9
复式/其他 5
跃层/精装 5
简装 5
跃层/简装 2
错层/简装 2
跃层/毛坯 2
错层/其他 1
错层/毛坯 1
毛坯 1
Name: decorate, dtype: int64
统计字段名及其对应长度: garden 1859
['国和一村' '虹康花苑(三期)' '纪念小区' ... '南新东园' '遵义西大楼' '象屿名城']
garden字段下所有类别 对应数量
新南家园 15
世茂滨江花园 13
田林十二村 10
文怡花园 9
万馨佳园 9
绿地金卫新家园(西区) 9
金地湾流域(二期569弄) 8
中房公寓 8
鸿宝一村(南区) 8
新凯二期 8
中远两湾城 7
印象春城 7
新德佳苑 7
长丰坊 7
中环一号(一期) 6
惠康苑西苑 6
明园森林都市 6
明珠小区(川沙) 6
惠益新苑 6
富友嘉园 6
美兰湖中华园 6
中凯城市之光(静安) 6
金都雅苑(公寓) 6
达安锦园 6
徐汇苑 6
上海康城 6
丰庄十二街坊 6
中环一号(三期) 6
慧芝湖花园 6
御景龙庭 5
..
紫堤苑 1
金昌大厦 1
梓树园 1
西南名苑 1
佳宝一村 1
芳雅苑 1
德邑小城(公寓) 1
富丽苑 1
中友嘉园 1
证大家园(一期) 1
潍坊七村 1
钦州路111弄 1
东南华庭 1
铁岭路50弄 1
惠祥公寓 1
科苑新村 1
上海阳城 1
同济融创玫瑰公馆 1
湖畔佳苑(公寓) 1
寿祥坊 1
平阳三村 1
石泉小区 1
新福康里(公寓) 1
公馆77 1
合生城邦三街坊 1
双晖小区 1
明日星城(一期) 1
浅水湾恺悦名城 1
隽苑 1
紫竹小区 1
Name: garden, Length: 1859, dtype: int64
统计字段名及其对应长度: district 15
['杨浦' '长宁' '虹口' '松江' '闵行' '宝山' '静安' '徐汇' '浦东' '黄浦' '普陀' '嘉定' '奉贤' '金山'
'青浦']
district字段下所有类别 对应数量
浦东 794
闵行 400
徐汇 268
静安 228
宝山 208
普陀 169
嘉定 155
松江 146
杨浦 141
长宁 135
奉贤 95
黄浦 89
青浦 63
金山 55
虹口 54
Name: district, dtype: int64
dataset.corr():
age id Unnamed: 11 total_price_Num \
age 1.000000 0.000330 NaN 0.199691
id 0.000330 1.000000 NaN -0.143520
Unnamed: 11 NaN NaN NaN NaN
total_price_Num 0.199691 -0.143520 NaN 1.000000
unit_price_Num -0.143897 -0.071997 NaN 0.638882
area_Num 0.345437 -0.171639 NaN 0.787404
unit_price_Num area_Num
age -0.143897 0.345437
id -0.071997 -0.171639
Unnamed: 11 NaN NaN
total_price_Num 0.638882 0.787404
unit_price_Num 1.000000 0.184717
area_Num 0.184717 1.000000
散点图可视化:可寻找异常点
检查目标变量满足整体分布
mu = 631.95 and sigma = 631.20
绘制Q-Q分位数图:看是否与理论的一致
Skew in numerical features:
skewness.head():
Skew
area_Num 3.448604
unit_price_Num 1.121800
总共有 2 数值型的特征做变换
采用LabelEncoder,对部分类别的特征进行编号,转为数值型
temp1:
roomtype object
height object
direction object
decorate object
garden object
district object
total_price_Num float64
area_Num float64
dtype: object
temp2:
Index(['roomtype', 'height', 'direction', 'decorate', 'garden', 'district'], dtype='object')
[5, 10, 8, 6, 11, 2, 13, 3, 7, 14, 4, 0, 1, 9, 12]
roomtype height direction decorate garden district total_price_Num \
0 4 134 16 6 507 5 290.0
1 4 83 16 7 1501 10 599.0
2 4 83 19 7 1333 8 420.0
3 5 83 16 7 829 6 269.9
4 1 40 16 7 1268 11 383.0
5 8 105 16 6 1505 10 1250.0
6 8 86 19 7 21 11 737.0
7 0 38 16 9 1230 8 162.0
8 5 98 19 7 1589 2 328.0
9 0 40 16 6 708 13 163.0
area_Num
0 62.79
1 77.87
2 81.62
3 77.49
4 48.45
5 135.03
6 112.00
7 35.76
8 77.63
9 30.25
roomtype height direction decorate garden district \
2995 1 45 16 6 388 7
2996 1 45 16 7 236 11
2997 4 40 16 6 1819 2
2998 4 51 13 7 1586 10
2999 5 48 19 7 1547 6
total_price_Num area_Num
2995 230.0 53.31
2996 372.0 49.59
2997 366.0 73.24
2998 365.0 52.82
2999 420.0 85.00