我有一个带有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/