如何检测大熊猫上的功能重复

时间:2018-04-17 17:17:43

标签: python pandas feature-selection

这是我的数据

Id   feature1  feature2  feature3 feature4 feature5 feature6
1           4         5         7        7        4        5
2           5         6         8        8        5        5

我想要的是删除重复数据

Id   feature1  feature2  feature3 feature6
1           4         5         7        5
2           5         6         8        5

如果还要描述重复,那就更好了

feature3 is same with feature4
feature2 is same with feature5

通常,我使用seaboarn corplot,但是当功能增长超过100时,我会感到困惑

import seaborn as sns
ax = sns.heatmap(df)

3 个答案:

答案 0 :(得分:1)

您可以使用df.T转置数据框,使用drop_duplicates,然后再次转置数据框:

In [6]: df.T.drop_duplicates().T
Out[6]:
   Id  feature1  feature2  feature3  feature6
0   1         4         5         7         5
1   2         5         6         8         5

答案 1 :(得分:1)

您可以使用T然后groupby值,注意drop_duplicatesduplicated,不会提供对,这意味着他们只会回复重复的值(不重复)基)

s=df.T.reset_index().groupby([0,1])['index'].apply(tuple)
s[s.str.len()>=2].apply(lambda  x : '{0[0]} is same with {0[1]}'.format(x))
Out[797]: 
0  1
4  5    feature1 is same with feature5
7  8    feature3 is same with feature4
Name: index, dtype: object

答案 2 :(得分:0)

使用 drop_duplicates()方法的可能解决方案。但是,它会查找行,因此您应将其应用于转置的数据帧,然后再次转置结果。例如:

data = [
    [4, 5, 7, 7, 4, 5],
    [5, 6, 8, 8, 5, 5],
     ]

columns=['feature1', 'feature2', 'feature3', 'feature4', 'feature5', 'feature6']

df = pd.DataFrame(data, columns)

df.T.drop_duplicates().T

为了显示哪些功能重复,您可以使用重复()方法

df.T.duplicated().T

将显示:

feature1    False
feature2    False
feature3    False
feature4     True
feature5     True
feature6    False
dtype: bool