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()方法是处理数据中缺失值的更好选择。