Pandas – 从整个数据框架中剥离空白部分

  • Post category:Python

Pandas-从整个数据框架中剥离空白部分

在进行数据分析时,我们常常需要对数据进行清洗和整理,其中一个重要的步骤是剥离空白部分。Pandas提供了许多函数来处理空白部分,包括空值和不确定值(NaN)。在本攻略中,我们将讲解如何使用Pandas的函数来从整个数据框架中剥离空白部分。

一、处理缺失值

1.1 创建含有缺失值的数据框架

我们先来创建一个含有缺失值的数据框架,作为我们练习的数据源。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[1,2,np.nan], 'B':[np.nan, 5, 6], 'C':[7,8,9]})

这个数据框架中含有几个NaN值,即缺失值。

1.2 查找缺失值

我们可以使用.isna()函数来查找数据框架中的缺失值。这个函数在有缺失值的位置返回True,在有数据的位置返回False。

df.isna()

它的输出结果如下:

       A      B      C
0  False   True  False
1  False  False  False
2   True  False  False

我们可以看到,缺失值所在位置返回True,非缺失值所在位置返回False。

1.3 去除含有缺失值的行

通过使用.dropna()函数,我们可以去除数据框架中含有缺失值的行。这个函数默认去除任意含有缺失值的行,也可以按列进行去除。

df.dropna()

输出结果如下:

     A    B  C
1  2.0  5.0  8

由于第一行和第三行都含有缺失值,所以这两行被去除了。

1.4 填充缺失值

有时候,我们不想去除含有缺失值的行,而是想填充缺失值。这时可以使用.fillna()函数来填充缺失值。这个函数提供了多种填充缺失值的方法,比如:用某个特定值填充、用前一个或后一个非缺失值填充、用平均值或中位数填充等等。下面我们以用列A的平均值填充列A中的缺失值为例,来介绍.fillna()函数的使用方法。

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

输出结果如下:

     A    B  C
0  1.0  5.0  7
1  2.0  5.0  8
2  1.5  6.0  9

我们可以看到,第一行的A列被填充为1.0+2.0/2=1.5。

二、处理空白部分

针对空白部分,我们主要是指数据框架中的空字符串或空值。Pandas提供了多个函数来处理空白部分,包括.replace().dropna().fillna()等等。

2.1 创建含有空白部分的数据框架

我们先来创建一个含有空白部分的数据框架,作为我们练习的数据源。

df_blank = pd.DataFrame({'A':['', 'ball', '','car'], 'B':['apple', '', np.nan, ''], 'C':['', '', '', 'boat']})

这个数据框架中含有空字符串和空值。

2.2 去除含有空白部分的行

我们可以使用.replace()函数来去除含有空字符串的行,使用.dropna()函数来去除含有空值的行。这里我们只演示如何去除含有空字符串的行。

df_cleaned = df_blank.replace('', np.nan).dropna()

我们先使用.replace()函数将数据框架中所有的空字符串替换为缺失值NaN,然后使用.dropna()函数将所有含有缺失值NaN的行去除。

最终输出结果如下:

      A      B     C
1  ball  apple      

我们可以看到,第一行和第三行中含有空字符串,这两行都被去除了。

2.3 填充空白部分

有时候,我们不想去除含有空白部分的行,而是想填充空值或空字符串。这时可以使用.replace()函数和.fillna()函数来填充空白部分。具体方法如下:

a. 用某个特定值填充空白部分

df_cleaned.replace('', 'UNKNOWN')

这个命令可以将空字符串替换为’UNKNOWN’。

b. 用前一个或后一个非空值填充空白部分

df_blank.fillna(method='ffill')

这个命令可以将空值用其前一个非空值来填充。

c. 用平均值、中位数等统计量填充空白部分

这个方法和前面针对缺失值的方法是类似的。以使用列B的平均值来填充列B中的空值为例,我们可以使用如下命令:

df_blank['B'].fillna(value=df_blank['B'].mean())

输出结果如下:

0    apple
1    apple
2    5.5
3    apple
Name: B, dtype: object

我们可以看到,第三行的B列被填充为(5+6)/2=5.5。

三、总结

从整个数据框架中剥离空白部分是数据预处理的重要环节,有助于数据分析效果的提升。在本攻略中,我们结合实例为大家详细介绍了如何使用Pandas的函数处理缺失值和空白部分,希望对大家的实际工作有所帮助。