首先导入所需要的库pandas库

import pandas as pd

导入csv格式的数据

data = pd.read_csv(r'链家网数据集.csv',encoding='gbk')

链家网数据集样式如下图所示

将上述中的几室几厅分开为float类型的厅、室
data[['室','厅']]=data['几室几厅'].str.extract(r'(\d+)室(\d+)厅')
# 把字符串格式转化为float,并删除户型
data['室'] = data['室'].astype(float)
data['厅'] = data['厅'].astype(float)
del data['几室几厅']

执行此程序之后的结果:

对房屋面积中的“平米”去掉并且转为float类型,总价的“万”去掉,一样改为float类型,对于关注人数中去掉“人关注”,并且改为float类型

# Series中的map
data['房屋面积'] = data['房屋面积'].map(lambda e:e.replace('平米',''))
# 将建筑面积后的平方米去除,并将数据类型改成浮点型
data['房屋面积'] = data['房屋面积'].astype(float)

# 将房屋总价后的万去除,并将数据类型改成浮点型
data['总价'] = data['总价'].map(lambda e:e.replace('万',''))
data['总价'] = data['总价'].astype(float)

# 将房屋总价后的万去除,并将数据类型改成浮点型
data['关注人数'] = data['关注人数'].map(lambda e:e.replace('人关注',''))
data['关注人数'] = data['关注人数'].astype(float)

在对单价处理时它比上面三个要特殊,它去掉元/平留下来的数值里面还有一个“,”,我们要把它去掉才能转为float类型,方便后面的量化处理。

# 将单价后的元/平米去除,并将数据类型改成浮点型 data['单价'] = data['单价'].map(lambda e:e.replace(r'元/平','')) data['单价'] = data['单价'].map(lambda e:e.replace(r',','')) data['单价'] = data['单价'].astype(float)

其运行结果为:

 随后我们对较难处理的朝向进行处理,由于数据集中的朝向有很多种,在将其量化后,不利于后期模型的训练,故只选择include列表中的几种朝向。

data['朝向'] = data['朝向'].map(lambda e:e.replace(' ',''))
include=['东','东北', '东南', '北', '南', '南北', '西', '西北', '西南']
list=[]
for i in data['朝向']:
    if i[0:2] not in include:
        list.append(i[0])
    else:
        list.append(i[0:2])
data['朝向']=list
对于结构类型,我们将联排别墅,双拼别墅等都通用别墅替代。
list=[]
for i in data['结构类型']:
    if i[2:4] =='别墅':
        list.append(i[2:4])
    else:
        list.append(i[0:4])
data['结构类型']=list

对于楼层,我们将大于25层的划为高楼层,小于25大于15的划为中楼层,小于15的划为低楼层。
data['楼层'] = data['楼层'].map(lambda e:e.replace(' ',''))
data['楼层'] = data['楼层'].astype(str)
list=[]
include=['中楼','高楼','低楼','上叠','下叠','地下']
for i in data['楼层']:
    if i[0:2] not in include:
        if i[1]!='层':
            if int(i[0:2])>25:
                list.append('高楼层')
            elif int(i[0:2])>15:
                list.append('中楼层')
            else:
                list.append('低楼层')
        else:
            list.append('低楼层')
    else:
        if i[0:2]=='上叠' or i[0:2]=='下叠':
            list.append(i[0:2])
        else:
            list.append(i[0:3])
data['楼层']=list

对朝向进行量化操作

# 使用pd.get_dummies() 量化数据
data_direction = pd.get_dummies(data['朝向'])
运行结果:

对结构类型进行量化操作

# 使用pd.get_dummies() 量化数据
data_jiegoushijin = pd.get_dummies(data['结构类型'])

运行结果

对装修程度进行量化操作
# 使用pd.get_dummies() 量化数据
data_decoration = pd.get_dummies(data['装修程度'])

对楼层进行量化操作 

# 使用pd.get_dummies() 量化数据
data_floor = pd.get_dummies(data['楼层'])

 

老规矩最后上所有代码:

import pandas as pd

data = pd.read_csv(r'链家网数据集.csv',encoding='gbk')
data[['室','厅']]=data['几室几厅'].str.extract(r'(\d+)室(\d+)厅')
# 把字符串格式转化为float,并删除户型
data['室'] = data['室'].astype(float)
data['厅'] = data['厅'].astype(float)
del data['几室几厅']

# Series中的map
data['房屋面积'] = data['房屋面积'].map(lambda e:e.replace('平米',''))
# 将建筑面积后的平方米去除,并将数据类型改成浮点型
data['房屋面积'] = data['房屋面积'].astype(float)

# 将单价后的元/平米去除,并将数据类型改成浮点型
data['单价'] = data['单价'].map(lambda e:e.replace(r'元/平',''))
data['单价'] = data['单价'].map(lambda e:e.replace(r',',''))
data['单价'] = data['单价'].astype(float)

# 将房屋总价后的万去除,并将数据类型改成浮点型
data['总价'] = data['总价'].map(lambda e:e.replace('万',''))
data['总价'] = data['总价'].astype(float)

# 将房屋总价后的万去除,并将数据类型改成浮点型
data['关注人数'] = data['关注人数'].map(lambda e:e.replace('人关注',''))
data['关注人数'] = data['关注人数'].astype(float)

# 将朝向后的万去除,并将数据类型改成浮点型
data['朝向'] = data['朝向'].map(lambda e:e.replace(' ',''))
include=['东','东北', '东南', '北', '南', '南北', '西', '西北', '西南']
list=[]
for i in data['朝向']:
    if i[0:2] not in include:
        list.append(i[0])
    else:
        list.append(i[0:2])
data['朝向']=list

# 将结构类型后的万去除,并将数据类型改成浮点型
list=[]
for i in data['结构类型']:
    if i[2:4] =='别墅':
        list.append(i[2:4])
    else:
        list.append(i[0:4])
data['结构类型']=list

# 将楼层后的万去除,并将数据类型改成浮点型
data['楼层'] = data['楼层'].map(lambda e:e.replace(' ',''))
data['楼层'] = data['楼层'].astype(str)
list=[]
include=['中楼','高楼','低楼','上叠','下叠','地下']
for i in data['楼层']:
    if i[0:2] not in include:
        if i[1]!='层':
            if int(i[0:2])>25:
                list.append('高楼层')
            elif int(i[0:2])>15:
                list.append('中楼层')
            else:
                list.append('低楼层')
        else:
            list.append('低楼层')
    else:
        if i[0:2]=='上叠' or i[0:2]=='下叠':
            list.append(i[0:2])
        else:
            list.append(i[0:3])
data['楼层']=list

# 使用pd.get_dummies() 量化数据
data_direction = pd.get_dummies(data['朝向'])

# 使用pd.get_dummies() 量化数据
data_floor = pd.get_dummies(data['楼层'])

# 使用pd.get_dummies() 量化数据
data_decoration = pd.get_dummies(data['装修程度'])

# 使用pd.get_dummies() 量化数据
data_jiegoushijin = pd.get_dummies(data['结构类型'])

# 使用pd.concat矩阵拼接,axis=1:水平拼接
data = pd.concat([data,data_direction,data_floor,data_decoration,data_jiegoushijin],axis=1)

# 特征筛选
del data['标题']
del data['地址']
del data['朝向']
del data['装修程度']
del data['楼层']
del data['建造时间']
del data['结构类型']
data.to_csv('./xixi.csv',encoding='gbk')
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