Pandas 过滤空值
在本文中,我们将介绍如何使用Pandas(是一个Python库,用于数据处理和分析)来过滤空值。
阅读更多:Pandas 教程
什么是空值?
空值指的是数据集中缺失了数据的位置。比如,如果我们有一列数据代表一些学生的年龄,但是有一些学生的年龄数据缺失了,这些缺失的位置就是空值。
在Pandas中,空值用NaN(Not a Number)来表示。当我们读取数据时,空值可能被解析成None或者空字符串”。
过滤空值
在进行数据分析和可视化前,我们需要清理数据集中的空值。在Pandas中,有两个主要的函数可以用来过滤空值:dropna()和fillna()。
dropna()
dropna()函数可以用来删除包含空值的行或列。它的语法如下:
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数解释:
axis:指定删除行还是列。0表示删除行,1表示删除列,默认为0;how:指定删除条件。可以为以下几种值:- ‘any’:只要有空值,就删除;
- ‘all’:全部是空值才删除;
thresh:指定删除行或列的最小非空值个数。默认为None,表示不启用该条件;subset:指定删除时需要考虑空值的列。默认为None,表示对所有列进行处理;inplace:是否在原数据上进行修改。默认为False,表示返回删除后的新数据。
示例:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None, 4],
'B': [5, None, None, 8],
'C': [None, None, None, None]})
# 删除包含任何空值的行
df.dropna()
# 删除全部是空值的列
df.dropna(axis=1, how='all')
# 删除至少有两个空值的行(thresh参数)
df.dropna(thresh=2)
# 只考虑列B和C,并删除包含任何空值的行
df.dropna(subset=['B', 'C'])
fillna()
fillna()函数可以用来填充空值。它的语法如下:
df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
参数解释:
value:指定填充空值的值。可以为以下几种类型:- 标量值:所有的空值都会被替换为该标量值;
- 字典:可以指定不同列(或行)的填充值;
- Series对象:使用Series对象的值进行填充;
method:指定填充方法。可以为以下几种值:- ‘ffill’ / ‘pad’:用前一个非空值进行填充;
- ‘bfill’ / ‘backfill’:用后一个非空值进行填充;
axis:指定填充方向。0表示纵向填充,1表示横向填充;inplace:是否在原数据上进行修改。默认为False,表示返回填充后的新数据;limit:指定连续空值的最大填充数;downcast:指定填充后的数据类型。
示例:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None, 4],
'B': [5, None, None, 8],
'C': [None, None, None, None]})
# 用0填充所有空值
df.fillna(0)
# 对不同列使用不同的填充值
df.fillna({'A': 0, 'B': 1, 'C': 2})
# 使用前一个非空值df.fillna(method='ffill')
# 使用后一个非空值
df.fillna(method='bfill')
# 横向填充
df.fillna(method='ffill', axis=1)
# 只填充第一次出现的空值
df.fillna(method='ffill', limit=1)
总结
过滤空值是数据分析和可视化中的一个重要步骤。在Pandas中,我们可以使用dropna()和fillna()函数来处理空值。dropna()函数可以删除包含空值的行或列,fillna()函数可以填充空值。在使用这两个函数时,需要根据实际情况合理设置参数,以达到最好的效果。
极客笔记