2016-02-14 6 views
0

Я занимаюсь некоторыми работами в пандах, и я пытаюсь найти определенные значения из набора данных. Я ищу режим и частоту режима для определенного столбца.Pandas Частота значений столбцов

У меня есть режим, используя df.col1.mode(), это отлично работает и возвращает режим (например, Мужской). Теперь мне не удается получить частоту этого значения в столбце. Я знаю, что могу получить частоту всех значений в столбце с использованием df.col1.value_counts()

Я попытался с помощью df.col1.value_counts()['Male'], чтобы попытаться получить количество раз это происходит, но я получаю сообщение об ошибке говорящее KeyError: 'Male'

Является ли это правильный путь найти количество раз, когда определенное значение появляется в столбце?

+0

Это означает, что в колонке «col1» нет «мужчины». Так что это хороший способ, но работает, только если вы уверены, что это значение встречается в столбце. – 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} 
Смежные вопросы