本文是学习李沐动手学深度学习v2视频及教材的笔记。
课程网址:课程安排 - 动手学深度学习课程 (d2l.ai)
本笔记是创建一个人工数据集,并存储在csv(用逗号分割)文件中。
1. 首先创建data文件夹和csv文件,并将数据写入csv文件
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('YEAR, MONTH, DAY, HOUR, MINTUE, SECOND\n')
f.write('2021,11,2,4,32,NA\n')
f.write('2022,7,NA,5,45,PAVE\n')
f.write('2023,NA,5,7,24,NA\n')
f.write('NA,2,7,12,NA,NA\n')
数据的表格如下:
YEAR MONTH DAY HOUR MINTUE SECOND
0 2021.0 11.0 2.0 4 32.0 NaN
1 2022.0 7.0 NaN 5 45.0 PAVE
2 2023.0 NaN 5.0 7 24.0 NaN
3 NaN 2.0 7.0 12 NaN NaN
①通过os.makedirs函数创建一个文件夹。
os.makedirs(path, mode=0o777,exist_ok = False)
path:文件目录名
更多:Python os.makedirs详细介绍-优快云博客
②path可以用os.path.join函数进行连接
t = os.path.join('..','poi','pot')
t
'..\\poi\\pot'
其中,'..'表示当前目录
③with open() as ... :打开文件并写入
f.write('2021,11,2,4,32,NA\n')
写入时最好不要加空格。否则NA不会识别为NAN,在后面input.mean()中不会被计算。
2.导入pandas库可以读取csv文件,所用函数为pd.read_csv()
import pandas as pd
data = pd.read_csv(data_file)
data
YEAR MONTH DAY HOUR MINTUE SECOND
0 2021.0 11.0 2.0 4 32.0 NaN
1 2022.0 7.0 NaN 5 45.0 PAVE
2 2023.0 NaN 5.0 7 24.0 NaN
3 NaN 2.0 7.0 12 NaN NaN
3.对数字部分求均值补值。
inputs, outputs = data.iloc[:,0:5],data.iloc[:,5]
inputs = inputs.fillna(inputs.mean())
inputs
out:
YEAR MONTH DAY HOUR MINTUE
0 2021.0 11.000000 2.000000 4 32.000000
1 2022.0 7.000000 4.666667 5 45.000000
2 2023.0 6.666667 5.000000 7 24.000000
3 2022.0 2.000000 7.000000 12 33.666667
iloc():提取数据
fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
更多:Python-pandas的fillna()方法-填充空值_pandas针对某一列填充空值-优快云博客
fillna(inputs.mean())是指用inputs数据的均值来补充NA/NAN值
4.将字符部分的PAVE和NAN字符用数字进行表示
outputs = pd.get_dummies(outputs, dummy_na = True)
outputs
out:
PAVE NaN
0 0 1
1 1 0
2 0 1
3 0 1
pd.get_dummies()对PAVE和NAN进行one hot 编码