没有处理缺失数据的具体规则。但是,您可能需要考虑以下几点:
1。如果某列的数据有超过 70% 的缺失值,您可能需要删除该列。
2。如果列数据的分布本质上是对称的,您可以考虑将缺失值替换为均值:
test = pd.DataFrame({'A': [1, 2, np.nan, 3, 4, 7, 11], 'B': [1, 4, 5, 7, 12, 45, 6], 'Group':['c', 'd', 'd', 'c', 'd', 'c', 'd']})
test
A B Group
0 1.0 1 c
1 2.0 4 d
2 NaN 5 d
3 3.0 7 c
4 4.0 12 d
5 7.0 45 c
6 11.0 6 d
test['A'].fillna(test['A'].mean(), inplace=True)
test
A B Group
0 1.000000 1 c
1 2.000000 4 d
2 4.666667 5 d
3 3.000000 7 c
4 4.000000 12 d
5 7.000000 45 c
6 11.000000 6 d
或者您可以对数据进行分组并使用分组平均值:
test['A'].fillna(test.groupby('Group')['A'].transform('mean'), inplace=True)
test
A B Group
0 1.000000 1 c
1 2.000000 4 d
2 5.666667 5 d
3 3.000000 7 c
4 4.000000 12 d
5 7.000000 45 c
6 11.000000 6 d
3。如果该列的数据有偏差,您可以考虑使用中值来填充缺失值。 (将上述命令中的 'mean' 替换为 'median')。
4。或者,您也可以查看无监督方法,例如聚类。在这里,一旦您的数据被聚类,您就可以使用聚类的众数或平均值并相应地替换您的缺失数据。
希望这会有所帮助。