根据与其他列的相关性填充pandas dataframe缺少的数据

93ze6v8z  于 2023-04-10  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个pandas DataFrame,其中包含许多行和一列名为error_text的字符串,其中包含几个空值。我想根据这一列与另一列的相关性来填充这些缺失的数据。

mydf_example = pd.DataFrame({'a':[1,2,3,4,5,6,3],'b':[10,20,30,40,50,60,30],'c':['a','b','c','d','e','f','c'], 'error_text':[np.nan,'some_text','other_text',np.nan,'more_text','another_text',np.nan]})
mydf_example

    a   b   c   error_text
0   1   10  a   NaN
1   2   20  b   some_text
2   3   30  c   other_text
3   4   40  d   Nan
4   5   50  e   more_text
5   6   60  f   another_text
6   3   30  c   NaN

首先,我创建了一个sub_df,删除丢失的数据行:

mydf_example = mydf_example.dropna()
mydf_example

    a   b   c   error_text
1   2   20  b   some_text
2   3   30  c   other_text
4   5   50  e   more_text
5   6   60  f   another_text

然后我将error_text列转换为category并计算相关性:

mydf_example['error_text'] = mydf_example['error_text'].astype('category').cat.codes
mydf_example.corr()['error_text']

a            -0.989949
b            -0.989949
error_text    1.000000

我在想是否有一种方法可以基于其他列的数据填充error_text列中缺失的数据,例如,最后一行将填充“other_text”,因为其他值等于第2行。当然,在我的原始数据集中,相关性(或去相关性)不像示例中那样高,但我没有找到基于此信息设置值的方法。

nhaq1z21

nhaq1z211#

这可以被视为机器学习问题,更具体地说是监督分类。
您有一个具有已知标签(error_text)的训练数据集(sub_df)。任务是派生一个规则,用于从其他列(abc)(在此上下文中称为要素)推断标签(也称为目标)。您必须假设此规则与缺失标签数据的原因无关。
目标是分类的,所以这是一个分类问题。所有的特征都是分类的,所以你需要考虑它们的编码。如果类别具有有意义的顺序和彼此之间的距离,那么将它们编码为数字并将其视为数字可能是有意义的。还要考虑适当的缩放。否则,如果类别很少,则one-hot编码是常见的选择。
根据这些决策,选择合适的分类算法。例如,随机森林分类器可能是一个不错的选择,就像scikit-learn中实现的那样。查看文档并从中学习。

相关问题