到目前为止,我们已经介绍了多种技术来处理已经存储在张量中的数据。为了将深度学习应用于解决现实世界的问题,我们通常从预处理原始数据开始,而不是那些精心准备的张量格式数据。在 Python 中流行的数据分析工具中,pandas包是常用的。与庞大的 Python 生态系统中的许多其他扩展包一样, pandas可以与张量一起使用。因此,我们将简要介绍预处理原始数据pandas并将其转换为张量格式的步骤。我们将在后面的章节中介绍更多的数据预处理技术。

2.2.1 读取数据集

例如,我们首先创建一个人工数据集,该数据集存储在 csv(逗号分隔值)文件…/data/house_tiny.csv中。以其他格式存储的数据可以以类似的方式处理。

下面我们将数据集逐行写入一个csv文件。

import osos.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')  # Column namesf.write('NA,Pave,127500\n')  # Each row represents a data examplef.write('2,NA,106000\n')f.write('4,NA,178100\n')f.write('NA,NA,140000\n')

为了从创建的 csv 文件加载原始数据集,我们导入 pandas包并调用read_csv函数。该数据集有四行三列,其中每一行描述了房间的数量(“NumRooms”)、小巷类型(“Alley”)和房子的价格(“Price”)。

# If pandas is not installed, just uncomment the following line:
# !pip install pandas
import pandas as pddata = 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

2.2.2 处理缺失数据

请注意,“NaN”条目是缺失值。为了处理缺失数据,典型的方法包括插补和删除,其中插补用替换值替换缺失值,而删除忽略缺失值。在这里,我们将考虑插补。

