2016-02-14 106 views
0

我正在做一些熊貓工作,我試圖從數據集中找到某些值。我正在尋找某一列的模式和模式頻率。熊貓頻率的列值

我已經得到了使用df.col1.mode()的模式,這工作正常,並返回模式(例如男性)。現在我無法在列中獲取此值的頻率。我知道我可以使用df.col1.value_counts()

我試着用df.col1.value_counts()['Male']嘗試得到的時間發生的數量得到列中的所有值的頻率,但我得到一個錯誤說KeyError: 'Male'

這是在正確的方式找到某個值出現在列中的次數?

+0

這意味着'col1'列中沒有'Male'。所以這是一個好方法,但只有在確定該值出現在列中時纔有效。 – joris

+0

是的,這是正確的方式,我無法複製您的問題。請發佈[mcve]。 – Goyo

回答

0
print df 

    A B C 
0 1 2 3 
1 4 5 6 
2 7 8 9 

df.groupby('A').size()/df['A'].count() 

A 
1 0.333333 
4 0.333333 
7 0.333333 
dtype: float64 
+0

但是,我怎麼才能得到最多發生的值的結果,而不是所有值的結果 – JJSmith

0

您將遇到的一個問題是模式中有多個項目,因此您沒有一對一映射。爲了解決這個問題,你可以使用字典理解來獲得每種模式。

df = pd.DataFrame({'gender': ['Male', 'Male', 'Female', 'Female', 'Shemale'], 
        'State': ['CA', 'OR', 'AZ', 'CA', 'NY']}) 

modes = df.gender.mode() 
>>> {item: len(df.gender[df.gender.isin(modes[modes == item])]) for item in modes} 
{'Female': 2, 'Male': 2}