我有一个带有true和false值的数据集作为分类器。我有此数据集的DataFrame表示形式。但是,该数据集的分类器真值和假值之比约为30:70。理想情况下,两个分类器都需要50:50。最好的方法是显示两个分类中我有多少个真值和假值,然后从分类中删除编号最高的几行数据?

例如DF:

    Language    Trustworthy
           en   0
           du   0
           li   0
           tm   0
           en   1
           en   0
           en   0
           en   1
           fr   0
           en   1


理想情况下,我希望删除上述值得信任的值为0的数据集中的4个。这只是我的数据集的很小一部分。

最佳答案

您可以将值分组到列中,然后查看分组中有多少个元素。

data = '''Language    Trustworthy
           en   0
           du   0
           li   0
           tm   0
           en   1
           en   0
           en   0
           en   1
           fr   0
           en   1'''

import pandas as pd
from StringIO import StringIO

df = pd.DataFrame.from_csv( StringIO(data), index_col=None, sep='\s+')

#--------------------------------------------------------------------

print df.groupby('Trustworthy').size()

'''
Trustworthy
0              7
1              3
dtype: int64
'''


要么

for name, group in df.groupby('Trustworthy'):
    print "name:", name, "| len:", len(group)

'''
name: 0 | len: 7
name: 1 | len: 3
'''




用0删除最后4行

df = df.drop( df[ df['Trustworthy'] == 0 ].tail(4).index )

print df


结果

  Language  Trustworthy
0       en            0
1       du            0
2       li            0
4       en            1
7       en            1
9       en            1

关于python - Pandas 修改数据集以使两个分类的值相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24893817/

10-12 17:48
查看更多