Dada uma lista de itens, lembre-se de que o modo da lista é o item que ocorre com mais frequência.
Gostaria de saber como criar uma função que pode encontrar o modo de uma lista, mas que exibe uma mensagem se a lista não tiver um modo (por exemplo, todos os itens da lista aparecem apenas uma vez). Eu quero fazer essa função sem importar nenhuma função. Estou tentando fazer minha própria função do zero.
assert(mode[1, 1, 1]) == None
eassert(mode[1, 2, 3, 4]) == None
. Para um número para ser ummode
, deve ocorrer com mais número de vezes que pelo menos um outro número na lista, e deve não ser o único número na lista.Respostas:
Você pode usar a
max
função e uma tecla. Veja a função python max usando a expressão 'key' e lambda .fonte
O(n**2)
. Faz isso?max(lst, key=lst.count)
. (E eu realmente não chamaria de uma listalist
.)a = [22, 33, 11, 22, 11]; print(max(set(a), key=a.count))
retornos11
. Ele sempre retornará o modo mínimo? E se sim, por quê?Você pode usar o
Counter
fornecido nacollections
embalagem que possui umamode
função -esqueNota: O contador é novo no python 2.7 e não está disponível nas versões anteriores.
fonte
Counter(your_list_in_here).most_common(1)[0][0]
. Se houver mais de um modo, isso retornará um modo arbitrário.n
mais comunsmodes
. Se Counter (your_list_in_here) .most_common (1) [0] [0] obtém o primeiro modo, como você conseguiria outro mais comummode
? Basta substituir o último0
por1
? Pode-se fazer uma função para personalizar omode
ao seu gosto ..O Python 3.4 inclui o método
statistics.mode
, por isso é direto:Você pode ter qualquer tipo de elemento na lista, não apenas numérico:
fonte
multimode
, que retorna vários modos quando há mais de um.Tomando uma folha de alguns softwares de estatística, como SciPy e MATLAB , eles retornam o menor valor mais comum; portanto, se dois valores ocorrem com a mesma frequência, o menor deles é retornado. Espero que um exemplo ajude:
Existe alguma razão para você não seguir esta convenção?
fonte
Existem muitas maneiras simples de encontrar o modo de uma lista no Python, como:
Ou você pode encontrar o máximo pela contagem
O problema com esses dois métodos é que eles não funcionam com vários modos. O primeiro retorna um erro, enquanto o segundo retorna o primeiro modo.
Para encontrar os modos de um conjunto, você pode usar esta função:
fonte
Estendendo a resposta da Comunidade que não funcionará quando a lista estiver vazia, aqui está o código de funcionamento para o modo:
fonte
Caso você esteja interessado nos modos menor, maior ou todos:
fonte
Eu escrevi esta função útil para encontrar o modo.
fonte
Curto, mas de alguma forma feio:
Usando um dicionário, um pouco menos feio:
fonte
Um pouco mais, mas pode ter vários modos e obter string com a maioria das contagens ou combinação de tipos de dados.
fonte
Para um número para ser um
mode
, deve ocorrer com mais número de vezes que pelo menos um outro número na lista, e deve não ser o único número na lista. Então, refatorei a resposta de @ mathwizurd (para usar odifference
método) da seguinte maneira:Esses testes são aprovados com êxito:
fonte
Por que não apenas
Isso não possui algumas verificações de erro que deveria ter, mas encontrará o modo sem importar nenhuma função e imprimirá uma mensagem se todos os valores aparecerem apenas uma vez. Ele também detectará vários itens que compartilham a mesma contagem máxima, embora não esteja claro se você deseja isso.
fonte
Essa função retorna o modo ou modos de uma função, não importa quantos, assim como a frequência do modo ou modos no conjunto de dados. Se não houver modo (ou seja, todos os itens ocorrem apenas uma vez), a função retornará uma sequência de erros. Isso é semelhante à função de A_nagpal acima, mas é, na minha humilde opinião, mais completo, e acho que é mais fácil entender para qualquer iniciante em Python (como o seu verdadeiramente) lendo esta pergunta.
fonte
return 'There is no mode for this data set. All values occur only once.'
pode ser transformada em uma mensagem de erro com atraceback
condição `se: a próxima linha com recuo aumenta ValueError ('Não há modo para este conjunto de dados. Todos os valores ocorrem apenas uma vez.') Aqui está uma lista de diferentes tipos de erros que você pode gerar.Isso retornará todos os modos:
fonte
Código simples que localiza o modo da lista sem nenhuma importação:
No caso de vários modos, ele deve retornar o nó mínimo.
fonte
fonte
fonte
Aqui está uma função simples que obtém o primeiro modo que ocorre em uma lista. Faz um dicionário com os elementos da lista como chaves e número de ocorrências e depois lê os valores de ditado para obter o modo.
fonte
Se você deseja uma abordagem clara, útil para a sala de aula e usando apenas listas e dicionários por compreensão, você pode:
fonte
fonte
Aqui está como você pode encontrar média, mediana e modo de uma lista:
fonte
fonte
Para quem procura o modo mínimo, por exemplo: caso de distribuição bimodal, usando numpy.
fonte
O modo de um conjunto de dados é / são os membros que ocorrem com mais freqüência no conjunto. Se houver dois membros que aparecem com mais frequência com o mesmo número de vezes, os dados terão dois modos. Isso é chamado bimodal .
Se houver mais de 2 modos, os dados serão chamados multimodais . Se todos os membros do conjunto de dados aparecerem o mesmo número de vezes, o conjunto de dados não terá nenhum modo .A função a seguir
modes()
pode funcionar para encontrar o (s) modo (s) em uma determinada lista de dados:Resultado:
Se não queremos importar
numpy
oupandas
chamar qualquer função desses pacotes, para obter essa mesma saída, amodes()
função pode ser escrita como:fonte