我有一个数据集,其中包含真假值作为分类器。我有一个这个数据集的DataFrame表示。然而,这个数据集的真假值比例大约是30:70。我理想的情况是希望两个分类器的比例达到50:50。最好的方法是如何显示我有多少个真假值的分类,然后从分类数量最多的分类中删除一些数据行?
例如 DataFrame 如下:
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 pdfrom StringIO import StringIOdf = pd.DataFrame.from_csv( StringIO(data), index_col=None, sep='\s+')#--------------------------------------------------------------------print df.groupby('Trustworthy').size()'''Trustworthy0 71 3dtype: int64'''
或者
for name, group in df.groupby('Trustworthy'): print "name:", name, "| len:", len(group)'''name: 0 | len: 7name: 1 | len: 3'''
要删除最后4行信任值为0的行
df = df.drop( df[ df['Trustworthy'] == 0 ].tail(4).index )print df
结果
Language Trustworthy0 en 01 du 02 li 04 en 17 en 19 en 1