.
本节我们将简要介绍使用Python
中pandas
预处理原始数据,并将原始数据转换为张量格式的步骤。
.
创建CSV文件:生成包含三列(NumRooms
, Alley
, Price
)的模拟数据并保存。
import 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 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')
加载数据:使用 pandas
读取 CSV 文件。
import pandas as pd
data = pd.read_csv(data_file)
print(data)
输出:
NumRooms Alley Price
0 NaN Pave 127500
1 2.0 NaN 106000
2 4.0 NaN 178100
3 NaN NaN 140000
.
对数值缺失值用均值插值,对类别缺失值编码为独立特征。
分离输入与输出
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
填充数值缺失值:用列均值填充 NumRooms
的 NaN
:
inputs = inputs.fillna(inputs.mean())
print(inputs)
# 输出:
NumRooms Alley
0 3.0 Pave
1 2.0 NaN
2 4.0 NaN
3 3.0 NaN
编码类别缺失值:将 Alley
列的 NaN
转为独立类别
inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)
# 输出:
NumRooms Alley_Pave Alley_nan
0 3.0 1 0
1 2.0 0 1
2 4.0 0 1
3 3.0 0 1
.
最终将数据转为张量格式,适配后续模型训练。
import torch
X = torch.tensor(inputs.to_numpy(dtype=float))
y = torch.tensor(outputs.to_numpy(dtype=float))
print("X:", X)
print("y:", y)
# 输出:
X: tensor([[3., 1., 0.],
[2., 0., 1.],
[4., 0., 1.],
[3., 0., 1.]], dtype=torch.float64)
y: tensor([127500., 106000., 178100., 140000.], dtype=torch.float64)
.
pandas
软件包是Python中常用的数据分析工具中,pandas
可以与张量兼容。
用pandas
处理缺失的数据时,我们可根据情况选择用插值法和删除法。
.
声明:资源可能存在第三方来源,若有侵权请联系删除!