从pandas数据帧中删除具有极不平等分布值的列

时间:2016-07-07 13:53:59

标签: python pandas dataframe distribution data-cleaning

给出以下代码:

import numpy as np
import pandas as pd

arr = np.array([
    [1,2,9,1,1,1],
    [2,3,3,1,0,1],
    [1,4,2,1,2,1],
    [2,3,1,1,2,1],
    [1,2,3,1,8,1],
    [2,2,5,1,1,1],
    [1,3,8,7,4,1],
    [2,4,7,8,3,3]
    ])
#    1,2,3,4,5,6 <- Number of the columns.
df = pd.DataFrame(arr)

for _ in df.columns.values:
    print {x: list(df[_]).count(x) for x in set(df[_])}

我想从数据框中删除一个值出现的所有列,而不是列的所有其他值。在这种情况下,我想删除第4列和第6列(请参阅注释),因为数字1的出现频率高于这些列中的所有其他数字(第4列中的6> 2,第6列中的7> 1) 。我不想放弃第一列(4 = 4)。我该怎么做?

1 个答案:

答案 0 :(得分:5)

另一种选择是对每列进行值计数,如果计数的最大值小于或等于数据帧行数的一半,则选择它:

if option==1{
  do this.....
}