2013-02-28 2 views
20

데이터 프레임이 있고 주어진 열이 가장 빈번한 값을 가진 횟수를 알고 싶습니다. 내가 할컬럼에서 가장 빈번한 값의 수를 얻는 방법?

items_counts = df['item'].value_counts() 
max_item = items_counts.max() 

을 결과 :

나는 다음과 같은 방법으로 그것을 수행하려고

ValueError: cannot convert float NaN to integer 

를 지금까지 내가 이해, 첫 번째 줄과 내가 시리즈를 얻을되는에 열의 값이 키로 사용되며이 값의 빈도가 값으로 사용됩니다. 그래서, 시리즈에서 가장 큰 가치를 찾아야하고, 어떤 이유 때문에 그것이 작동하지 않습니다. 아무도이 문제를 어떻게 해결할 수 있는지 알고 있습니까?

+0

열에 'na'가 있습니까? 그렇다면'dropna' 또는'fillna'로 제거해야합니다. – beardc

답변

22

열에 null이있을 수 있습니다. df = df.dropna(subset=['item'])으로 삭제할 수 있습니다. 그런 다음 df['item'].value_counts().max()은 최대 개수를 제공해야하며 df['item'].value_counts().idxmax()은 가장 자주 제공해야합니다.

+0

그리고 NA가 NA 값으로 간주되도록 할 수 있습니까? 나는. 그것이 가장 공통적 인 가치라면 NA를 반환하게되어 기쁩니다. –

+0

@FullDecent는'.dropna()'대신'.fillna()'를 사용합니다. – beardc

8

scipy의 mode 함수를 사용하여 NaN을 무시하는 것도 고려해 볼 수 있습니다.

from scipy.stats import mode 
from numpy import nan 
df = DataFrame({"a": [1,2,2,4,2], "b": [nan, nan, nan, 3, 3]}) 
print mode(df) 

출력 가장 일반적인 값은 초 첫번째 컬럼 23 것을 의미

(array([[ 2., 3.]]), array([[ 3., 2.]])) 

같을 것이다 주파수 32으로 :처럼 사용 용액을 볼 수 있었다 각기.

7

@jonathanrocher 대답을 계속하려면 팬더 데이터 프레임에 mode을 사용할 수 있습니다. 행 또는 열에서 가장 빈번하게 값 (1 또는 2)을 표시합니다.

import pandas as pd 
import numpy as np 
df = pd.DataFrame({"a": [1,2,2,4,2], "b": [np.nan, np.nan, np.nan, 3, 3]}) 

In [2]: df.mode() 
Out[2]: 
    a b 
0 2 3.0 
관련 문제