实验室暑假学习第二周任务总结——简单的数据处理

任务需求

  上周我们已经从贝壳租房网爬取了某个城市(我选择的是天津)的房源信息数据,并保存在了CSV文件中,如下图所示:
在这里插入图片描述
  本周的任务是对这个数据集进行一些处理,需求如下:
  1. 去除房源编号一列;
  2. 所在区县一列,只保留区县名,不保留“区”字样;
  3. 面积一列只保留数字,去除单位;
  4. 朝向一列只保留第一个方位;
  5. 月租一列只保留数字,去除单位;
  6. 室、厅、卫三列只保留数字,去除单位;
  7. 入住一列如果是具体日期,则修改为yyyymmdd格式,如2020-7-31应修改为20200731
  8. 所在楼层一列如果是具体数字,则与总楼层比较之后修改为高楼层中楼层低楼层
  9. 总楼层一列只保留数字,去除单位。

Python源代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


import csv


with open('TianjinRentHouseInfo.csv', 'r', newline='') as csv_in_file:
    with open('ProcessedTianjinRentHouseInfo.csv', 'w', newline='') as csv_out_file:
        filereader = csv.reader(csv_in_file)
        filewriter = csv.writer(csv_out_file)
        header = next(filereader)
        new_header = ['所在城市', '所在区县', '所在街道或地区', '小区名称', '面积', '租赁方式', '朝向', '月租', '计费方式', '室',
                      '厅', '卫', '入住', '租期', '看房', '所在楼层', '总楼层', '电梯', '车位', '用水', '用电', '燃气', '采暖']
        filewriter.writerow(new_header)
        for row_list in filereader:
            if '新区' in row_list[2]:    # 统一所在区县格式
                row_list[2] = row_list[2].replace('新区', '')
            elif '区' in row_list[2] and '开发区' not in row_list[2]:
                row_list[2] = row_list[2].replace('区', '')
            row_list[5] = row_list[5][:-1]    # 去除面积的单位
            row_list[7] = row_list[7].split('/')[0]    # 只保留朝向的第一个方位
            row_list[8] = row_list[8].replace('元/月', '')    # 去除月租的单位
            row_list[10] = row_list[10].replace('室', '')    # 去除室的单位
            row_list[11] = row_list[11].replace('厅', '')    # 去除厅的单位
            row_list[12] = row_list[12].replace('卫', '')    # 去除卫的单位
            if row_list[13] != '随时入住':    # 如果入住有具体时间,将其统一为yyyymmdd格式
                row_list[13] = row_list[13].replace('-', '')
            row_list[17] = row_list[17].replace('层', '')    # 去除总楼层的单位
            if row_list[16] != '高楼层' and row_list[16] != '中楼层' and row_list[16] != '低楼层':    # 统一所在楼层格式
                if int(row_list[16]) <= int(row_list[17]) / 3:
                    row_list[16] = '低楼层'
                elif int(row_list[17]) / 3 < int(row_list[16]) < int(row_list[17]) / 3 * 2:
                    row_list[16] = '中楼层'
                else:
                    row_list[16] = '高楼层'
            row_list.pop(0)    # 不保留房源编号
            filewriter.writerow(row_list)
    print('写入成功')

运行结果

  运行后可得到一个CSV文件,其中共包含处理后的1503条房源数据。
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值