链家二手房成交数据分析(采用pytorch环境)

一、数据读取、观察、合并

1.1、数据读取

1.1.1、工具包导入

import pandas as pd#工具包导入
import numpy as np#工具包导入
import matplotlib.pyplot as plt#引入绘图所用包
%matplotlib inline
#配置绘图环境

1.1.2、读取数据

data = pd.read_csv('./lianjia1/lianjia1.csv',encoding='gbk')#读取文件
#如果数据分为多条则可以使用循环进行读取数据
#     data_list=[]#定义空列表
    #1、在编码方式相同时
#         for i in range(1,8):
#             data = pd.read_csv('./lianjia1/lianjia1.csv',encoding='gbk')
#             data_list.append(data)
    #2、编码方式不同时,可以采用捕获异常的方式
#         for i in range(1,8):
#             try:
#                 data = pd.read_csv('./lianjia1/lianjia1.csv',encoding='gbk')
#             except:
#                 data = pd.read_csv('./lianjia1/lianjia1.csv')
#             data_list.append(data)

 1.1.3、显示数据

data.head()#显示数据(默认为前5行)

 

 

 1.2、数据观察

data.describe()#对所有数据进行分析,描述数据的属性(注意是对整数或者浮点型的数进行分析)

data.info()#展示所有数据的类型

 

 

 1.3、数据提取

data = data[['cjdanjia','cjxiaoqu','cjlouceng','bankuai']]#使用双中括号加类别名进行提取指定数据

 

 二、缺失值处理

2.1、检查是否存在缺失值和缺失值过滤

data.isnull()#isnull()方法可以判断数据是否缺失但是可能显示不完全,导致不能完全确实是否有缺失值

(data.isnull()).sum()#对isnull()的结果进行累加(在计算机中false代表0,true代表1),看结果是否有缺失值


#如果有缺失值我们可以使用
# data[data.+类别名+.isnull()]来查看缺失值具体是哪一行
# 如果想要删除缺失值,有几种方法进行删除
#     1、data.dropna(how = 'all',inplace=True)#此方法会把一行中所有数据都为NAN的数据删除,
#         其中inplace参数状态是否返回data,如果为真就不返回,否则返回

 2.2、重复值

data.duplicated()#duplicated()会展现数据是否重复,如果重复显示为true,反之为false

 

(data.duplicated()).sum()#对重复值进行2进制运算,

#不能直接把重复数据删除,因为当数据中第一行中有一个数据为null,第二行中也有一个数据为null但不是同一列,系统也会判断这俩个数据重复
# 所有我们要对非null数据进行重复值判断
(data.duplicated(subset=['cjdanjia','cjxiaoqu','cjlouceng'])).sum()

#先进性排序:把有效数据排在前面,null排在后面
data.sort_values(by = 'bankuai',inplace=True)
#现在进行重复值删除操作
data.drop_duplicates(subset=['cjdanjia','cjxiaoqu','cjlouceng'],inplace=True)

 

三、数据类型转换、异常值处理、数据离散化分析

 3.1、数据类型转换

这里以成交单价为例

3.1.1、判断数据中的格式是否相同

#将数据中的‘元/平’转化成可以进行计算的数据
#先判断是否所有数据都是包含'元/平’
(data.cjdanjia.str.contains('元/平')).sum()

3.1.2、转换类型

第一种方法:函数法
# data.cjdanjia.map(lambda x:round(float(x.replace('元/平',''))/10000,2))
#其中round是保留几位小数;lambda x:表达式,叫做单行函数;float强制类型转换;x.replace将A替换成B

第二种方法:向量法

data=data.assign(cjdanjia = np.round(data.cjdanjia.str.replace('元/平','').astype(np.float32).map(lambda x:x/10000),2))
#data.assign()将转换后的苏剧复制给原始数据,后面同上

 俩种方法都可以实现

 3.2、去除异常值

对不符合要求的数据设置一个’门槛‘,也就是进行一次过滤

#对数值设置一个规则,过滤不符合的
data=data[data.cjdanjia > 0.6]
data.cjdanjia.min()

3.3、离散化分析

就是将数据分为不同的组别,利于观察和分析

#将数据按成交单价划分为不同区间
bins=[0,1,2,3,4,5,7,10,15]
pd.cut(data.cjdanjia,bins).value_counts().plot.bar(rot = 20)#对每一个区间进行计数,plot为画图代码,rot 是将横坐标按行排列

 

 3.4、字符串处理

字符串处理和数据类型转换的步骤相似

3.4.1、判断数据格式是否一致

#判断楼层是否都以俩个斜杠划分
(data.cjlouceng.str.split('/').map(len)!=3).sum()

3.4.2、 解析楼层(利用向量法)

data=data.assign(chaoxiang = data.cjlouceng.map(lambda x:x.split('/')[0]))
data=data.assign(louceng = data.cjlouceng.map(lambda x:x.split('/')[1]))

 由于机器不能对中文数据很好的分析,所以我们将楼层,朝向数据进行one-hot编码处理

data.join(pd.get_dummies(data.louceng))
#data.join()添加一列数据
#pd.get_dummies()获取one-hot编码

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值