【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)

Motivation

和某个大佬采集的数据是csv格式的,之前没处理过csv格式的数据。拿来写神经网络训练的时候踩了不少坑,这里记录一下,也方便后来人学习。

Pandas处理csv文件

处理csv文件的包应该有不少,这里就做一个pandas的教程了(其他的没用过hhhh)。这里我以我的一个数据为例演示一些常用的处理方法。

文件读取

  1. 语句:
    origin_data = pd.read_csv("origin_data.csv", na_values=" NaN")
    
  2. csv文件中的空值(NaN)是什么? 这里是一个大坑。建议大家在读csv的时候用我下面这个参数,把缺失的值统一设置为"NaN"。这样在后面如果需要手动过滤掉缺失值的时候可以索引到位置。之前试过,如果不设置这个参数,缺失值不是False、0、"NaN"中的任何一个。
  3. 结果:
    【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第1张图片

dataframe索引某一列

pandas读进来的csv数据会被封装成一个叫dataframe的格式,这种格式可以转为numpy数组。我们先来看如何操作dataframe。

  1. 语句: 使用data.name来根据标签索引某一列。
    origin_data.Height
    
  2. 结果:
    【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第2张图片

删除某一列

  1. 语句: del关键字加标签删除某一列
    del origin_data["Weight change"]
    
  2. 结果: 可以看到"Weight change"一列已经被删除
    【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第3张图片

删除缺失值所在的行/列

对于缺失值,一般来说可以采用插值的办法补全或直接丢弃该条数据。这里以删除NaN值所在的行为例做演示。

  1. 语句: .dropna()方法,默认删除有NaN值的行。可以设置.dropna(axis=1)删除有NaN值的列。其他用法可以自行查阅。这个用法是最常用的。
    origin_data = origin_data.dropna()
    
  2. 结果: 可以看到行变少了,没有NaN值了。
    【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第4张图片

修改索引

在对数据做了一些处理之后,数据的索引很有可能就直接乱掉了。比如这里:我们删掉了一些行,所以索引就是不连续的了。这时候如果我们按照索引去遍历数据就会报错。因此一般在数据处理完后都要重置一下索引。
【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第5张图片

  1. 语句: 这里重点说一下drop参数。drop参数为True表示直接丢掉索引列不要了,然后重置顺序。drop参数为False表示重置索引,并保留索引列。
    origin_data = origin_data.reset_index(drop=True)
    
  2. 结果:
    【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第6张图片
    【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第7张图片

按条件修改值

我们在做数据预处理的时候,需要把一些非数字的值转为数字。比如性别、省市等。这里以性别为例,我希望把M/F转化为0/1,以便神经网络来处理。

  1. 语句: .loc[row, flag]获取需要索引的数据,而后通过条件判断来修改值
    for i in range(len(origin_data)):
    	origin_data.loc[i, 'Sex'] = 1 if origin_data.loc[i, 'Sex'] == "F" else 0
    
  2. 结果: 这里我改了两列的数据,结果如图所示
    【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)_第8张图片

你可能感兴趣的:(效率工具,pandas,机器学习,神经网络,深度学习,算法)