本节我们将简要介绍使用pandas预处理原始数据,并将原始数据转换为张量格式的步骤。我们将在后面的章节中介绍更多的数据预处理技术。
1、读取数据集
举一个例子,我们首先创建一个人工数据集,并存储在CSV(逗号分隔值)文件 …/data/house_tiny.csv中。
以其他格式存储的数据也可以通过类似的方式进行处理,下面我们将数据集按行写入CSV文件中。
import os #导入os包
os.makedirs(os.path.join('..', 'data'), exist_ok=True) #该文件目录已经存在时,也不会出现异常状况
data_file = os.path.join('..', 'data', 'house_tiny.csv') #生成文件的路径名称
with open(data_file,'w') as fp:
fp.write('NumRooms,Alley,Price\n')
fp.write('NA,Pave,127500\n')
fp.write('2,NA,106000\n')
fp.write('4,NA,178100\n')
fp.write('NA,NA,140000\n') #将这些信息写入csv文件之中
要从创建的CSV文件中加载原始数据集,我们导入pandas包并调用read_csv函数。
该数据集有四行三列。其中每行描述了房间数量(“NumRooms”)、巷子类型(“Alley”)和房屋价格(“Price”)。
import pandas as pd #导入pandas数据处理包
data = pd.read_csv('../data/house_tiny.csv') #直接使用csv包的read_csv读取csv文件
2.处理缺失值
注意,“NaN”项代表缺失值。为了处理缺失的数据,典型的方法包括插值法和删除法,其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。
1.使用均值替换掉NumRooms中的NaN值
2.缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1
3.转换为张量数据
现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式。
当数据采用张量格式后,可以通过在上节中(Pytorch的数据操作)引入的那些张量函数来进一步操作。