python dataframe是否为空_[数据清洗] pandas dataframe空值的处理方法

基础篇:

#下文以df代表dataframe的名字:

1. 确定空值位置:

在导入dataframe之后,一个非常好的习惯就是及时检查一下每一列是否有空值,用下面的语句可以简单实现这个需求:

df.isnull().any()

上面的这行代码可以返回各个列是否有空值的情况,比如下面这样:

Unnamed: 0

A False

B True

C True

D False

dtype: bool

这样我们可以得知, B列和C列有空值存在, 在用到这两列数据的时候,需要考虑对空值的处理方法。

2. 处理空值的两种办法:删除 or 填充

删除:

删除空值主要使用下面这个语句:

df.dropna()

#Signature: df.dropna(axis=0, how='any',

thresh=None, subset=None, inplace=False)

axis代表删除整行or整列,默认axis = 0, 也就是删除行。

how默认为‘any’, 也就是删除任何含有空值的行/列。此外how = ‘all’, 则会删除全部为空值的行/列。

thresh可以用来限定删除有几个空值的行/列,如thresh = 3, 则删除有3个空值的行/列。

subset非常有用,如果想删除所有列A 空值所在行:

df.dropna(axis = 0, subset = ['A'] )

填充:

填充空值主要使用下面这个语句:

df.fillna( )

#Signature: df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

value可以是一个值(标量),比如我们用一列的均值来填充该列的所有空值:

df['column_name'].fillna(value = df['column_name'].mean()]

value 也可以是 dict, Series, 甚至 DataFrame,比如我们可以用字典来实现对不同的列填充不同的值:

df.fillna({'column_name_A': 0,'column_name_B': 100})

两个series相加,根据常识我们可以知道index不同的地方会变成空值,如下图

s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])

s2 = pd.Series([10, 20, 30, 40], index=['c', 'd', 'e', 'f'])

s1 + s2

a NaN

b NaN

c 13.0

d 24.0

e NaN

f NaN

如果我们希望空值的地方被原series中的值填充,即得到以下效果:

a 1

b 2

c 13

d 24

e 30

f 40

可以使用add而不是加号来进行:

s1.add(s2, fill_value = 0)

希望这篇小文章能够帮助到你~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值