iloc通过基于整数位置data的 索引inputs(outputs对于缺失的数值 inputs,我们将“NaN”条目替换为同一列的平均值。

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
print(inputs)
print(outputs)
inputs = inputs.fillna(inputs.mean())
print(inputs)
   NumRooms Alley
0       NaN  Pave
1       2.0   NaN
2       4.0   NaN
3       NaN   NaN
0    127500
1    106000
2    178100
3     14000
Name: Price, dtype: int64NumRooms Alley
0       3.0  Pave
1       2.0   NaN
2       4.0   NaN
3       3.0   NaN

对于 中的分类或离散值inputs,我们将“NaN”视为一个类别。由于“Alley”列只取“Pave”和“NaN”两种分类值,pandas可以自动将该列转换为“Alley_Pave”和“Alley_nan”两列。巷道类型为“Pave”的行会将“Alley_Pave”和“Alley_nan”的值设置为 1 和 0。缺少巷道类型的行会将其值设置为 0 和 1。

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

2.2.3 转换为张量格式

现在inputs和中的所有条目outputs都是数字的,它们可以转换为张量格式。一旦数据采用这种格式,就可以使用我们在第 2.1 节中介绍的张量功能进一步处理它们。

import torchX, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
X, y
(tensor([[3., 1., 0.],[2., 0., 1.],[4., 0., 1.],[3., 0., 1.]], dtype=torch.float64),tensor([127500, 106000, 178100, 140000]))

2.2.4 概括

与庞大的 Python 生态系统中的许多其他扩展包一样, pandas可以与张量一起使用。

插补和删除可用于处理缺失数据。

2.2.5 练习

创建具有更多行和列的原始数据集。

删除缺失值最多的列。

print(data)
m = max(data.isnull().sum(axis=0))
print(m)
data_dropmaxnan = data.dropna(axis = 1, thresh = len(data)+1-m)
print(data_dropmaxnan)
   NumRooms Alley   Price
0       NaN  Pave  127500
1       2.0   NaN  106000
2       4.0   NaN  178100
3       NaN   NaN   14000
3NumRooms   Price
0       NaN  127500
1       2.0  106000
2       4.0  178100
3       NaN   14000

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

1.The best way to read pytorch’s source code?Please give me some tips.

Here are some official API documents that may be helpful.

  • https://pytorch.org/tutorials/beginner/ptcheat.html
  • https://pytorch.org/docs/stable/index.html#

2. how to loop by dataframe’s colomns?I’m trying to use loop to calculate data.isnull().sum().

There are a vast amount of tutorials for pandas. You can just search online. Here is the official guide.
https://pandas.pydata.org/docs/user_guide/index.html#user-guide

参考

https://d2l.ai/chapter_preliminaries/pandas.html

翻译: 2.2 Pandas Pytorch 数据预处理 深入神经网络相关推荐

  1. python数据预处理案例_对pandas进行数据预处理的实例讲解

    参加kaggle数据挖掘比赛,就第一个赛题Titanic的数据,学习相关数据预处理以及模型建立,本博客关注基于pandas进行数据预处理过程.包括数据统计.数据离散化.数据关联性分析 引入包和加载数据 ...

  2. (第一篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform

    前言:在深度学习中,数据的预处理是第一步,pytorch提供了非常规范的处理接口,本文将针对处理过程中的一些问题来进行说明,本文所针对的主要数据是图像数据集. 本文的案例来源于车道线语义分割,采用的数 ...

  3. 深度之眼Pytorch打卡(九):Pytorch数据预处理——预处理过程与数据标准化(transforms过程、Normalize原理、常用数据集均值标准差与数据集均值标准差计算)

    前言   前段时间因为一些事情没有时间或者心情学习,现在两个多月过去了,事情结束了,心态也调整好了,所以又来接着学习Pytorch.这篇笔记主要是关于数据预处理过程.数据集标准化与数据集均值标准差计算 ...

  4. Python应用实战-用pandas实现数据预处理

    数据预处理常用的处理步骤,包括找出异常值.处理缺失值.过滤不合适值.去掉重复行.分箱.分组.排名.category转数值等,下面使用 pandas 解决这些最常见的预处理任务. 找出异常值常用两种方法 ...

  5. Python数据挖掘入门与实践 第三章 用决策树预测获胜球队(一)pandas的数据预处理与决策树(Decision tree)

    作为一个NBA球迷,看到这一章还是挺激动的. 不过内容有点难,研究了半天... 要是赌球的,用这章的预测+凯利公式,是不是就能提升赢钱概率了? 数据预处理 回归书本内容,既然要分析,首先需要有数据: ...

  6. Pytorch 数据预处理

    数据预处理 0. 环境介绍 环境使用 Kaggle 里免费建立的 Notebook 教程使用李沐老师的 动手学深度学习 网站和 视频讲解 小技巧:当遇到函数看不懂的时候可以按 Shift+Tab 查看 ...

  7. pytorch数据预处理

    一,数据加载 数据路径: #coding:utf-8 import torch as t from torch.utils import data import os from PIL import ...

  8. Python—实训day9—使用pandas进行数据预处理

    1合并数据 1.1堆叠合并数据 1.1.1横向堆叠(行对齐,左右拼接) 横向堆叠,即将两个表在X轴向拼接在一起,可以使用concat函数完成,concat函数的基本语法如下. pandas.conca ...

  9. Pandas常用数据预处理方法

    1.日期格式转换 输入日期列为object.string类型,格式是"9/14/2021",需要转换成pandas中可计算的日期格式.实际运行后输出为"2021-09-1 ...

  10. 4.3 pytorch数据预处理:transforms图像增强方法

    一.数据增强概述 二.数据增强方法:裁剪 三.数据增强方法:翻转和旋转 四.数据增强方法:变换 五.transforms方法的选择操作 一.数据增强概述 我们来看图片中的数据增强是怎么样的. 左边的图 ...

最新文章

  1. 自动化运维工具puppet(1)
  2. Android --- 新版本取色器吸管工具点击无效,没反应
  3. [hdu5203]计数水题
  4. Android开发之RecyclerView之刷新数据notifyDataSetChanged失败的问题
  5. 每日一题:leetcode1128.等价多米诺骨牌对数
  6. 枚举enum、NS_ENUM 、NS_OPTIONS
  7. linux笔记-硬链接和符号链接
  8. jq之animate()操作多个属性
  9. 操作系统知识点大总结【管程与死锁】
  10. 开源WEB服务器-lighttpd 1.4.24发布
  11. 2014年读过的那些书
  12. 微信小程序云开发之初体验(详细教程)
  13. mysql创建唯一非聚集索引_创建聚集索引、非聚集索引、唯一索引、唯一键约束...
  14. Linux 之 vim 使用
  15. 「魔窗」问题终于解决了
  16. 流体连续性方程【The Equation of Continuity】
  17. html制作唯品会登陆页面,唯品会网页登陆页面高清,唯品会网页版登陆页面,唯品会网页登陆页面...
  18. idea 流程图出现 Condition \n
  19. 余三码的意义和加法运算
  20. 超详细的VMware虚拟机安装Linux图文教程保姆级

热门文章

  1. @DateTimeFormat 和 @JsonFormat 注解的区别和使用
  2. mysql站内搜索_纯php+mysql打造的站内搜索
  3. titanic数据集_数据可视化泰坦尼克号图表预测
  4. linux系统火狐浏览器加速,火狐浏览器加速的几个设置
  5. ASP.NET MVC中Area的另一种用法
  6. C# Maximum request length exceeded. 产生错误的原因,以及解决方法.
  7. Asp.Net细节性问题精萃[转]
  8. CentOS 安装rz和sz命令
  9. 用CALayer实现下载进度条
  10. 批处理处理oracle数据库脚本导入