python pandas消除空值和空格以及 Nan数据替换方法

yipeiwu_com6年前Python基础

在人工采集数据时,经常有可能把空值和空格混在一起,一般也注意不到在本来为空的单元格里加入了空格。这就给做数据处理的人带来了麻烦,因为空值和空格都是代表的无数据,而pandas中Series的方法notnull()会把有空格的数据也纳入进来,这样就不能完整地得到我们想要的数据了,这里给出一个简单的方法处理该问题。

方法1:

既然我们认为空值和空格都代表无数据,那么可以先得到这两种情况下的布尔数组。

这里,我们的DataFrame类型的数据集为df,其中有一个变量VIN,那么取得空值和空格的布尔数组为NONE_VIN。然后通过该布尔数组,就能得到我们要的数据了

NONE_VIN = (df["VIN"].isnull()) | (df["VIN"].apply(lambda x: str(x).isspace()))
df_null = df[NONE_VIN]
df_not_null = df[~NONE_VIN]

方法2:

直接使用Series的.apply方法来修改变量VIN中的每个值。如果发现是空格,就返回Nan,否则就返回原值。

df["VIN"]=df["VIN"].apply(lambda x: np.NaN if str(x).isspace() else x)
df_null = df[df["VIN"].isnull()]
df_not_null = df[df["VIN"].notnull()]

将dataframe中的NaN替换成希望的值

import pandas as pd
df1 = pd.DataFrame([{'col1':'a', 'col2':1}, {'col1':'b', 'col2':2}])
df2 = pd.DataFrame([{'col1':'a', 'col3':11}, {'col1':'c', 'col3':33}])

data = pd.merge(left=df1, right=df2, how='left', left_on='col1', right_on='col1')
print data
# 将NaN替换为None
print data.where(data.notnull(), None)

输出结果:

 col1 col2 col3
0 a  1 11
1 b  2 NaN
 col1 col2 col3
0 a  1 11
1 b  2 None

总结:

方法1的思路就是直接判定是否为空格,把空格纳入到选择中来。方法2的思路是先把空格转换为NaN,然后正常使用.isnull()或.notnull()来得到我们想要的数据。

以上这篇python pandas消除空值和空格以及 Nan数据替换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python+django+rest框架配置创建方法

python+django+rest框架配置创建方法

安装好所需要的插件和包: python、django、pip等版本如下: 采用Django REST框架3.0 1、在python文件夹下D:\python\Lib\site-pack...

浅谈python中对于json写入txt文件的编码问题

最近一直在研究python+selenium+beautifulsoup的爬虫,但是存入数据库还有写入txt文件里面的时候一直都是unicode编码的格式。 接下来就是各种翻阅文档,查找...

PyQt5笔记之弹出窗口大全

PyQt5笔记之弹出窗口大全

本文实现了PyQt5个各种弹出窗口:输入框、消息框、文件对话框、颜色对话框、字体对话框、自定义对话框 其中,为了实现自定义对话框的返回值,使用了信号/槽 本文基于 windows 7 +...

《Python之禅》中对于Python编程过程中的一些建议

《Python之禅》中对于Python编程过程中的一些建议

围绕一门语言,学习它的文化精髓,能让你成为一名更优秀的程序员。如果你还没读过Python之禅(Zen of Python) ,那么打开Python的命令提示符输入import this,...

python创建和使用字典实例详解

字典是python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里。键可以是数字,字符串甚至是元组。1. 创建和使用字典字典可以通过下面的方式创建:...