我有一个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行。当然,在我的原始数据集中,相关性(或去相关性)不像示例中那样高,但我没有找到基于此信息设置值的方法。
1条答案
按热度按时间nhaq1z211#
这可以被视为机器学习问题,更具体地说是监督分类。
您有一个具有已知标签(
error_text
)的训练数据集(sub_df
)。任务是派生一个规则,用于从其他列(a
、b
、c
)(在此上下文中称为要素)推断标签(也称为目标)。您必须假设此规则与缺失标签数据的原因无关。目标是分类的,所以这是一个分类问题。所有的特征都是分类的,所以你需要考虑它们的编码。如果类别具有有意义的顺序和彼此之间的距离,那么将它们编码为数字并将其视为数字可能是有意义的。还要考虑适当的缩放。否则,如果类别很少,则one-hot编码是常见的选择。
根据这些决策,选择合适的分类算法。例如,随机森林分类器可能是一个不错的选择,就像scikit-learn中实现的那样。查看文档并从中学习。