os.makedirs() 方法用于递归创建目录
os.path.isfile(path)
如果path是一个存在的文件,返回True。否则返回False
os.path.join(path1[, path2[, ...]])
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
>>> import os
>>> path = "F:/gts/gtsdate/"
>>> b = os.path.join(path,"/abc")
>>> b
'F:/abc'
>>> c= os.path.join(path,"abc")
>>> c
'F:/gts/gtsdate/abc'
>>> os.path.join('c:\\', 'csv', 'test.csv')
'c:\\csv\\test.csv'
1.将数据集按行写入CSV文件
import os
os.makedirs(os.path.join('D:\\随意\\source\\python', 'deepdate'), exist_ok=True)
data_file = os.path.join('D:\\随意\\source\\python', 'deepdate', '数据集.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')
2.读取
import pandas as pd
data = pd.read_csv(data_file)
print(data)
3.处理缺失值
mean()函数功能:求取均值
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<class numpy._globals._NoValue at 0x40b6a26c>)
axis 不设置值,对 m*n 个数求均值,返回一个实数
axis = 0:压缩行,对各列求均值,返回 1* n 矩阵
axis =1 :压缩列,对各行求均值,返回 m *1 矩阵
np.mean(#name)
# 对所有元素求均值
np.mean(#name,0
)
# 压缩行,对各列求均值
np.mean(#name,1
)
# 压缩列,对各行求均值
pandas中
#name.fillna() #填充缺失值
常数填充缺失值
DataFrame.fillna(0) 用0代替DataFrame中的缺失值NaN
字典填充
#name.fillna({0:10,1:20,2:30} #0列10填充,1列20填充,2列30填充inplace参数的取值:True、Falsedom
True:直接修改原对象学习
False:建立一个副本,修改副本,原对象不变(缺省默认)
DataFrame.fillna(0,inplace=True) #不创建副本,直接修改原对象
fillna()函数详解 - JavaShuo
- loc用标签索引
- iloc用列号索引
import pandas as pd import numpy as np from numpy import nan as NaN df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]]) print(df1) print(df1.iloc[0]) #取0行 print("-----") print(df1.iloc[:,:2]) #取所有行,【0,2)列
“NaN”项代表缺失值。为了处理缺失的数据,典型的方法包括插值和删除,其中插值用替代值代替缺失值。而删除则忽略缺失值。
插值:
inputs= data.iloc[:, 0:2] #取【0,2)列
outputs = data.iloc[:, 2] #取第二列
print(inputs)
print("------")
print(outputs)
print("------")
inputs = inputs.fillna(inputs.mean()) #input.mean()对input求均值,即¥+2=6/2=3
print(inputs)
pandas的get_dummies
pd.get_dummies( , ) #离散分类
import pandas as pd import numpy as np from numpy import nan as NaN df1=pd.DataFrame([[1,2,3],['x','y',2],['y',NaN,NaN],[8,8,NaN]]) print(df1) s=pd.get_dummies(df1[0],prefix='分类') #将df1的第一列分类,并用离散的形式表达 print(s)
对于inputs
中的类别值或离散值,我们将“NaN”视为一个类别。由于“巷子”(“Alley”)列只接受两种类型的类别值“Pave”和“NaN”,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)
print(inputs)
四.转换为张量格式
import torch
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)