Python中isnull函數(shù)的用法是判斷數(shù)據(jù)是否為空值,返回一個(gè)布爾值。在pandas中,isnull函數(shù)可以用于Series、DataFrame和Panel對(duì)象。對(duì)于Series對(duì)象,isnull函數(shù)返回一個(gè)布爾值數(shù)組,其中True表示空值,F(xiàn)alse表示非空值。對(duì)于DataFrame和Panel對(duì)象,isnull函數(shù)返回一個(gè)布爾值DataFrame或Panel。
_x000D_使用isnull函數(shù)可以幫助我們快速檢查數(shù)據(jù)中是否存在空值,從而更好地進(jìn)行數(shù)據(jù)清洗和分析。下面我們來(lái)看一些常見(jiàn)的使用場(chǎng)景。
_x000D_## 判斷DataFrame中是否存在空值
_x000D_我們可以使用isnull函數(shù)來(lái)判斷DataFrame中是否存在空值。例如,我們有一個(gè)包含三列的DataFrame:
_x000D_`python
_x000D_import pandas as pd
_x000D_import numpy as np
_x000D_df = pd.DataFrame({'A': [1, 2, np.nan],
_x000D_'B': [4, np.nan, np.nan],
_x000D_'C': [7, 8, 9]})
_x000D_ _x000D_我們可以使用isnull函數(shù)來(lái)檢查每個(gè)元素是否為空值:
_x000D_`python
_x000D_print(df.isnull())
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_A B C
_x000D_0 False False False
_x000D_1 False True False
_x000D_2 True True False
_x000D_ _x000D_可以看到,第一行沒(méi)有空值,第二行有一個(gè)空值,第三行有兩個(gè)空值。
_x000D_## 判斷Series中是否存在空值
_x000D_我們也可以使用isnull函數(shù)來(lái)判斷Series中是否存在空值。例如,我們有一個(gè)包含三個(gè)元素的Series:
_x000D_`python
_x000D_s = pd.Series([1, np.nan, 3])
_x000D_ _x000D_我們可以使用isnull函數(shù)來(lái)檢查每個(gè)元素是否為空值:
_x000D_`python
_x000D_print(s.isnull())
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_0 False
_x000D_1 True
_x000D_2 False
_x000D_dtype: bool
_x000D_ _x000D_可以看到,第二個(gè)元素是空值。
_x000D_## 判斷Panel中是否存在空值
_x000D_對(duì)于Panel對(duì)象,isnull函數(shù)的用法與DataFrame類似。例如,我們有一個(gè)包含兩個(gè)DataFrame的Panel:
_x000D_`python
_x000D_data = {'Item1': pd.DataFrame(np.random.randn(4, 3)),
_x000D_'Item2': pd.DataFrame(np.random.randn(4, 2))}
_x000D_p = pd.Panel(data)
_x000D_ _x000D_我們可以使用isnull函數(shù)來(lái)檢查每個(gè)元素是否為空值:
_x000D_`python
_x000D_print(p.isnull())
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_Item1 Item2
_x000D_0 False False
_x000D_1 False False
_x000D_2 False False
_x000D_3 False True
_x000D_Item1 Item2
_x000D_0 False True
_x000D_1 False True
_x000D_2 False True
_x000D_3 False True
_x000D_Item1 Item2
_x000D_0 False False
_x000D_1 False False
_x000D_2 False False
_x000D_3 False True
_x000D_ _x000D_可以看到,第一個(gè)DataFrame中沒(méi)有空值,第二個(gè)DataFrame中有一個(gè)空值。
_x000D_## 常見(jiàn)問(wèn)題解答
_x000D_### 1. 如何判斷DataFrame中某一列是否存在空值?
_x000D_我們可以使用isnull函數(shù)和any函數(shù)來(lái)判斷DataFrame中某一列是否存在空值。例如,我們有一個(gè)包含三列的DataFrame:
_x000D_`python
_x000D_import pandas as pd
_x000D_import numpy as np
_x000D_df = pd.DataFrame({'A': [1, 2, np.nan],
_x000D_'B': [4, np.nan, np.nan],
_x000D_'C': [7, 8, 9]})
_x000D_ _x000D_我們可以使用isnull函數(shù)來(lái)檢查每個(gè)元素是否為空值,然后使用any函數(shù)來(lái)判斷每列是否存在空值:
_x000D_`python
_x000D_print(df.isnull().any())
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_A True
_x000D_B True
_x000D_C False
_x000D_dtype: bool
_x000D_ _x000D_可以看到,第一列和第二列存在空值。
_x000D_### 2. 如何刪除DataFrame中的空值?
_x000D_我們可以使用dropna函數(shù)來(lái)刪除DataFrame中的空值。例如,我們有一個(gè)包含三列的DataFrame:
_x000D_`python
_x000D_import pandas as pd
_x000D_import numpy as np
_x000D_df = pd.DataFrame({'A': [1, 2, np.nan],
_x000D_'B': [4, np.nan, np.nan],
_x000D_'C': [7, 8, 9]})
_x000D_ _x000D_我們可以使用dropna函數(shù)來(lái)刪除空值:
_x000D_`python
_x000D_print(df.dropna())
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_A B C
_x000D_0 1.0 4.0 7
_x000D_ _x000D_可以看到,第二行和第三行被刪除了。
_x000D_### 3. 如何用均值填充DataFrame中的空值?
_x000D_我們可以使用fillna函數(shù)來(lái)用均值填充DataFrame中的空值。例如,我們有一個(gè)包含三列的DataFrame:
_x000D_`python
_x000D_import pandas as pd
_x000D_import numpy as np
_x000D_df = pd.DataFrame({'A': [1, 2, np.nan],
_x000D_'B': [4, np.nan, np.nan],
_x000D_'C': [7, 8, 9]})
_x000D_ _x000D_我們可以使用mean函數(shù)來(lái)計(jì)算每列的均值,然后使用fillna函數(shù)來(lái)填充空值:
_x000D_`python
_x000D_mean = df.mean()
_x000D_print(df.fillna(mean))
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_A B C
_x000D_0 1.0 4.0 7
_x000D_1 2.0 4.0 8
_x000D_2 1.5 4.0 9
_x000D_ _x000D_可以看到,第一列的空值被填充為1.5,第二列的空值被填充為4.0。
_x000D_## 結(jié)論
_x000D_Python中的isnull函數(shù)可以幫助我們快速檢查數(shù)據(jù)中是否存在空值,從而更好地進(jìn)行數(shù)據(jù)清洗和分析。我們可以使用isnull函數(shù)來(lái)判斷Series、DataFrame和Panel對(duì)象中是否存在空值,并使用相關(guān)函數(shù)來(lái)處理空值。
_x000D_