目录
对爬取的某平台二手房数据进行数据分析以及特征工程处理
Crawl:利用bs4和requests爬取了国内顶级某房源平台(2020年7月2日上海二手房)将近30*100多条数据并进行房价分析以及预测
ML之FE:对爬取的某平台二手房数据进行数据分析以及特征工程处理实现代码
1、定义数据集
1. <class 'pandas.core.frame.DataFrame'> 2. total_price unit_price roomtype height direction decorate area \ 3. 0 290万 46186元/平米 2室1厅 高楼层/共6层 南 平层/简装 62.79平米 4. 1 599万 76924元/平米 2室1厅 低楼层/共6层 南 平层/精装 77.87平米 5. 2 420万 51458元/平米 2室1厅 低楼层/共6层 南 北 平层/精装 81.62平米 6. 3 269.9万 34831元/平米 2室2厅 低楼层/共6层 南 平层/精装 77.49平米 7. 4 383万 79051元/平米 1室1厅 中楼层/共6层 南 平层/精装 48.45平米 8. 9. age garden district id Unnamed: 11 total_price_Num \ 10. 0 1993.0 国和一村 杨浦 107102693322 NaN 290.0 11. 1 2005.0 虹康花苑(三期) 长宁 107102590033 NaN 599.0 12. 2 1995.0 纪念小区 虹口 107102469522 NaN 420.0 13. 3 2009.0 新凯二期 松江 107102187832 NaN 269.9 14. 4 1996.0 白浪新村 闵行 107102568627 NaN 383.0 15. 16. unit_price_Num area_Num 17. 0 46186 62.79 18. 1 76924 77.87 19. 2 51458 81.62 20. 3 34831 77.49 21. 4 79051 48.45 22. total_price unit_price roomtype height direction decorate area \ 23. 2995 230万 43144元/平米 1室1厅 低楼层/共11层 南 平层/简装 53.31平米 24. 2996 372万 75016元/平米 1室1厅 低楼层/共11层 南 平层/精装 49.59平米 25. 2997 366万 49973元/平米 2室1厅 中楼层/共6层 南 平层/简装 73.24平米 26. 2998 365万 69103元/平米 2室1厅 低楼层/共17层 北 平层/精装 52.82平米 27. 2999 420万 49412元/平米 2室2厅 低楼层/共14层 南 北 平层/精装 85平米 28. 29. age garden district id Unnamed: 11 total_price_Num \ 30. 2995 2010.0 南新东园 浦东 107102716551 NaN 230.0 31. 2996 2006.0 九歌上郡 闵行 107102716557 NaN 372.0 32. 2997 1995.0 高境一村 宝山 107102716802 NaN 366.0 33. 2998 1990.0 遵义西大楼 长宁 107102716833 NaN 365.0 34. 2999 2011.0 象屿名城 松江 107102717793 NaN 420.0 35. 36. unit_price_Num area_Num 37. 2995 43144 53.31 38. 2996 75016 49.59 39. 2997 49973 73.24 40. 2998 69103 52.82 41. 2999 49412 85.00 42. <class 'pandas.core.frame.DataFrame'> 43. Int64Index: 3000 entries, 0 to 2999 44. Data columns (total 15 columns): 45. total_price 3000 non-null object 46. unit_price 3000 non-null object 47. roomtype 3000 non-null object 48. height 3000 non-null object 49. direction 3000 non-null object 50. decorate 3000 non-null object 51. area 3000 non-null object 52. age 2888 non-null float64 53. garden 3000 non-null object 54. district 3000 non-null object 55. id 3000 non-null int64 56. Unnamed: 11 0 non-null float64 57. total_price_Num 3000 non-null float64 58. unit_price_Num 3000 non-null int64 59. area_Num 3000 non-null float64 60. dtypes: float64(4), int64(2), object(9) 61. memory usage: 375.0+ KB 62. None 63. age id Unnamed: 11 total_price_Num \ 64. count 2888.000000 3.000000e+03 0.0 3000.000000 65. mean 2001.453601 1.070999e+11 NaN 631.953450 66. std 9.112425 1.535036e+07 NaN 631.308855 67. min 1911.000000 1.070000e+11 NaN 90.000000 68. 25% 1996.000000 1.071020e+11 NaN 300.000000 69. 50% 2003.000000 1.071026e+11 NaN 437.000000 70. 75% 2008.000000 1.071027e+11 NaN 738.000000 71. max 2018.000000 1.071027e+11 NaN 9800.000000 72. 73. unit_price_Num area_Num 74. count 3000.000000 3000.000000 75. mean 58939.028333 102.180667 76. std 25867.208297 62.211662 77. min 11443.000000 17.050000 78. 25% 40267.500000 67.285000 79. 50% 54946.000000 89.230000 80. 75% 73681.250000 119.035000 81. max 250813.000000 801.140000 82. 数据集维度: (3000, 15) 83. 数据集所有字段: Index(['total_price', 'unit_price', 'roomtype', 'height', 'direction', 84. 'decorate', 'area', 'age', 'garden', 'district', 'id', 'Unnamed: 11', 85. 'total_price_Num', 'unit_price_Num', 'area_Num'], 86. dtype='object') 87. 统计字段名及其对应长度: roomtype 22 88. ['2室1厅' '2室2厅' '1室1厅' '3室2厅' '1室0厅' '3室1厅' '2室0厅' '1室2厅' '4室3厅' '5室2厅' 89. '4室2厅' '5室3厅' '3室0厅' '5室1厅' '5室4厅' '6室4厅' '6室2厅' '6室3厅' '7室2厅' '9室6厅' 90. '3室3厅' '4室1厅'] 91. roomtype字段下所有类别 对应数量 92. 2室2厅 751 93. 3室2厅 706 94. 2室1厅 622 95. 1室1厅 323 96. 4室2厅 192 97. 3室1厅 174 98. 1室0厅 47 99. 1室2厅 37 100. 2室0厅 37 101. 5室2厅 35 102. 4室3厅 25 103. 5室3厅 17 104. 6室2厅 9 105. 6室3厅 5 106. 5室1厅 5 107. 3室3厅 4 108. 3室0厅 3 109. 5室4厅 3 110. 4室1厅 2 111. 6室4厅 1 112. 7室2厅 1 113. 9室6厅 1 114. Name: roomtype, dtype: int64 115. 统计字段名及其对应长度: height 138 116. ['高楼层/共6层' '低楼层/共6层' '中楼层/共6层' '高楼层/共18层' '低楼层/共9层' '中楼层/共5层' '高楼层/共11层' 117. '高楼层/共4层' '高楼层/共32层' '中楼层/共7层' '高楼层/共30层' '中楼层/共12层' '中楼层/共24层' '低楼层/共4层' 118. '低楼层/共5层' '中楼层/共13层' '中楼层/共11层' '低楼层/共7层' '高楼层/共8层' '中楼层/共18层' '中楼层/共14层' 119. '低楼层/共17层' '中楼层/共30层' '低楼层/共18层' '高楼层/共13层' '中楼层/共31层' '中楼层/共29层' 120. '独栋/共2层' '高楼层/共29层' '低楼层/共30层' '低楼层/共15层' '高楼层/共28层' '联排/共3层' '中楼层/共8层' 121. '中楼层/共56层' '低楼层/共16层' '低楼层/共56层' '低楼层/共32层' '高楼层/共7层' '高楼层/共5层' '中楼层/共9层' 122. '高楼层/共33层' '高楼层/共22层' '低楼层/共26层' '中楼层/共35层' '低楼层/共23层' '低楼层/共35层' 123. '中楼层/共19层' '中楼层/共17层' '高楼层/共31层' '低楼层/共38层' '低楼层/共28层' '低楼层/共22层' 124. '低楼层/共24层' '中楼层/共16层' '高楼层/共25层' '低楼层/共14层' '双拼/共2层' '中楼层/共4层' '高楼层/共17层' 125. '低楼层/共34层' '中楼层/共28层' '高楼层/共24层' '中楼层/共20层' '低楼层/共12层' '高楼层/共16层' 126. '中楼层/共25层' '联排/共1层' '中楼层/共15层' '高楼层/共34层' '低楼层/共49层' '中楼层/共10层' 127. '低楼层/共11层' '高楼层/共14层' '中楼层/共21层' '中楼层/共32层' '共3层' '中楼层/共38层' '共1层' 128. '低楼层/共19层' '中楼层/共22层' '中楼层/共33层' '低楼层/共13层' '低楼层/共20层' '高楼层/共12层' 129. '中楼层/共37层' '高楼层/共15层' '低楼层/共25层' '低楼层/共31层' '高楼层/共26层' '高楼层/共9层' '双拼/共3层' 130. '低楼层/共33层' '高楼层/共20层' '高楼层/共40层' '低楼层/共21层' '低楼层/共10层' '上叠别墅/共4层' 131. '低楼层/共2层' '低楼层/共8层' '低楼层/共61层' '中楼层/共59层' '高楼层/共36层' '中楼层/共27层' 132. '下叠别墅/共6层' '高楼层/共10层' '高楼层/共27层' '高楼层/共21层' '低楼层/共3层' '高楼层/共37层' 133. '高楼层/共49层' '低楼层/共27层' '高楼层/共19层' '中楼层/共34层' '低楼层/共1层' '高楼层/共35层' 134. '低楼层/共43层' '低楼层/共51层' '中楼层/共39层' '低楼层/共29层' '中楼层/共36层' '高楼层/共43层' 135. '联排/共2层' '中楼层/共23层' '独栋/共3层' '高楼层/共23层' '高楼层/共39层' '共2层' '高楼层/共38层' 136. '高楼层/共45层' '中楼层/共63层' '中楼层/共26层' '下叠别墅/共5层' '下叠别墅/共3层' '下叠别墅/共4层' 137. '低楼层/共37层' '低楼层/共41层' '高楼层/共58层'] 138. height字段下所有类别 对应数量 139. 高楼层/共6层 557 140. 中楼层/共6层 335 141. 低楼层/共6层 260 142. 中楼层/共5层 90 143. 低楼层/共18层 84 144. 高楼层/共18层 75 145. 中楼层/共11层 65 146. 中楼层/共18层 65 147. 中楼层/共14层 57 148. 低楼层/共14层 56 149. 低楼层/共11层 51 150. 高楼层/共5层 50 151. 高楼层/共11层 47 152. 高楼层/共7层 43 153. 中楼层/共7层 43 154. 中楼层/共17层 36 155. 中楼层/共8层 35 156. 低楼层/共24层 33 157. 中楼层/共24层 32 158. 低楼层/共7层 31 159. 低楼层/共12层 30 160. 高楼层/共14层 27 161. 低楼层/共16层 26 162. 高楼层/共16层 25 163. 低楼层/共15层 24 164. 中楼层/共12层 24 165. 低楼层/共17层 24 166. 高楼层/共12层 24 167. 低楼层/共5层 21 168. 低楼层/共13层 19 169. ... 170. 低楼层/共38层 3 171. 高楼层/共23层 3 172. 共1层 2 173. 高楼层/共40层 2 174. 高楼层/共36层 2 175. 高楼层/共49层 2 176. 独栋/共3层 2 177. 低楼层/共49层 2 178. 上叠别墅/共4层 2 179. 共2层 2 180. 高楼层/共10层 2 181. 中楼层/共56层 2 182. 低楼层/共37层 2 183. 低楼层/共2层 1 184. 高楼层/共45层 1 185. 下叠别墅/共6层 1 186. 下叠别墅/共3层 1 187. 双拼/共2层 1 188. 低楼层/共41层 1 189. 低楼层/共51层 1 190. 下叠别墅/共5层 1 191. 高楼层/共39层 1 192. 联排/共2层 1 193. 高楼层/共43层 1 194. 中楼层/共63层 1 195. 高楼层/共58层 1 196. 中楼层/共59层 1 197. 中楼层/共36层 1 198. 低楼层/共61层 1 199. 低楼层/共56层 1 200. Name: height, Length: 138, dtype: int64 201. 统计字段名及其对应长度: direction 34 202. ['南' '南 北' '东南' '东 南' '北 西北' '东北' '西' '西南' '东南 南' '南 西南' '东' '南 西 北' '西 东' 203. '东 东南' '北' '南 西' '东 西' '北 南' '西南 西北' '暂无数据' '东 北' '东南 西北' '西北' '东南 西' 204. '东北 南 北' '东 南 北' '西 东北' '南 东南' '南 北 东 东南' '南 东' '南 北 西' '西 北 南' '西 北' 205. '东南 南 西北 北'] 206. direction字段下所有类别 对应数量 207. 南 2131 208. 南 北 653 209. 东南 50 210. 西南 46 211. 西 19 212. 东 13 213. 北 12 214. 南 西 8 215. 东南 南 7 216. 北 南 7 217. 南 西南 6 218. 东北 5 219. 东 南 5 220. 暂无数据 5 221. 南 西 北 4 222. 西 东 3 223. 东 东南 3 224. 西北 3 225. 东 西 3 226. 东 北 2 227. 北 西北 2 228. 西 北 南 1 229. 南 北 西 1 230. 东南 南 西北 北 1 231. 南 东南 1 232. 西 东北 1 233. 南 东 1 234. 东南 西北 1 235. 东南 西 1 236. 西南 西北 1 237. 西 北 1 238. 南 北 东 东南 1 239. 东北 南 北 1 240. 东 南 北 1 241. Name: direction, dtype: int64 242. 统计字段名及其对应长度: decorate 18 243. ['平层/简装' '平层/精装' '简装' '平层/毛坯' '精装' '复式/精装' '平层/其他' '跃层/精装' '错层/精装' '复式/简装' 244. '复式/其他' '错层/其他' '错层/简装' '复式/毛坯' '跃层/简装' '毛坯' '错层/毛坯' '跃层/毛坯'] 245. decorate字段下所有类别 对应数量 246. 平层/精装 1428 247. 平层/简装 997 248. 平层/毛坯 247 249. 复式/精装 166 250. 平层/其他 57 251. 复式/简装 39 252. 复式/毛坯 17 253. 错层/精装 16 254. 精装 9 255. 复式/其他 5 256. 跃层/精装 5 257. 简装 5 258. 跃层/简装 2 259. 错层/简装 2 260. 跃层/毛坯 2 261. 错层/其他 1 262. 错层/毛坯 1 263. 毛坯 1 264. Name: decorate, dtype: int64 265. 统计字段名及其对应长度: garden 1859 266. ['国和一村' '虹康花苑(三期)' '纪念小区' ... '南新东园' '遵义西大楼' '象屿名城'] 267. garden字段下所有类别 对应数量 268. 新南家园 15 269. 世茂滨江花园 13 270. 田林十二村 10 271. 文怡花园 9 272. 万馨佳园 9 273. 绿地金卫新家园(西区) 9 274. 金地湾流域(二期569弄) 8 275. 中房公寓 8 276. 鸿宝一村(南区) 8 277. 新凯二期 8 278. 中远两湾城 7 279. 印象春城 7 280. 新德佳苑 7 281. 长丰坊 7 282. 中环一号(一期) 6 283. 惠康苑西苑 6 284. 明园森林都市 6 285. 明珠小区(川沙) 6 286. 惠益新苑 6 287. 富友嘉园 6 288. 美兰湖中华园 6 289. 中凯城市之光(静安) 6 290. 金都雅苑(公寓) 6 291. 达安锦园 6 292. 徐汇苑 6 293. 上海康城 6 294. 丰庄十二街坊 6 295. 中环一号(三期) 6 296. 慧芝湖花园 6 297. 御景龙庭 5 298. .. 299. 紫堤苑 1 300. 金昌大厦 1 301. 梓树园 1 302. 西南名苑 1 303. 佳宝一村 1 304. 芳雅苑 1 305. 德邑小城(公寓) 1 306. 富丽苑 1 307. 中友嘉园 1 308. 证大家园(一期) 1 309. 潍坊七村 1 310. 钦州路111弄 1 311. 东南华庭 1 312. 铁岭路50弄 1 313. 惠祥公寓 1 314. 科苑新村 1 315. 上海阳城 1 316. 同济融创玫瑰公馆 1 317. 湖畔佳苑(公寓) 1 318. 寿祥坊 1 319. 平阳三村 1 320. 石泉小区 1 321. 新福康里(公寓) 1 322. 公馆77 1 323. 合生城邦三街坊 1 324. 双晖小区 1 325. 明日星城(一期) 1 326. 浅水湾恺悦名城 1 327. 隽苑 1 328. 紫竹小区 1 329. Name: garden, Length: 1859, dtype: int64 330. 统计字段名及其对应长度: district 15 331. ['杨浦' '长宁' '虹口' '松江' '闵行' '宝山' '静安' '徐汇' '浦东' '黄浦' '普陀' '嘉定' '奉贤' '金山' 332. '青浦'] 333. district字段下所有类别 对应数量 334. 浦东 794 335. 闵行 400 336. 徐汇 268 337. 静安 228 338. 宝山 208 339. 普陀 169 340. 嘉定 155 341. 松江 146 342. 杨浦 141 343. 长宁 135 344. 奉贤 95 345. 黄浦 89 346. 青浦 63 347. 金山 55 348. 虹口 54 349. Name: district, dtype: int64 350. dataset.corr(): 351. age id Unnamed: 11 total_price_Num \ 352. age 1.000000 0.000330 NaN 0.199691 353. id 0.000330 1.000000 NaN -0.143520 354. Unnamed: 11 NaN NaN NaN NaN 355. total_price_Num 0.199691 -0.143520 NaN 1.000000 356. unit_price_Num -0.143897 -0.071997 NaN 0.638882 357. area_Num 0.345437 -0.171639 NaN 0.787404 358. 359. unit_price_Num area_Num 360. age -0.143897 0.345437 361. id -0.071997 -0.171639 362. Unnamed: 11 NaN NaN 363. total_price_Num 0.638882 0.787404 364. unit_price_Num 1.000000 0.184717 365. area_Num 0.184717 1.000000 366. 散点图可视化:可寻找异常点 367. 检查目标变量满足整体分布 368. 369. mu = 631.95 and sigma = 631.20 370. 371. 绘制Q-Q分位数图:看是否与理论的一致 372. Skew in numerical features: 373. 374. skewness.head(): 375. Skew 376. area_Num 3.448604 377. unit_price_Num 1.121800 378. 总共有 2 数值型的特征做变换 379. 采用LabelEncoder,对部分类别的特征进行编号,转为数值型 380. temp1: 381. roomtype object 382. height object 383. direction object 384. decorate object 385. garden object 386. district object 387. total_price_Num float64 388. area_Num float64 389. dtype: object 390. temp2: 391. Index(['roomtype', 'height', 'direction', 'decorate', 'garden', 'district'], dtype='object') 392. [5, 10, 8, 6, 11, 2, 13, 3, 7, 14, 4, 0, 1, 9, 12] 393. roomtype height direction decorate garden district total_price_Num \ 394. 0 4 134 16 6 507 5 290.0 395. 1 4 83 16 7 1501 10 599.0 396. 2 4 83 19 7 1333 8 420.0 397. 3 5 83 16 7 829 6 269.9 398. 4 1 40 16 7 1268 11 383.0 399. 5 8 105 16 6 1505 10 1250.0 400. 6 8 86 19 7 21 11 737.0 401. 7 0 38 16 9 1230 8 162.0 402. 8 5 98 19 7 1589 2 328.0 403. 9 0 40 16 6 708 13 163.0 404. 405. area_Num 406. 0 62.79 407. 1 77.87 408. 2 81.62 409. 3 77.49 410. 4 48.45 411. 5 135.03 412. 6 112.00 413. 7 35.76 414. 8 77.63 415. 9 30.25 416. roomtype height direction decorate garden district \ 417. 2995 1 45 16 6 388 7 418. 2996 1 45 16 7 236 11 419. 2997 4 40 16 6 1819 2 420. 2998 4 51 13 7 1586 10 421. 2999 5 48 19 7 1547 6 422. 423. total_price_Num area_Num 424. 2995 230.0 53.31 425. 2996 372.0 49.59 426. 2997 366.0 73.24 427. 2998 365.0 52.82 428. 2999 420.0 85.00
2、特征工程(数据分析+数据处理)