题目

数据分析大赛课题设计 数据分析竞赛试题_python


数据分析大赛课题设计 数据分析竞赛试题_python_02


数据分析大赛课题设计 数据分析竞赛试题_数据_03


数据分析大赛课题设计 数据分析竞赛试题_数据分析_04


数据来了,废话不多,直接上python!

数据分析大赛课题设计 数据分析竞赛试题_数据分析大赛课题设计_05

读取数据
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_06


目标最值和均值都是合理范围,很明显没有超出三倍标准差。这里就不再计算。数据没有严重的离群值。

  • 异常小于零的数据检测
    因为数据字段根据情况不存在小于零的,因此需要进行检测,检测结果如下:

    可以看出没有小于零的,因此该一项检测也没问题。
  • 逻辑情况检测
    为了保证数据的可用性,对于数据的文本逻辑需要进行检测,很明显数据的日期逻辑格式非正常格式,这里需要我们变换。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=",")

数据分析大赛课题设计 数据分析竞赛试题_python_07

标准化处理

根据字段实际情况,需要标准化的变量如下

数据分析大赛课题设计 数据分析竞赛试题_数据分析_08


采用Z-score标准化,公式这里不写了。标准化处理后结果如下,进行保存到step2_标准化后的数据.csv中。

数据分析大赛课题设计 数据分析竞赛试题_数据分析大赛课题设计_09

数据划分

预测及和训练集

数据分析

模型A 多元线性回归

理论基础

这里根据实际情况,因为交易记录为日期形式,单独分析需要时间序列分析,不适用于多元线性回归,这里 我们认为房价最终的确定和x2~x6这五组变量有联系,定义x为研究样本的属性值,y^为房价预测值,y为真实房价值, i为评价对象索引,m为样本数, w为研究的权重参数,b为偏置项。构建多元线性回归模型如下:

数据分析大赛课题设计 数据分析竞赛试题_数据_10


损失函数则为J(O)=

数据分析大赛课题设计 数据分析竞赛试题_python_11


数据进行标准化后,带入python多元回归模型机械能分析:

数据产生了过拟合现象,因此首先单独线性分析:

数据分析大赛课题设计 数据分析竞赛试题_数据分析大赛课题设计_12

数据分析大赛课题设计 数据分析竞赛试题_数据_13


可视化结果:

数据分析大赛课题设计 数据分析竞赛试题_python_14


从图中可以看出,其实房龄和房价还是有一定的关系,随着房龄增加,单位房价是下降的。线性拟合函数结果为:y=-0.90x-0.791

模型的误差分析

数据分析大赛课题设计 数据分析竞赛试题_数据分析_15


根据分析结果,关联系数R方到达0.645,因此拟合效果一般。

r方提高了一点,这是我们想要的,但是根据实际情况,散点图分布特征,最佳采用多元非线性模型,这里针对房价后续采用一元非线性模型再次进行建模。

研究 房价-公交站距离

同样采用单变量线性回归研究,python最终处理结果如下:

数据分析大赛课题设计 数据分析竞赛试题_数据_16


关系函数为:y=-0.3454x+0.3146,r方也高达0.73,说明单位房价和公交车距离有很强的相关性。并且当公交车距离为零时候,基础的房价就已经不低了,基础房价达到了0.314的基础系数。可见交通对房价的影响力挺大,随着公交距离越远,房价越低。

数据分析大赛课题设计 数据分析竞赛试题_数据分析_17


研究 房价-便利店

同样采用单变量线性回归研究,python最终处理结果如下:关系函数为:y=-0.58x-0.778,r方达0.414,说明单位房价和便利店个数的线性相关性较弱。因此这里仅仅单独研究无法得出有效结论。

数据分析大赛课题设计 数据分析竞赛试题_数据_18


数据分析大赛课题设计 数据分析竞赛试题_数据_19


研究 房价- 车站距离、便利店、房龄

如下进行多变量综合研究,多元回归中经纬度意义不大,带入研究容易出现过拟合线性和龙格现象,这里规避掉。同样建立lm多元线性回归函数,python进行数据处理,处理结果如下:

数据分析大赛课题设计 数据分析竞赛试题_数据_20

如图可以看出,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组,分布情况这里直接可视化了。

数据分析大赛课题设计 数据分析竞赛试题_数据分析大赛课题设计_21


数据分析大赛课题设计 数据分析竞赛试题_数据分析_22


数据分析大赛课题设计 数据分析竞赛试题_python_23


数据分析大赛课题设计 数据分析竞赛试题_数据_24

核密度估计

绘制概率密度估计图,了解购房密度分布:

数据分析大赛课题设计 数据分析竞赛试题_数据分析大赛课题设计_25


数据分析大赛课题设计 数据分析竞赛试题_数据分析_26


数据分析大赛课题设计 数据分析竞赛试题_数据_27


可以看出,对于便利店,大多数人选择附近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()

数据分析大赛课题设计 数据分析竞赛试题_python_28


数据分析大赛课题设计 数据分析竞赛试题_数据_29


探索性结论:显而易见,用户购房都在2013年1月以及6月,也就是在过年和暑假买房的人很多,特别是过年。对于建立模型,注意格式,我一般写成这样(这是我一篇国赛获奖论文,提供大家参考下)

数据分析大赛课题设计 数据分析竞赛试题_数据分析_30


🎖️点击获取论文地址

数据分析结论性报告

对于购房决策者来说,从购房数据看来,购房者很大程度会考虑房龄以及交通距离那个指标。其次是便利店。并且权重最高的就是房龄。因此购买房子,考虑性价比,关注房龄和交通是首要的。其次购房也并非仅仅收到房龄,还有便利店的数量,最佳是2到9个便利店,过多过少都没有多大意义。另外在购房的群体来看,购房群体集中于购买15年左右的房龄以及便利店为2~8个数量并且交通距离在0 ~ 3km这些群体。因此这些群体也是我们购房决策者们的推荐区间。
季节性因素,对于购房,人流量一般在过年和暑假比较多,对于热闹,不担心人流量的人群,购房可在这两个季节去订购。对于喜欢人流量少,可以避开这两个季节去购房。
总而言之,考虑单位房价以及性价比的顾客,应该首先考虑房龄和交通,其次考虑便利店情况。毕竟便利店是肯定有的,这个也不需要过分担心。顾客还是以房子的新旧程度和交通作为首要关注对象。

这里给出我的文件处理情况

数据分析大赛课题设计 数据分析竞赛试题_数据分析_31


数据分析大赛课题设计 数据分析竞赛试题_数据_32


值得注意的是,提交时候,主要是一份数据分析报告。如果需要支撑材料,即可将这些文件整理好,压缩为支撑材料上交。分析暂时就这么多,题目问题大多了,不想搞了哈哈哈,吐了!!。就这样。下期见~

数据分析大赛课题设计 数据分析竞赛试题_数据分析_33