前言:
目前大家对“基于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的房价分析