数据挖掘竞赛--数据清洗

参加的大数据创新应用本科队竞赛团队取得省一等奖,我负责数据清洗和数据挖掘项目,以下分享数据清洗过程供大家参考。

数据清洗

1. 读取数据

import pandas as pd 
import numpy as np
data=pd.read_csv('./data/SecondhandHouseV8.csv')
data.head()

在这里插入图片描述

2. 删除数据中含有缺失值(NAN)的行数据

data_n=data.dropna()
sum(data_n.isnull().any(axis=1))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 从“简介”列中提取二手房的楼层和朝向,参考下列要求提取信息,并将提取结果存入“楼层”和“朝向”列。

lou=[]
chao=[]
for row in data_n['简介']:
    if row.split(',')[0].split('房')[1]=='':
        row= row.split(',')[0].split('房')[0]
        row=row.split('层')[0].strip('价格优惠,').strip('低').strip('高').strip('中')
        chao.append(row)
    else:
        row=row.split(',')[0].split('房')[1]
        if (len(row)<=3) & (len(row)!=0):
            chao.append(row)
        else:
            row=row.strip(',环境优美')
            row=row.strip('低层').strip('高层').strip('中层')
            chao.append(row)
for row in data_n['简介']:
    
    if '高' in row:
        lou.append('高层')
    elif '中' in row:
        lou.append('中层')
    elif '低' in row:
        lou.append('低层')

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4. 提取“户型”列中的室、厅、卫的数量,如“3室1厅1卫”则提取“3,1,1”,并将其数据类型转换为整数型,分别存入“室”“厅”和“卫”列。

shi=[]
ting=[]
wei=[]
for row in data_n2['户型']:
    row1=row.split('室')[0]
    shi.append(eval(row1))
for row in data_n2['户型']:
    row2=row.split('室')[1].split('厅')[0]
    ting.append(eval(row2))
for row in data_n2['户型']:
    row3=row.split('厅')[1].split('卫')[0]
    wei.append(eval(row3))
data_n2['室']=shi
data_n2['厅']=ting
data_n2['卫']=wei

在这里插入图片描述

5. 提取“发布日期”和“下架日期”列的年份,如2017,将下架年份减去发布年份获取二手房出售时长,当“下架日期”为“暂无”时,则使用当前年份(2023)减去发布年份获取出售时长,将计算所得的出售时长存入“出售时长(年)”列。

data_n2.index
for i in data_n2.index:
#     print(i)
    if data_n2['下架日期'][i]=='暂无':
        data_n2['下架日期'][i]='2023-01-07'
down=pd.to_datetime(data_n2['下架日期'])
up=pd.to_datetime(data_n2['发布日期'])
l=down-up
l=l.astype(str)
l=[int(i.split()[0]) for i in l]
l=[np.round((i/365),2) for i in l] 
data_n2['出售时长(年)']=l

在这里插入图片描述

6. 从“下架日期”列中提取星期,并整理为“星期一”,“星期二”,…,“星期日”,并将结果存入“星期”列

data_n2['下架日期']=data_n['下架日期']
for i in data_n2.index:
#     print(i)
    if data_n2['下架日期'][i]=='暂无':
        data_n2['下架日期'][i]=None
down=pd.to_datetime(data_n2['下架日期'])
w=[]
for i in down:
#     print(i)
    week=i.weekday()+1
#     print(week)
    w.append(week)
data_n2['星期']=w

在这里插入图片描述

7. 最后存入比赛要求文件格式(消除了索引)

data_n2.to_csv('./data/result3.csv',encoding='utf-8',index=None)

猜你喜欢

转载自blog.csdn.net/weixin_55595295/article/details/130305877
今日推荐