跟着沐神学深度学习—从入门到放弃的第1天
1.数据预处理
预处理原始数据,并将原始数据转换为张量格式的步骤。在这一部分中,我们主要学习了读取数据以及对数据进行处理的操作方法。包括:在指定路径创建文件夹并进行写入文件 、对缺失数据进行填充。
2. 知识点
os.makedirs[用于创建一个文件夹]
os.path.join[创建指定路径]
1.2 代码
import os
os.makedirs(os.path.join('.', 'data'), exist_ok=True)
data_file = os.path.join('.', 'data', 'house_tiny.csv')
# print(data_file)
with open(data_file,'w') as f:
f.write('NumRooms,Alley,Price\n') # 列名
f.write('NA,Pave,127500\n') # 每行表示一个数据样本
f.write('2,NA,106000\n')
f.write('4,NA,178100\n')
f.write('NA,NA,140000\n')
# 读取数据集
import pandas as pd
import numpy as np
import torch
data = pd.read_csv("./data/house_tiny.csv", encoding="utf8")
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
# inputs = inputs.fillna(inputs.mean())
# print(inputs)
for i in range(2):
try:
b = inputs.iloc[:, i].mean()
inputs.iloc[:, i] = inputs.iloc[:, i].fillna(b)
except TypeError:
print("里面含有字符串类型数据")
inputs.iloc[:, i] = inputs.iloc[:,i].fillna("NaN")
# print(inputs)
inputs = pd.get_dummies(inputs, dummy_na=False, dtype=np.int64)
# print(inputs.astype(float))
print(inputs)
X, y = torch.tensor(inputs.values, dtype=torch.float), torch.tensor(outputs.values, dtype=torch.float)
print(X, y)
1.3 课后练习题目
要求:创建一个csv文件,向其进行写入数据,并寻找其中含有最多NaN数据的列,并将其进行删除。
import os
import pandas as pd, torch
#
# # 创建一个文件夹
os.makedirs(os.path.join(".", "练习"), exist_ok=True)
# 创建一个excel文件
file_path = os.path.join(".", "练习", "text.csv")
code_type = "gbk"
file_path.encode(code_type)
with open(file_path, "w") as f:
f.write("姓名,成绩,排名\n")
f.write("张三,100,1\n")
f.write("李四,NA,2\n")
f.write("NA,98,3\n")
f.write("NA,97,4\n")
f.write("田七,NA,5\n")
f.write("王五,NA,6\n")
# -----------进行数据处理----------------
# 读取数据
data = pd.read_csv("./练习/text.csv", encoding="gbk")
print(id(data))
# 将数据分为两类:输入数据和输出数据
inputdata,outputdata=data.iloc[:,0:2],data.iloc[:,2]
print(inputdata,outputdata)
b = data.isna().sum().idxmax()
print(b)
# print(data.drop(b, axis=1))
data= data.drop(b, axis=1)#删除包含最多nan的列
print(data)
2.特别篇
2.1可变数据以及不可变数据
可变数据类型:列表、字典、集合
不可变数据类型:整形、元组、字符串
不可变数据类型就是这个类型的内存地址所对应的数据是不可以修改的。
可变数据类型就是内存⼀旦定义好是否可以再次修改。