Python Pandas中原地填充多個列的缺失值


Python擁有一個名為Pandas的開源內建庫,用於資料分析和操作。它有一個定義良好的資料結構稱為DataFrame,類似於表格。它還可以用於從各種型別的檔案(如CSV、Excel、SQL資料庫等)讀寫資料。

fillna()是一個用於填充Pandas DataFrame或Series中缺失值(NaN/Null)的方法。缺失值將用一個確定的值或其他指定的方法以及方法呼叫一起填充。

語法

object_name.fillna(value, method, limit, axis, inplace, downcast)

fillna()方法返回具有填充缺失值的相同輸入DataFrame或Series。

示例1

我們使用fillna()來填充pandas DataFrame和CSV檔案中缺失的值。fillna()方法使用相同的引數可以同時用於這兩個物件。

注意:

此處附上從csv檔案匯入的資料以供參考。sampel_data.csv

演算法

  • 步驟1 - 識別指定DataFrame或Series中的缺失值(NaN/Null)。

  • 步驟2 - 根據傳遞給fillna()方法的引數填充已識別的缺失值。如果傳遞整數,則它將用於替換所有缺失值。如果傳遞方法,則它將用於填充缺失值。此外,還會填充軸和降維中提到的值。

  • 步驟3 - 返回一個填充了缺失值的新DataFrame或Series。

import pandas as pd
 
# Create a sample DataFrame
df = pd.DataFrame({'C1': [5, 23, 33, np.NaN], 'C2': [26, np.NaN, 7, 18], 'C3': [11, 30, np.NaN,112]})
print(df)
 
#Or read a dataset from a csv or any other file
df1=pd.read_csv("sample_data.csv")
 
# Fill NaN values in C1 and C2 with 0, and in C3 with 1
df.fillna(value={'C1': 0, 'C2': 0, 'C3': 1}, inplace=True)
 
#Filling NaN values in df1 with a random integer
df1.fillna(111)
 
# Print the updated DataFrame to see the difference
print(df)

輸出

#Before filling missing values
 	C1    C2 	C3
0       5.0   NaN   11.0
1      23.0  89.0   30.0
2      33.0   7.0.   NaN
3       NaN  18.0  112.0
 
#After filling missing values
 	 C1    C2    C3
0        5.0   0.0   11.0
1       23.0  89.0   30.0
2       33.0   7.0    1.0
3        0.0  18.0  112.0

示例2

我們將使用一個包含關於學生資訊的資料集,並使用fillna()方法用列值的平均值填充缺失值。我們將隨機選擇資料集,而不是像示例1那樣從CSV檔案匯入。

import numpy as np
import pandas as pd

# Create a sample DataFrame with missing values
data = {
   'RollNo': [1, 2, 3, 4, 5],
   'Age': [10, np.NaN, 5, 8, 12],
   'Marks': [100, 200,np.NaN, 150,np.NaN]
}

data= pd.DataFrame(data)

#Original DataFrame with missing values
print(data)

# Fill missing values with mean values
data1 = data.fillna(data.mean())
print(data1)

輸出

RollNo   Age  Marks
0       1  10.0  100.0
1       2   NaN  200.0
2       3   5.0    NaN
3       4   8.0  150.0
4       5  12.0    NaN
RollNo    Age  Marks
0       1  10.00  100.0
1       2   8.75  200.0
2       3   5.00  150.0
3       4   8.00  150.0
4       5  12.00  150.0

結論

您可以使用Pandas中的fillna()方法填充DataFrame中單列或多列的缺失值,也可以用於填充Series中的缺失值。您可以指定用於填充的值以及如何使用各種引數填充值。

Pandas還有其他方法,如replace(),它用平均值、中位數、眾數或任何此類值替換缺失值。兩者之間的區別在於fillna()專門設計用於處理缺失值,而replace()更通用,可以用於填充物件中的任何值。因此,fillna()方法是處理資料中缺失值的更好選擇。

更新於:2023年8月23日

3K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.