Pandas函数read_csv的参数na_values的用法

一、问题描述

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

二、na_values参数的用法

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

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

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

可以看到,默认情况下,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啦,在线秒回ヾ(◍°∇°◍)ノ゙

  • 96
    点赞
  • 61
    收藏
  • 打赏
    打赏
  • 13
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页
评论 13

打赏作者

宁宁Fingerstyle

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值