龙空技术网

Python数据分析之广东各地区房价多维度分析

civilpy 70

前言:

目前大家对“基于python的房价分析”大约比较着重,朋友们都想要了解一些“基于python的房价分析”的相关内容。那么小编在网络上收集了一些关于“基于python的房价分析””的相关资讯,希望同学们能喜欢,朋友们一起来学习一下吧!

I am not a designer nor a coder. I'm just a guy with a point-of-view and a computer.

翻译:俺不是码畜,俺只是一条对着电脑有点想法的图狗。

经验一旦遇到问题,请过滤掉专家的意见,只采纳跟你有类似经历的人的意见。做好最坏的打算,以最积极的心态去面对,而不是逃避。学不学编程,完全取决于是否想学,其他的别多想。种一棵树最好的时间是十年前,其次是现在。

代码

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snspd.set_option('display.max_columns', 10)pd.set_option('display.max_rows', 10)%matplotlib inlineplt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #当坐标轴有负号的时候可以显示负号import os,re# 越秀区、荔湾区、海珠区、天河区、白云区、黄埔区、番禺区、花都区、南沙区、增城区、从化区files =['data/'+i for i in  os.listdir('data/')]files['data/baiyun.csv', 'data/conghua.csv', 'data/haizhu.csv', 'data/huadou.csv', 'data/huangpu.csv', 'data/liwan.csv', 'data/nansha.csv', 'data/panyu.csv', 'data/tianhe.csv', 'data/yuexiu.csv', 'data/zengcheng.csv']
合并区域

利用python进行数据分析按照房源建造时间划分的房价对比;处理按面积划分的房价对比(对比每单位面积房价);买房者关注因素分析(关注度);地铁距离与房价情况分析(是否近地铁)

a = '越秀区、荔湾区、海珠区、天河区、白云区、黄埔区、番禺区、花都区、南沙区、增城区、从化区'.split('、')b = 'data/yuexiu.csv、data/liwan.csv、data/haizhu.csv、data/tianhe.csv、data/baiyun.csv、data/huangpu.csv、data/panyu.csv、data/huadou.csv、data/nansha.csv、data/zengcheng.csv、data/conghua.csv'.split('、')area = dict(zip(b,a))dfs = []for i in files:    dfi = pd.read_csv(i)    dfi['区域'] = area[i]    dfs.append(dfi)df = pd.concat(dfs,axis=0)  # 合并各区房源信息df.head()

简述

地点

房源情况

关注度

是否近地铁

房价

每平方米房价

区域

df.tail()

简述

地点

房源情况

关注度

是否近地铁

房价

每平方米房价

区域

df.shape  # 构造整体的Dataframe(9900, 8)
数据清洗
def get_pall(x):  # 房价    price =x.strip().strip('万')    return float(price)df['房价2'] = df['房价'].apply(get_pall)def get_price(x):  # 价格    price = re.findall('\d+\.?\d*',x)[0]    return float(price)df['单价'] = df['每平方米房价'].apply(get_price)def get_time(x):  # 时间    for i in x.split('|'):        if '年建' in i:            t = i.strip().strip('年建')            return tdf['时间'] = df['房源情况'].apply(get_time)def get_area(x): # 面积    for i in x.split('|'):        if '平米' in i:            area = i.strip().strip('平米')            return float(area)df['面积'] = df['房源情况'].apply(get_area)def attention(x): # 关注    for i in x.split('/'):        if '关注' in i:            att = i.strip().strip('人关注')            return int(att)df['关注人数'] = df['关注度'].apply(attention)def tunnel(x): # 地铁    try:        if '地铁' in x:            return 1        else:            return 0    except:            return 0df['地铁'] = df['是否近地铁'].apply(tunnel)df.head()

简述

地点

房源情况

关注度

是否近地铁

...

单价

时间

面积

关注人数

地铁

5 rows × 14 columns

df.columnsIndex(['简述', '地点', '房源情况', '关注度', '是否近地铁', '房价', '每平方米房价', '区域', '房价2', '单价',       '时间', '面积', '关注人数', '地铁'],      dtype='object')df=df.dropna()  # 删除缺失值df = df[['区域', '房价2', '单价','时间', '面积', '关注人数', '地铁']]df.head()

区域

房价2

单价

时间

面积

关注人数

地铁

# df = df[df['区域']=='天河区']  # 如果要分析某一个区,将本行注释取消
按照房源建造时间划分的房价对比
df_price = df.groupby('时间')['房价2'].mean().round(2)plt.figure(figsize=(15, 5))data = df_price.valueslabels = df_price.indexplt.plot(range(len(data)), data,color='r')plt.xticks(range(len(data)),labels)for x,y in zip(range(len(data)), data):    plt.text(x+0.05,y+0.05,'%i' %y, ha='center',va='bottom') plt.xticks(rotation=90)plt.title("按照房源建造时间划分的房价对比")plt.show()

按面积划分的房价对比(对比每单位面积房价)

area_groups=pd.cut(df['面积'],bins=[0,60,90,120,150,200,500,1000], labels=["60","90","120","150","200","500","1000"])df['面积2'] = area_groupsdf_price = df.groupby('面积2')['单价'].mean()plt.figure(figsize=(10, 5))data = df_price.valueslabels = df_price.indexplt.bar(range(len(data)), data,tick_label=labels)for x,y in zip(range(len(data)), data):    plt.text(x+0.05,y+0.5,'%i' %y, ha='center',va='bottom') plt.xticks(rotation=90)plt.title("按面积划分的房价对比")plt.show()

买房者关注因素分析(关注度)

att_groups=pd.cut(df['面积'],bins=5)df['att_groups']=att_groupsdf_price = df.groupby('att_groups')['单价'].mean()plt.figure(figsize=(10, 5))data = df_price.valueslabels = df_price.indexplt.bar(range(len(data)), data,tick_label=labels)for x,y in zip(range(len(data)), data):    plt.text(x+0.05,y+0.5,'%i' %y, ha='center',va='bottom') plt.xticks(rotation=40)plt.title("买房者关注度分析")plt.show()

地铁距离与房价情况分析(是否近地铁)

df_tunnel = df.groupby('地铁')['区域'].count()plt.figure(figsize=(5, 5))labels = ['无地铁','有地铁']sizes = df_tunnel.values.tolist()plt.pie(sizes,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150)plt.title("地铁距离与房价情况分析")plt.show()

df_tunnel_price = df.groupby('地铁')['单价'].mean()df_tunnel_price  # 有地铁价格比无地铁高4000左右地铁0    35538.4959921    39535.855573Name: 单价, dtype: float64

标签: #基于python的房价分析