当前位置: 代码迷 >> 综合 >> 房价预测 Task2-4
  详细解决方案

房价预测 Task2-4

热度:99   发布时间:2023-12-18 03:02:09.0

房价预测 Task2-4

Task 1 的文章:点这里

Task 2

计算每个agent的平均Y_area

pandas提供了.mean()函数,求解行/列的均值。所以我们需要构造符合要求的数据帧。

df_2= df[['AgentId', 'Y house price of unit area']]
mean = []   # (1)
for i in range(6):mean.append(df_2[df_2['AgentId'] == i]['Y house price of unit area'].mean())    # (2)

(1)这里要先定义一个空的list。定义方法有两种:mean = []mean = list()

(2)使用了“Task 1”最后说到的分割。这种分割方法真的很高效,推荐使用。

这里往列表里添加元素,使用了list.append()的方法。你可能会想,mean[i]=...的方式可以吗?

这是不可以的。会有一个list out of range的错。

当然最后也要求了降序排列,方法和以前也是一致的。

Task 3

计算(1)每年;(2)每个agency每年 的平均Y_area。这是两问。

第(1)问需要对年进行筛选;如果在'Task 1'做了agency的表格,那么这一个任务的第(2)问就会很简单。

总而言之,思路就是裁剪数据表,使用内置.mean()函数计算均值

计算每个agency每年的均值

df_3 = df[['AgentId','X1 transaction date','Y house price of unit area']]# seperate each Agency
df_3_a0 = df_3[(df_3['AgentId']==0)]
df_3_a1 = df_3[(df_3['AgentId']==2) | (df_3['AgentId']==3) | (df_3['AgentId']==5)]  # (1)
df_3_a2 = df_3[(df_3['AgentId']==1) | (df_3['AgentId']==4)]# calculate mean result
mean_a0_2012=round(df_3_a0[df_3_a0['X1 transaction date']<2013]['Y house price of unit area'].mean(),1) # (2)
mean_a0_2013=round(df_3_a0[df_3_a0['X1 transaction date']>=2013]['Y house price of unit area'].mean(),1)mean_a1_2012=round(df_3_a1[df_3_a1['X1 transaction date']<2013]['Y house price of unit area'].mean(),1)
mean_a1_2013=round(df_3_a1[df_3_a1['X1 transaction date']>=2013]['Y house price of unit area'].mean(),1)mean_a2_2012=round(df_3_a2[df_3_a2['X1 transaction date']<2013]['Y house price of unit area'].mean(),1)
mean_a2_2013=round(df_3_a2[df_3_a2['X1 transaction date']>=2013]['Y house price of unit area'].mean(),1)

(1)裁剪数据表时,如果遇到多个条件的书写格式是什么?

首先,每个条件都要用()不能省略;其次,在pandas中,使用andor会报错,必须替换成| &

(2)这里使用.mean()来计算均值,使用round(x, 1)进行保留一位小数的四舍五入。

计算每年的均值

算法和上面是一致的。

# Year mean
mean_2012=round(df_3[df_3['X1 transaction date']<2013]['Y house price of unit area'].mean(), 1)
mean_2013=round(df_3[df_3['X1 transaction date']>=2013]['Y house price of unit area'].mean(), 1)

Task 4

做出'Task 3'的图形。我们做出柱状图。

res_3.plot(kind='bar', alpha=0.7)