bre*_*sta 5 python missing-data dataframe pandas
error_text我有一个 pandas DataFrame,其中包含许多行和一列名为包含多个空值的字符串。我想根据该列与另一列的相关性来填充这些缺失的数据。
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
Run Code Online (Sandbox Code Playgroud)
首先,我创建了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
Run Code Online (Sandbox Code Playgroud)
然后我将该error_text列转换为类别并计算相关性:
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
Run Code Online (Sandbox Code Playgroud)
我在想是否有一种方法可以error_text根据其他列的数据来填充该列中缺失的数据,例如最后一行将填充“other_text”,因为其他值等于第2行。当然,在我的原始数据集中,相关性(或去相关性)并不像示例中那样高,但我没有找到基于此信息设置值的方法。
这可以被视为机器学习问题,更具体地说是监督分类问题。
您有一个sub_df带有已知标签 ( ) 的训练数据集 ( error_text)。任务是导出一条规则,用于从其他列(a、b、c)(在本上下文中称为特征)推断标签(也称为目标)。您必须假设此规则与丢失标签数据的原因无关。
目标是分类的,所以这是一个分类问题。所有特征都是分类的,因此您需要考虑它们的编码。如果类别之间具有有意义的顺序和距离,则将它们编码为数字并按数字对待它们可能是有意义的。还要考虑适当的缩放。否则,如果类别很少,one-hot 编码是一种常见的选择。
根据这些决定,选择合适的分类算法。例如,随机森林分类器可能是一个不错的选择,如scikit-learn中实现的那样。查看文档并从那里获取它。