房价预测Task1

2023-10-14 05:38
文章标签 预测 task1 房价

本文主要是介绍房价预测Task1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pandas:简单的房价预测实例

我们使用pandas等工具,对于给出的.csv文件进行处理,完成要求的几个Task。

利用sklearn的线性回归,对于房价进行简单的预测。

所有的要求,数据集等文件,请到我的GitHub仓库自行下载:github.com/rongyupan/HousePricePred

如果你是pandas这类数据分析工具的新手,那这个项目很适合你。因为这个项目只需要用到最基本,最简单的操作。

数据集描述

transactions.csv数据集是我们的主要数据集;agents.csvagency.csv保存了agents和agency之间的关系,也就是每个agency下具体是哪几个agents。

下面我们针对每个task,对于使用到的函数,以及解决的思路进行一下简单的总结。

自己的经验

1.尽量使用pandas自带的函数进行处理

比如统计数量、平均、求和这种操作,使用自带的函数比自己写循环要靠谱。

可以这样理解:pandas更像python版的excel。在使用excel要对行/列求和之类的操作时,你会自己重写一个函数吗?

基本上在excel里可以用鼠标点击完成的,大部分在pandas中有内置函数对应。

2. 先对数据表进行增删改

如果想要遵照经验1,你会发现有时候直接对原始的数据表操作不可行,这时候就要对数据表进行筛选。

在完成下面每个task之前,几乎都需要对于数据表进行增删改,增加/删除/改动某几列。

我们改动数据表的目的就是为了更好地完成经验1。

数据集导入

import pandas as pd df = df.read_csv('./transactions.csv')

Task 1

求出每个agency的交易总量,并降序排列。

思路:先获取每个agent的交易总量,再计算每个agency的数量。

计算每个agency的交易总量

解决方案:(1)遍历表中每行,根据agent来判断加到具体哪个agency;最直接,但是最麻烦。

(2)使用df['xxx'].value_counts(),自动统计每列中,出现的元素的对应数量。

agt = df['AgentId'].value_counts()
print(agt)# 获取每个元素的数量
agt[0]# return
3    93
2    88
4    76
1    74
5    44
0    39
Name: AgentId, dtype: int6439

table显示

我们可以使用pd.DataFrame()来以表格的形式显示。

创建数据帧可以使用字典导入的方式,但一定要注意:字典的值的类型需要为list

Agency = {'Agency Name':["Other","Your Estate","Lovely Housing"],\'Numbers':[sum_agc[0],sum_agc[1],sum_agc[2]]}
res_1 = pd.DataFrame(Agency)

降序排列

使用res_1.sort_values("Numbers", ascending=False),也就是对于'Numbers'这一列进行降序排列。

如果没有ascending=False这个参数,默认为升序排列。

Task1其他方法

task1尽管简单,但是思路很多。上面是间接法:先使用value_counts()函数得到了每个agent的数量,间接求得了agency的数量。

方法1:新增一列AgencyId

我们只有agent的信息,那我们就先增加一列,整理出agency的信息。这里就是用到了上面说的经验2。

得到了agency的信息后,就能用value_counts()这个函数直接得到结果。

df_1 = df[['AgentId']]  # (1)
df_1['AgencyId'] = 1    # (2)for i in range(len(df_1)):  # (3)agtId = df_1.loc[i, 'AgentId']  # (4)if agtId == 0:df_1.loc[i, 'AgencyId'] = 0 # (5)if agtId == 2 or agtId == 3 or agtId == 5:df_1.loc[i, 'AgencyId'] = 1if agtId == 1 or agtId == 4:df_1.loc[i, 'AgencyId'] = 2df_1['AgencyId'].value_counts()# return
1    225
2    150
0     39
Name: AgencyId, dtype: int64

(1)截取第一列df_1 = df['AgentId']df_1 = df[['AgentId']]有何不同?

是维度的不同。第一种为一维,可以理解成一个array或list;第二种是二维的表格,表头为AgentId,每一列都有序号。

建议使用第二种写法。

(2)如何新增一列?

直接用df_1['Col_name']=1就能新建一列名为Col_name,值全为1的列。

(3)len(df_1)是什么意思?

获取df_1的长度,也就是多少行,当然,不包括表头的那一行。

等价的写法是df_1.shape[0]df_1.shape会返回(414, 2)这样一个list,也就是取其第一个数。

(4)df_1.loc[i, 'AgentId']定位

第一个参数是第i行,从0开始;第二个位置是列位置。

(5)这里为什么不能先在前面设置一个参数,比如agcId,然后使用这个更短的参数不是写起来更方便?

