python数据分析及可视化(房产数据)

数据链接:https://pan.baidu.com/s/1I0w4129XYEW2Iwvc4rm1pA 
提取码:hdc3 

提示:

数据是自己爬的,如果有小伙伴想看,我会再更新数据的爬虫部分。

房天下网站:https://newhouse.fang.com/house/s/b81-b91/

数据可视化小项目,自己杂糅的,希望对大家有帮助,有什么问题评论区留言~

一、数据处理

1.数据导入

import pandas as pd
import numpy as np  
import warnings
warnings.filterwarnings("ignore")
df = pd.read_csv('北京小区数据信息.csv')
df.head()

 2.数据预处理

把数据里面非北京地区的删了

(数据是网站根据北京用户需求推介的,我只想要北京和北京周边的)

df=df[-df.所在区.isin(['非北京周边','海阳城区','宝坻','秦皇岛','永清','涞水','怀来','天津','霸州','大厂','廊坊','涿州','固安','崇礼'])]
df=df[-df.均价.isin(['价格待定元/㎡'])]

将数据处理一下,加入一些更有意义的列:

1. 北京各地区房产均价

房价数据有两类:xxx元/m^2,xxxx万元/套起;

先做xxx元/m^2的

estate_single = df[df['均价'].str.contains('元/㎡')]
estate_single['均价'] = [int(i.split('元/㎡')[0]) for i in estate_single['均价']]
estate_mean = estate_single[['所在区', '均价']].groupby('所在区').mean()
estate_mean.reset_index(inplace=True)
estate_mean

再来做xxxx万元/套起的数据

import re
estate_tao = df[df['均价'].str.contains('套')].reset_index(drop=True)
strinfo = re.compile('万元|/套|起')
#去除中文字符

estate_tao['均价'] = estate_tao['均价'].apply(lambda x: strinfo.sub('',x))
estate_tao['均价']=estate_tao['均价'].astype(int)
#把str型转为int

排个名看看

estate_tao['均价']=estate_tao['均价'].sort_index()
estate_tao.head(10)
#把以套为价格的房价排个名

把xxx万元/套的房价数据转为xxx元/m^2的,此步骤不够严谨,所以如果对数据要求高,建议直接把xxx万元/套的房价数据删除,只分析xxx元/m^2的数据就行

#由于房产是以套为单位显示价格,所以只能结合实际,人工评估价格
for i in range(127):
    if estate_tao['小区名称'][i]=='恒大丽宫':
        estate_tao['均价'][i] = estate_tao['均价'][i]*5#恒大丽宫面积极大
    elif estate_tao['均价'][i]>=1500:
        estate_tao['均价'][i] = estate_tao['均价'][i]*30#例如圆明天颂户型较大,所以每平米更便宜一些
    elif estate_tao['均价'][i]<=1000 and estate_tao['所在区'][i]!='朝阳'and estate_tao['所在区'][i]!='海淀':
        estate_tao['均价'][i] = estate_tao['均价'][i]*100#例如兴创荣墅
    elif estate_tao['均价'][i]<=1000 and estate_tao['所在区'][i]=='朝阳':
        estate_tao['均价'][i] = estate_tao['均价'][i]*130#例如北京书院,户型较小,所以每平米更贵
    elif estate_tao['均价'][i]<=1000 and estate_tao['所在区'][i]=='海淀':
        estate_tao['均价'][i] = estate_tao['均价'][i]*130
    elif estate_tao['均价'][i]>1000 and estate_tao['均价'][i]<1500:
        estate_tao['均价'][i] = estate_tao['均价'][i]*55#例如玖瀛府,户型较大,所以每平米更贵
    else:
        estate_tao['均价'][i] = estate_tao['均价'][i]*75

合并处理好的数据(xxx元/m^2和xxx万元/套起)

estate = pd.concat([estate_single,estate_tao], axis=0)
estate['小区名称'].value_counts() #看看情况,有没有重复值

 

删除重复值

estate = estate.drop_duplicates() 
#数据删除重复值

二、特征提取

1.数据标准化

主要是为了获取房产热度指数,所以把房产的评论数据标准化,根据评论条数确定热度:

        我将评论数据进行0-1标准化,将评论数最大值设为1,最小值设为0,将数据缩放(映射)到设置的0-1区间。并将标准化后的评论数设为标准化热度,加入到数据集中。

from sklearn import preprocessing
import  pandas
a=pd.DataFrame(estate['评论数'])
min_max_normalizer=preprocessing.MinMaxScaler(feature_range=(0,1))
#feature_range设置最大最小变换值,默认(0,1)
scaled_data=min_max_normalizer.fit_transform(a)
#将数据缩放(映射)到设置固定区间
price_frame_normalized=panda
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值