题目:
数据来了,废话不多,直接上python!
读取数据
import pandas as pd
###step1 数据清洗
# 读取数据
df=pd.read_csv('./台北房产数据集.CSV')
数据基本概述
# 打印数据样本个数
print(df.shape[0])
# 打印数据描述性统计情况
print(df.describe().T)
print(df.min())
print(df.max())
首先对数据进行基本处理,一共八项字段,经过pyton简单处理。其中需要关注的可描述性的变量分别如下:
描述变量 | 数据情况 | 关联 |
研究对象 | 414 | 房产研究对象 |
年月 | 2012.9~2013.6 | 日期和购房时机气候有关 |
房龄 | 2012.9~2013.6 | 房龄代表房子的新旧程度 |
公交站距离 | 23m~6488m | 公交车站距离影响交通适宜指数 |
便利店个数 | 0~70 | 便利店个数影响生活宜居指数 |
经纬度 | – | 差值不大,影响不大 |
单位面积房价 | 7~117 | 关联性价比以及购买能力 |
通过基本概述可知,研究414组房产数据,通过数据的各项指标情况,挖掘出房产的潜力和可提供的价值建议为本题的核心目标。如下进行数据分析。
数据清洗
# 找出有空值的那些情况
print(df[df.isnull().T.any()]) #可以得知空值的情况分别是第127行和第207行
# 看出x3和y都缺失了一组数据,我们用平均值法,进行补齐
df['X3 最近公交站距离']=df['X3 最近公交站距离'].fillna(df['X3 最近公交站距离'].mean())
df['Y 单位面积房价']=df['Y 单位面积房价'].fillna(df['Y 单位面积房价'].mean())
# 查看极值
print(df.min())
print(df.max())
# 有没有存在负值
print((df < 0).astype(int).sum()) #没有,因此没有小于零的异常数据
# 有没有等于0的数据
print((df == 0).astype(int).sum()) #可知
1)处理缺失值
- 删除 这里就不采用,因为这样数据价值受损
- 均值填充
采用均值填充: - 众数填充 也是一种方法 不述
如图,数据填充完毕,都是414个。
2)异常值处理 - 三倍标准差处理离群值
为了得到有规律有价值的数据,需要处理离群值,采用三倍标准差处理。首先进行一次描述新统计,查看指标最值和均值情况。如图:
目标最值和均值都是合理范围,很明显没有超出三倍标准差。这里就不再计算。数据没有严重的离群值。
- 异常小于零的数据检测
因为数据字段根据情况不存在小于零的,因此需要进行检测,检测结果如下:
可以看出没有小于零的,因此该一项检测也没问题。 - 逻辑情况检测
为了保证数据的可用性,对于数据的文本逻辑需要进行检测,很明显数据的日期逻辑格式非正常格式,这里需要我们变换。python处理后,变换结果如下:
# 日期处理 根据题目可知 1单位值=0.012月 首先对数据进行分离 初始值需要+1注意一下
print(df['X1 交易年月'])
df['X1 交易年月']=df['X1 交易年月'].astype(str)
new_df=pd.DataFrame(df["X1 交易年月"].str.split(".",expand=True))
print(new_df)
# 格式转换
new_df[1]=new_df[1].astype(float)
# 舍去小数 因为未满1,就算做本月
new_df[1]=(new_df[1]*0.012+1).astype(int)
# 日期格式拼接 中间用- 最后用pd.todate
new_df=pd.DataFrame(pd.to_datetime(new_df[0].map(str)+ '-'+new_df[1].map(str)))
df['日期格式A']=new_df
new_df[0]=new_df[0].astype(str)
print(new_df[0])
new_df=new_df[0].str.split("-",expand=True)
print(new_df)
new_df_y_m=pd.DataFrame(new_df[0].map(str)+ '-'+new_df[1].map(str))
df['日期格式B']=new_df_y_m
df.to_csv("./results/step1_清洗后的数据.csv",index=False,sep=",")
标准化处理
根据字段实际情况,需要标准化的变量如下
采用Z-score标准化,公式这里不写了。标准化处理后结果如下,进行保存到step2_标准化后的数据.csv中。
数据划分
预测及和训练集
数据分析
模型A 多元线性回归
理论基础
这里根据实际情况,因为交易记录为日期形式,单独分析需要时间序列分析,不适用于多元线性回归,这里 我们认为房价最终的确定和x2~x6这五组变量有联系,定义x为研究样本的属性值,y^为房价预测值,y为真实房价值, i为评价对象索引,m为样本数, w为研究的权重参数,b为偏置项。构建多元线性回归模型如下:
损失函数则为J(O)=
数据进行标准化后,带入python多元回归模型机械能分析:
数据产生了过拟合现象,因此首先单独线性分析:
可视化结果:
从图中可以看出,其实房龄和房价还是有一定的关系,随着房龄增加,单位房价是下降的。线性拟合函数结果为:y=-0.90x-0.791
模型的误差分析
根据分析结果,关联系数R方到达0.645,因此拟合效果一般。
r方提高了一点,这是我们想要的,但是根据实际情况,散点图分布特征,最佳采用多元非线性模型,这里针对房价后续采用一元非线性模型再次进行建模。
研究 房价-公交站距离
同样采用单变量线性回归研究,python最终处理结果如下:
关系函数为:y=-0.3454x+0.3146,r方也高达0.73,说明单位房价和公交车距离有很强的相关性。并且当公交车距离为零时候,基础的房价就已经不低了,基础房价达到了0.314的基础系数。可见交通对房价的影响力挺大,随着公交距离越远,房价越低。
研究 房价-便利店
同样采用单变量线性回归研究,python最终处理结果如下:关系函数为:y=-0.58x-0.778,r方达0.414,说明单位房价和便利店个数的线性相关性较弱。因此这里仅仅单独研究无法得出有效结论。
研究 房价- 车站距离、便利店、房龄
如下进行多变量综合研究,多元回归中经纬度意义不大,带入研究容易出现过拟合线性和龙格现象,这里规避掉。同样建立lm多元线性回归函数,python进行数据处理,处理结果如下:
如图可以看出,R方的拟合效果到达0.837,因此拟合效果很满意,关系权重分别大概是-0.454、-0.254、0.1。关系函数为:f(x)=-0.0767±0.454x1-0.254x2+0.0945。从分析结果可知,影响单位房价的因素主要是房龄、公交站距离以及便利店个数。权重最大的是房龄,影响系数高达0.454,其次是公交站距离,影响系数达0.254。激励影响为便利店个数,但是不高,为0.0945。
对于便利店因素,并且当便利店为零时候,基础的单位房价就不高了。可见便利店也是一个很大的影响因素,便利店可以不要太多,但是绝对不能没有,否则也会一定程度上影响房价。
结论:
看房,随后交易,先看房龄的人比较多,在乎房子的新旧程度,其次是交通情况,便利店也在乎,但是便利店数量过多对房子交易影响的权重并不是很大。
探索性数据分析:
首先分析数据的基本特性,一共414组,分布情况这里直接可视化了。
核密度估计
绘制概率密度估计图,了解购房密度分布:
可以看出,对于便利店,大多数人选择附近1~6个最佳。
对于公交站,用户选择0~2km的距离居多。对于房龄而言,根据具体购买能力,用户对使用15年房龄对应的性价比购买是最多的,或许是这些房子价格便宜,而且房子也挺不错。
成交量季节分析
为了找出时间和购房关系,将其对于时间进行分组聚合,得出如下图表
df['成交量']=1
year_monthdf=df.groupby('日期格式B').sum().reset_index()
print(year_monthdf)
ax=sns.barplot(x="日期格式B",y="成交量",
data=year_monthdf, color='#368216')
ax.legend().set_title('时间-季节关系')
plt.show()
探索性结论:显而易见,用户购房都在2013年1月以及6月,也就是在过年和暑假买房的人很多,特别是过年。对于建立模型,注意格式,我一般写成这样(这是我一篇国赛获奖论文,提供大家参考下)
🎖️点击获取论文地址
数据分析结论性报告
对于购房决策者来说,从购房数据看来,购房者很大程度会考虑房龄以及交通距离那个指标。其次是便利店。并且权重最高的就是房龄。因此购买房子,考虑性价比,关注房龄和交通是首要的。其次购房也并非仅仅收到房龄,还有便利店的数量,最佳是2到9个便利店,过多过少都没有多大意义。另外在购房的群体来看,购房群体集中于购买15年左右的房龄以及便利店为2~8个数量并且交通距离在0 ~ 3km这些群体。因此这些群体也是我们购房决策者们的推荐区间。
季节性因素,对于购房,人流量一般在过年和暑假比较多,对于热闹,不担心人流量的人群,购房可在这两个季节去订购。对于喜欢人流量少,可以避开这两个季节去购房。
总而言之,考虑单位房价以及性价比的顾客,应该首先考虑房龄和交通,其次考虑便利店情况。毕竟便利店是肯定有的,这个也不需要过分担心。顾客还是以房子的新旧程度和交通作为首要关注对象。
这里给出我的文件处理情况
值得注意的是,提交时候,主要是一份数据分析报告。如果需要支撑材料,即可将这些文件整理好,压缩为支撑材料上交。分析暂时就这么多,题目问题大多了,不想搞了哈哈哈,吐了!!。就这样。下期见~