pythonimport pandas as pddata = {'category': ['A', 'B', 'C', 'A', pd.NA, 'B', 'C', pd.NA, pd.NA]}df = pd.DataFrame(data)mode_value = df['category'].mode()[0]df['category'] = df['category'].fillna(mode_value)在这个案例中,我们创建了一个包含类别型缺失值的DataFrame。然后,通过`mode()`函数找到了该变量的众数,并使用`fillna()`函数将缺失值用众数进行填充。随机插补随机插补是指用该变量的其他非缺失值随机选择一个值来填充缺失值。这种插补方法可以保持数据的随机性,但可能会引入一定的不确定性。下面是一个使用随机插补的案例代码:pythonimport pandas as pdimport numpy as npdata = {'category': ['A', 'B', 'C', 'A', pd.NA, 'B', 'C', pd.NA, pd.NA]}df = pd.DataFrame(data)non_missing_values = df['category'].dropna().valuesrandom_value = np.random.choice(non_missing_values)df['category'] = df['category'].fillna(random_value)在这个案例中,我们首先获取了该变量的所有非缺失值,并将其转化为数组。然后,通过`choice()`函数随机选择一个非缺失值,并使用`fillna()`函数将缺失值用随机选择的值进行填充。模型插补模型插补是指通过建立模型来预测缺失值,并将预测值作为填充值。这种插补方法需要根据具体的情况选择合适的模型,如回归模型、分类模型等。下面是一个使用模型插补的案例代码:pythonimport pandas as pdfrom sklearn.linear_model import LogisticRegressiondata = {'category': ['A', 'B', 'C', 'A', pd.NA, 'B', 'C', pd.NA, pd.NA]}df = pd.DataFrame(data)known_values = df.dropna()unknown_values = df[df.isnull().any(axis=1)]X = known_values.dropna().values.reshape(-1, 1)y = known_values['category'].valuesmodel = LogisticRegression()model.fit(X, y)predicted_values = model.predict(unknown_values.dropna().values.reshape(-1, 1))df.loc[df['category'].isnull(), 'category'] = predicted_values在这个案例中,我们首先将含有缺失值的行和不含缺失值的行分别作为已知值和未知值。然后,使用逻辑回归模型来拟合已知值,并预测未知值的类别。最后,将预测值填充到原始DataFrame中的缺失值位置。在数据分析中,处理类别型缺失值是一个重要的环节。本文介绍了众数插补、随机插补和模型插补三种常用的插补方法,并通过案例代码进行了演示。根据具体的情况选择合适的插补方法能够有效地处理类别型缺失值,提高数据分析的准确性和可靠性。