实验室暑假学习第三周任务总结——文本信息数字化

任务需求

  上周我们对爬取到的数据做了一些简单的处理,本周的任务就是将其中的文本信息数字化表示。
在这里插入图片描述

Python源代码

  本周的任务,大部分数字化都可以通过字典来解决,只有租期一列比较特殊,有的房源数据的租期是以为单位,有的是以为单位,还有的是暂无数据。按照小组给出的需求,首先要取最低租期,把以年为单位的数据都转换成以月为单位,计算出均值,再进行二次处理,将暂无数据的信息替换成均值。这里可以使用正则表达式来解决。

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


import csv
import re


def LabelData(elem, labeled_col_list, label):
    """
    对大量数据自动编号
    :return: 元组,其中的元素为最终编号和下一待编号
    """
    if elem not in labeled_col_list:
        labeled_col_list.append(elem)
        ret = label
        label += 1
    else:
        ret = labeled_col_list.index(elem) + 1
    return ret, label


# 对所在区县、所在街道或地区、小区名称编号使用的变量
labeled_col_1, labeled_col_2, labeled_col_3 = [], [], []
label1, label2, label3 = 1, 1, 1
# 计算租期的均值所用的求和变量
total_term = 0
# 存储各行信息列表的列表
rows = []

with open('ProcessedTianjinRentHouseInfo.csv', 'r', newline='') as csv_in_file:
    with open('LabeledTianjinRentHouseInfo.csv', 'w', newline='') as csv_out_file:
        filereader = csv.reader(csv_in_file)
        filewriter = csv.writer(csv_out_file)

        # 读写标题行
        head = next(filereader)
        filewriter.writerow(head)

        # 第一次处理数据
        for row_list in filereader:
            # 所在城市
            row_list[0] = 1
            # 所在区县
            row_1_data = LabelData(row_list[1], labeled_col_1, label1)
            row_list[1] = row_1_data[0]
            label1 = row_1_data[1]
            # 所在街道或地区
            row_2_data = LabelData(row_list[2], labeled_col_2, label2)
            row_list[2] = row_2_data[0]
            label2 = row_2_data[1]
            # 小区名称
            row_3_data = LabelData(row_list[3], labeled_col_3, label3)
            row_list[3] = row_3_data[0]
            label3 = row_3_data[1]
            # 租赁方式
            if row_list[5] == '整租':
                row_list[5] = 1
            elif row_list[5] == '合租':
                row_list[5] = 2
            # 朝向
            aspect_dic = {
                '东': 1,
                '南': 2,
                '西': 3,
                '北': 4,
                '东南': 5,
                '东北': 6,
                '西南': 7,
                '西北': 8
            }
            row_list[6] = aspect_dic[row_list[6]]
            # 计费方式
            charge_mode_dic = {
                '月付价': 1,
                '季付价': 2,
                '半年付价': 3,
                '年付价': 4,
                'None': 5
            }
            row_list[8] = charge_mode_dic[row_list[8]]
            # 入住
            if row_list[12] == '随时入住':
                row_list[12] = 1
            # TODO 租期
            if row_list[13] != '暂无数据':
                if re.search(r'年', row_list[13]):
                    term = int(re.sub(r'(\D)', ' ', row_list[13]).split()[0]) * 12
                elif re.search(r'月', row_list[13]):
                    term = int(re.sub(r'(\D)', ' ', row_list[13]).split()[0])
                row_list[13] = term
                total_term += term
            # 看房
            see_house_dic = {
                '随时可看': 1,
                '需提前预约': 2,
                '一般下班后可看': 3
            }
            row_list[14] = see_house_dic[row_list[14]]
            # 所在楼层
            floor_dic = {
                '低楼层': 1,
                '中楼层': 2,
                '高楼层': 3
            }
            row_list[15] = floor_dic[row_list[15]]
            # 电梯
            lift_dic = {
                '有': 1,
                '无': 2,
                '暂无数据': 3
            }
            row_list[17] = lift_dic[row_list[17]]
            # 车位
            stall_dic = {
                '暂无数据': 1,
                '免费使用': 2,
                '租用车位': 3
            }
            row_list[18] = stall_dic[row_list[18]]
            # 用水
            water_dic = {
                '民水': 1,
                '商水': 2,
                '暂无数据': 3
            }
            row_list[19] = water_dic[row_list[19]]
            # 用电
            elec_dic = {
                '民电': 1,
                '商电': 2,
                '暂无数据': 3
            }
            row_list[20] = elec_dic[row_list[20]]
            # 燃气
            gas_dic = {
                '有': 1,
                '无': 2,
                '暂无数据': 3
            }
            row_list[21] = gas_dic[row_list[21]]
            # 采暖
            heating_dic = {
                '集中供暖': 1,
                '自采暖': 2,
                '暂无数据': 3
            }
            row_list[22] = heating_dic[row_list[22]]
            # 将第一次处理后的数据保存在rows列表中
            rows.append(row_list)

        # 第二次处理数据
        for row_list in rows:
            # 再次处理暂无数据的租期,将其更改为均值
            if row_list[13] == '暂无数据':
                row_list[13] = total_term // 1503
            # 将处理后的数据写入文件
            filewriter.writerow(row_list)
        print('写入成功')

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PyTorch中,模仿学习是指通过观察和模仿来学习任务。这种学习方法常用于强化学习中,其中智能体通过观察其他智能体的行为并模仿其行为来学习如何执行特定的任务。 PyTorch提供了丰富的张量类型用于存储和操作数据。根据引用,PyTorch支持多种数据类型,包括torch.float32、torch.float64、torch.float16、torch.uint8、torch.int8、torch.int16、torch.int32和torch.int64。这些数据类型具有不同的精度和表示范围,可以根据具体任务的需求选择适当的数据类型。 在PyTorch中,有两种常用的创建张量的方法,即使用torch.Tensor()和torch.tensor()。根据引用和引用,torch.Tensor()是一个类,而torch.tensor()是一个函数。torch.Tensor()会将数组转换为默认的tensor类型,而torch.tensor()可以根据传入的数据自动推断出tensor的类型。 要进行模仿学习,可以使用torch.tensor()创建张量来存储观察到的行为数据,并使用torch.Tensor()创建张量来存储模仿学习的结果。根据具体的任务数据类型需求,选择适当的数据类型和创建方法来实现模仿学习。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [OUC暑期培训(深度学习)——第一周学习记录:深度学习和pytorch基础](https://blog.csdn.net/tm_operao/article/details/125758097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值