Pandas函数read_csv的参数na_values的用法

一、问题描述

我们使用Pandas的read_csv函数读取csv文件的时候,缺失的数据总是会自动填充为NaN.什么样的值会被认为是缺失的数据呢?我们能不能提供一些个性化的缺失数据?这就要用到na_values参数。下面将介绍这个参数。

二、na_values参数的用法

我们有一个文件叫comments.csv,如果普通读入,得到的结果如下图所示:

Pandas函数read_csv的参数na_values的用法_第1张图片

这份数据看起来很完整,没有缺失的值。但是行索引为1的用户的年龄是0,这是不合理的,所以我们也想把它看成缺失值,希望它能变成NaN.这时候我们就可以使用na_values参数了。

官方文档对na_values参数的的解释如下:

Pandas函数read_csv的参数na_values的用法_第2张图片

可以看到,默认情况下,pandas会认为空字符串,还有一系列长得像NaN,长得像null的字符串是缺失值。如果我们想要补充一些自定义的等同于缺失的值,就可以给na_values参数传值。它接受的数据类型有标量(数字),字符串,列表类的,字典。

现在我们希望pandas也把0当成缺失值,用NaN来填充原本为0的单元格。所以我们用整型就可以了

import pandas as pd


df = pd.read_csv('C:\\Users\\22768\\Desktop\\comments.csv',na_values=0)

print(df)

打印的结果如下:

年龄为0的单元格确实被替换成了NaN.但是又出现了一个新的问题。行索引为2的用户,她的性别是0,而现在0被看成缺失值了,也替换成了NaN,这不是我们希望的。

我们可以用字典来解决这个问题。如果na_values的参数是一个字典,那就可以为具体的列来指定缺失值的样子。我们就可以指定在Age这一列,0要被看成缺失值;在Comment这一列,“该用户没有评价”被看成缺失值。代码如下:

df = pd.read_csv('C:\\Users\\22768\\Desktop\\comments.csv',
                 na_values={'Age':0,'Comment':'该用户没有评价'})
print(df)

打印结果如下:

这次的结果就比较合理了。

 

 

如果这篇博文帮到了你,就请给我点个吧(#^.^#)

有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

你可能感兴趣的:(Python学习,pandas,NaN,na_values,DataFrame,read_csv)