【动手学深度学习v2】第二章预备知识-2.2 数据预处理

读取数据集

在这里插入图片描述

import os
作用:通过对文件以及文件夹等进行一系列的操作需要引入os模块。

os.makedirs(path,mode=0o777,exist_ok=False)
作用:用于递归创建目录。
参数:
path —— 需要递归创建的目录
mode —— 权限模式
exist_ok=False(默认,当要创建的目录已经存在,会报错,所以通常设置为True)

os.path.join(path1,[,path2[,…]])

路径表示

    . 表示当前目录
    .. 表示当前目录的上一级目录
    ./ 表示当前目录下的某个文件,视/后面跟着的名字而定
    ../ 表示当前目录上一级目录的文件或文件夹,视/后面的名字而定

作用:用于路径拼接文件路径,可以传入多个路径。

os.path.join()函数使用方法:

        若不存在以“/”开始的参数,函数会自动添加上“\”

        若存在以“/”开始的参数,从最后一个“/”开头的参数开始拼接,在此之前的参数全部丢弃。

         同时存在以“./”“/”开始的参数,以最后一个“/”开头的参数开始拼接,之前参数全部丢弃。

        只存在“./”开始的参数,会从“./”开头的参数的上一个参数开始拼接。

        注意:

 

with open() as f 
作用:表示读写文件

with open(r'filename.txt')as f:
    data_user=pd.read_csv(f)
    #文件的读操作
with open('data.txt','w')as f:
    f.write('hello world')
    #文件的写操作

相关参数:
        r:以只读方式打开文件,默认模式为只读。
        rb:以二进制格式打开一个文件用于只读。
        r+:打开一个文件用于读写。
        rb+:以二进制格式打开一个文件用于读写。
        w:打开一个文件只用于写入。若该文件已存在,则将其覆盖,若不存在则创建新文件
        wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖,若不存在则创建新文件。
        w+:打开一个文件用于读写,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件。
        wb+:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖,若不存在则创建新文件。
        a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
        ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
        a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
        ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

iloc[:,:]
        全称index location,作用是对数据进行位置索引,在数据表中提取出相应的数据。
    第一个冒号取行数,例如[0:2,]表示从第一行到第二行,第二个冒号取列数
    冒号左右遵循左闭右开原则([,))

        iloc[:,:]函数使用方法:

         从创建的csv文件中加载原始数据集,导入pandas包并调用read_csv函数。

 read_csv()
    作用:读取csv文件
    参数(只写常用的):
        filepath_or_buffer:指定数据的路径, 可以是str对象、path对象或者类文件对象。
        sep:指定数据中列之间的分隔符, 接收一个str对象,默认分隔符是逗号。
        delimiter:指定分隔符, 与sep功能相同,但默认值为None。
        header:指定表头在数据中的行号。 接收一个int对象或者由int构成的列表对象。

 处理缺失值

        该处通过fillna()函数对缺失的值进行填充,通过mean()函数NumRooms一列的均值求出并添加到缺失的数据。

fillna()
    作用:用指定的方法填充NA/NaN值(空值)
    语法格式fillna(value=None,method=None,axis=None,inplace=False,limit=None,downcast=None)
        value:填充空值的值。
        method:{'backfill','bfill','pad','ffill',None},default None。定义填充空值的方法。pad/ffill表示用前面行/列的值,填充当前行/列的值,    backfill/bfill表示用后面行/列的值,填充当前行/列的空值。
        axis:表示轴。 0或'index'表示按行删除;1或'column'表示按列删除。
        inplace:表示是否原地替换,布尔类型。 默认为False,如果为True,则在原DataFrame上进行操作,返回值为None。
        limit:int,default None。 如果method被锁定,对于连续空值,这段连续区域最多填充前limit个空值。如果method未被指定,则在该axis下,最多填充前limit个空值(不论空值连续区间是否间断)。
        downcast:dict,default is None, 字典中的项为类型向下转换规则,或者为字符串"infer"。 

.mean(a,axis=None,dtype=None,out=None,)

作用:求取平均值
            若A为矩阵,则输出每一列的均值
            若A为列向量/行向量,则输出(列/行)的均值。

语法格式:
    mean(a,axis=None,dtype=None,out=None,)

        fillna()函数的使用方法:

注:如果sum后面少加了个(),会出现 '>' not supported between instances of 'method' and 'int' 错误,原因在于未加(),编译器将其视为method与int进行比较,这是行不通的,所以需要再后面加上()来调用以获取其返回值。

          对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。 由于“巷子类型”(“Alley”)列只接受两种类型的类别值“Pave”“NaN”, pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。 巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。 缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为01

 pd.get_dummies()
    作用:实现数据离散化,也即one-hot encode(独热编码)
    语法格式:pd.get_dummies( data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
    参数:
        data:输入的数据
        prefix:列名的前缀,默认为None
        columns:指定需要实现类别转换的列名
        dummy_na:增加一列表示空缺值,如果False就忽略空缺值,默认为False。
        drop_first:获得k中k-1个类别值,去除第一个

转换张量格式

        因为input和output所有条目都是数值类型,可以转换为张量格式。当数据转换为张量格式后,我们可以通过前面的一些张量函数对其进行进一步操作。

关于torch中reshape和view的区别

        老师讲到torch中reshape和view是一样的,看了torch文档,并实践了一下,事实上还是有一点点区别的,
        区别在于被操作的那个tensor(张量)是否是连续的,当连续时两者一致,当不连续时reshape会返回新的tensor,该tensor与原来的再无关联,修改reshape返回的tensor不会变更原来的。

例如:

 a = t.rand(3,3)
    b = a.permute(1,0)
    c = b.reshape(9)
    c【0】=100 #这里观察一下a,b对应位置的数值

其他

idxmax()
        作用:返回请求的轴上第一次出现最大值的索引。
        语法格式:
            idxmax(axis=0,skipna=True)
        参数:
            axis: “0/索引”表示行,“1/列”表示列。
            skipna:排除NA/空值,如果整个 行/列 均为NA,则结果为NA。

教材地址:《动手学深度学习》 — 动手学深度学习 2.0.0 documentation

B站教程:04 数据操作 + 数据预处理【动手学深度学习v2】_哔哩哔哩_bilibili 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值