为了修改值,只能这么写。如果使用了第三个参数,实质上是把这个位置的值复制了一遍,修改的是这个复制的值,而不是真实值。

这种方法代码这么多,没有刚开始的方法简洁,但是,如果后面有agency相关,那么这里的工作就是值得了。

方法2:数据表截取

为了获取agency的信息,有没有更简单的方法?

df_1 = df[['AgentId']]df_1_0 = df_1[df_1['AgentId'] == 0]
df_1_0['AgencyId'] = 0
df_1_0

我们就得到了Agency0的所有数据。df_1['AgentId'] == 0会得到一列全是 True/False 的序列;

然后在加上df_1[df_1['AgentId'] == 0]就得到所有'AgentId'=0的内容;

最后在以上的基础上新增一列AgencyId即可。使用for等循环语句即可自动化这个过程

同样的,如果后面需要agency的信息,这样就会大大简化后面的处理。

这篇关于房价预测Task1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208517

相关文章

Tensorflow lstm实现的小说撰写预测

最近,在研究深度学习方面的知识,结合Tensorflow,完成了基于lstm的小说预测程序demo。 lstm是改进的RNN,具有长期记忆功能,相对于RNN,增加了多个门来控制输入与输出。原理方面的知识网上很多,在此,我只是将我短暂学习的tensorflow写一个预测小说的demo,如果有错误,还望大家指出。 1、将小说进行分词,去除空格,建立词汇表与id的字典,生成初始输入模型的x与y d

临床基础两手抓!这个12+神经网络模型太贪了,免疫治疗预测、通路重要性、基因重要性、通路交互作用性全部拿下!

生信碱移 IRnet介绍 用于预测病人免疫治疗反应类型的生物过程嵌入神经网络,提供通路、通路交互、基因重要性的多重可解释性评估。 临床实践中常常遇到许多复杂的问题,常见的两种是: 二分类或多分类:预测患者对治疗有无耐受(二分类)、判断患者的疾病分级(多分类); 连续数值的预测:预测癌症病人的风险、预测患者的白细胞数值水平; 尽管传统的机器学习提供了高效的建模预测与初步的特征重

结合Python与GUI实现比赛预测与游戏数据分析

在现代软件开发中,用户界面设计和数据处理紧密结合,以提升用户体验和功能性。本篇博客将基于Python代码和相关数据分析进行讨论,尤其是如何通过PyQt5等图形界面库实现交互式功能。同时,我们将探讨如何通过嵌入式预测模型为用户提供赛果预测服务。 本文的主要内容包括: 基于PyQt5的图形用户界面设计。结合数据进行比赛预测。文件处理和数据分析流程。 1. PyQt5 图形用户界面设计

CNN-LSTM模型中应用贝叶斯推断进行时间序列预测

这篇论文的标题是《在混合CNN-LSTM模型中应用贝叶斯推断进行时间序列预测》,作者是Thi-Lich Nghiem, Viet-Duc Le, Thi-Lan Le, Pierre Maréchal, Daniel Delahaye, Andrija Vidosavljevic。论文发表在2022年10月于越南富国岛举行的国际多媒体分析与模式识别会议(MAPR)上。 摘要部分提到,卷积

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测 目录 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测(完整源码和数据) 2.SS

力扣 | 递归 | 区间上的动态规划 | 486. 预测赢家

文章目录 一、递归二、区间动态规划 LeetCode:486. 预测赢家 一、递归 注意到本题数据范围为 1 < = n < = 20 1<=n<=20 1<=n<=20,因此可以使用递归枚举选择方式,时间复杂度为 2 20 = 1024 ∗ 1024 = 1048576 = 1.05 × 1 0 6 2^{20} = 1024*1024=1048576=1.05 × 10^

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出 目录 回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出预测效果基本介绍模型介绍PSO模型LSTM模型PSO-LSTM模型 程序设计参考资料致谢 预测效果 Matlab实现PSO-LSTM多变量回归预测 1.input和outpu

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention 文章目录 一、基本原理1. 变分模态分解(VMD)2. 双向时域卷积(BiTCN)3. 双向门控单元(BiGRU)4. 注意力机制(Attention)总结流程 二、实验结果三、核心代码四、代码获取五、总结 时序预测|变分模态分解-双向时域卷积

【销售预测 ARIMA模型】ARIMA模型预测每天的销售额

输入数据txt格式: 2017-05-01 100 2017-05-02 200 ……. python 实现arima: # encoding: utf-8"""function:时间序列预测ARIMA模型预测每天的销售额author:donglidate:2018-05-25"""# 导入库import numpy as np # numpy库from statsmode

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶斯算法优化X