2014-01-29 31 views
0

假設我有一個數據集與熊貓因素,我有因素'A'到'Z',並假設因素'A','B'和'C'有30個觀察,其餘的只有5個。在這個數據框中還有其他列,但我只關心這一列的因素(我們稱之爲factor1)。使用熊貓過濾最常見的因素

我和熊貓一起使用什麼操作來過濾這個數據框,以便數據框中的唯一行是那些其觀察因子超過20的因子?如果我想在數據框中輸入factor1的前3個最常用因子,我可以使用什麼操作?

編輯: 這裏有一組有限的代碼

data = {'factor1':['A','A','A', 'B', 'B', 'B', 'C','C', 'D'], 'factor2':['apple','apple','apple','apple','apple','apple','orange','orange','orange'], 'response':range(9)} 
df = pandas.DataFrame(data) 

如何過濾df使factor1有具有的頻率大於5(或正或任何真正的3件最流行的因素或因素)

+0

你可以張貼的示例數據?因素列中只有一個值或一系列因素? –

回答

2

嘗試此的3件最流行的因素

N = 3 
handy = df.groupby('factor1')['factor1'].count() 
handy.sort('factor1',ascending=False) 
topNFactors = handy.head(N) 
print topNFactors 

dataOfTopNFactors = df[df['factor1'].map(lambda x: x in topNFactors)] 
print dataOfTopNFactors 

或者嘗試一下本作頻率至少2的因素:

M = 2 
handy = df.groupby('factor1')['factor1'].count() 
minimumValueMFactors = handy[handy>=M] 
dataOfMinimumValueMFactors = df[df['factor1'].isin(minimumValueMFactors.index)] 
print dataOfMinimumValueMFactors