import os
import pandas as pd
import numpy as np
#创建csv文件并写入数据
os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
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')
#读csv文件
data = pd.read_csv(data_file)
'''处理缺失值方式:将数值型列的缺失值用该列均值填充,将有缺失值的非数值型列作为新的列
inputs取所有行+第0,1列。outputs取所有行+第2列
'''
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
#均值代替
inputs = inputs.fillna(inputs.mean(numeric_only=True))
#pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。 缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1。
inputs = pd.get_dummies(inputs, dummy_na=True)
#现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式。
X, y = np.array(inputs.to_numpy(dtype=float)), np.array(outputs.to_numpy(dtype=float))
data, X, y