读取数据集
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”分别设置为0和1。
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。