Dive Into Deep Learning——2.2数据预处理

一、读取数据集

os.makedirs(dir_name2, exist_ok=True):功能和os.mkdir一样也是用于新建文件夹,但是使用起来更方便,功能也更多一点。

os.makedirs:可以递归的创建多个文件夹
os.makedirs:的exist_ok参数设置为True时,可以自动判断当文件夹已经存在就不创建
os.path.join('..', 'data')----存储在CSV(逗号分隔值)文件 ../data/house_tiny.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: #打开data_file文件,记作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')

二、处理缺失值

inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)
  • dummy_na : bool, default False,增加一列表示空缺值,如果False就忽略空缺值

get_dummies的用法

   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

三、练习

创建包含更多行和列的原始数据集。

  1. 删除缺失值最多的列。

  2. 将预处理后的数据集转换为张量格式。

练习第一问题解
统计缺失值的方法
 

null_all = data.isnull().sum()

#isnull函数检查数据是否有缺失返回布尔值,元素为空或者NaN返回Ture,否则就是False

#data.isnull().any()判断哪些列包含缺失值,该列存在缺失值则返回True,反之False

#data.isnull().sum()返回每列缺失值的数量

删除缺失值

#dropna(thresh=2),thresh设置阈值,缺失值个数大于该阈值整行(axis=0)或整列(axis=1)才会被删除

drop函数的相关参数说明:
参数axis=0,表示对行进行操作,如对列进行操作则更改默认参数为axis=1。

参数inplace=False,表示该删除操作不改变原数据,返回一个执行删除操作后的新dataframe,如直接对原数据进行删除操作,则更改默认参数为inplace=True。

import pandas as pd
import os
import torch

os.makedirs(os.path.join('F:/Pycharm/DIVE INTO DL', 'data2.2'), exist_ok=True)
data_file = os.path.join('F:/Pycharm/DIVE INTO DL', 'data2.2', '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('NA,NA,178100\n')
    f.write('NA,NA,140000\n')
    f.write('2,NA,106000\n')
    f.write('NA,NA,178100\n')
    f.write('NA,NA,140000\n')
    f.write('NA,NA,178100\n')
    f.write('NA,NA,140000\n')

data = pd.read_csv(data_file)
# 处理缺失值,首先删除缺失值最多的列
col_null = data.isna().sum(axis=0)
col_null_dict = col_null.to_dict()#转为字典
#col_max = col_null.max(axis=0)#求出按列求和的缺失值最大值

max_key = max(col_null_dict.keys(),key=col_null_dict.get)
#这里传入col_null_dict效果也一样,都是传入键值进行迭代
#后面表示比较的标准,就等于get(keys)。可以理解为找到最大值对应的键之后,返回给key
print(col_null)
print('最大值所对应键为:'+ max_key)
del data[max_key]
print('删除缺失值最多的一列后,数据为:')
print(data)
#由于data数据不是数值格式,所以不能直接用data_tensor = torch.tensor(data)转成张量格式
data_post = data.iloc[:, :2]#此时的data_post不是数值类型

data_tensor = torch.tensor(data_post.values)#先转换成数值类型
print('转成张量格式后:')
print(data_tensor)

这个仅仅对原始数据集进行了删除缺失值最多的那一列这一个操作,并没有处理未删除的缺失值
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值