上海python数据分析_python数据分析项目——链家上海二手房数据分析(一)

1.数据爬取

链接:https://pan.baidu.com/s/1zaTqNY2eCzGyYzesDw0LPw

提取码:5h8d

链接是我自行在链家爬取的一些样本数据,数据量不大,1页50个,总共30页房屋信息。下面我就基于这1500个二手房信息做一个数据分析。

2.数据读取

house_data = pd.read_csv('链家上海二手房.csv')

house_data = house_data.reset_index()

lien = house_data['index']

house_data.drop(labels=['index'], axis=1, inplace=True)

house_data.insert(23, '房屋链接', lien)

1.png

上图中可以看到我所爬取的大概信息,总共有23个维度

3.数据去重和筛选

house_data.drop_duplicates(subset='房屋链接', inplace=True)

# 先选取最重要的三个维度来进行数据分析

hdata = house_data.filter(items=['房子总价', '建筑面积', '房子单价'])

由于单价和总价这两个字段的数据都自带单位,所以下一步我们要继续去除这些单位,只留下数值,才能更方便地进行数据分析:

# 自定义函数,目的是把单位去掉

def func(x):

mulnum = 1

if '亿' in x:

mulnum = 10000

v = re.search('\d+\.?\d+', x).group()

fv = float(v) * mulnum

return fv

2.png

最终数据的清洗结果如上图所示。

4.数据可视化

4.1房屋总价箱状图

先简单地通过箱状图,来观察下数据的整体分布:

sns.boxplot(x=['房屋总价'], y=[hdata.房子总价])

房屋总价boxplot.png

可以看到上海2019年二手房,由于相当一部分的异常值,导致整体分布不均匀,无法观察到总体。

4.2去除异常值

既然有一定量的异常值,那么最好去除,这样做出来的分析才能更精确,更有说服力:

hdata = hdata[(hdata.房子总价 < 1500) & (hdata.房子总价 > 100) & (hdata.建筑面积 > 15)]

len(hdata[(hdata.房子总价 < 1500) & (hdata.房子总价 > 100)]), len(hdata)

房屋总价去除异常值后boxplot.png

经过处理后可以看到,一半的二手房价格浮动在200w出头到接近600w的价格区间内,属于普通消费者水平。

4.3.三个维度的子图对比,箱状图

index = 1

plt.figure(figsize=(12, 4))

color = {1: 'OrRd_r', 2: 'RdYlBu', 3: 'copper'}

for order, key in enumerate(hdata.columns.values, start=1):

plt.subplot(1, 3, index)

index += 1

sns.boxplot(x=[key], y=[hdata[key]], palette=color[order])

三个维度子图对比boxplot.png

可以直观地看到上海二手房的房子单价75%都超过了4w,平均都超过5w;建筑面积75%少于100平方米。

4.4三个维度的子图对比,直方图

index = 1

plt.figure(figsize=(20, 6))

colors = {1: 'reddish', 2: 'dark sky blue', 3: 'sandy yellow'}

for order, key in enumerate(hdata.columns.values, start=1):

plt.subplot(1, 3, index)

index += 1

sns.distplot(hdata[key], color=sns.xkcd_rgb[colors[order]], label=key)

plt.legend()

三个维度子图对比distplot.png

描述的内容和上面的箱状图一致,但是对于分布情况,会更细致。如果想买二手房,房屋单价肯定是关键因素之一,然而直方图只能看到密度,不能看到区间分布,所以下面我们再针对“房屋单价”这个维度进行细分,划分出区间来进一步观察在上海,二手房单价的价格区间分布到底是如何的。

4.5 房屋单价 价格区间划分

interval = list(range(2, 15))

interval.insert(0, 0)

interval.append(20)

interval = np.array(interval) * 10000

result = pd.cut(hdata.房子单价, bins=interval)

uprice = result.value_counts()

uprice = uprice.sort_index()

划分之后如下图:

3.png

4.6 房屋单价可视化

index = list(range(14))

xindex = ['%dw+'%val for val in range(1, 15)]

上海2019链家二手房-房子单价样本barplot.png

plt.figure(figsize=(8,8))

plt.axes(aspect=1)

x, y, z = plt.pie(uprice.values, labels=xindex, autopct='%2.1f%%', radius=1.2)

r = plt.setp(z, weight='bold', size=11)

plt.legend(loc='best')

房屋单价区间分布pie.png

通过两种图的展示,我们可以看到4w-5w的房屋总量是最多的,总体3-6w的房屋单价是目前二手房的主流价格区间,通过饼图可以看到有超过一半的价格落在这三个区间中。

未完待续......

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值