2
respostas

Moda das colunas de um data frame

Olá, sabem indicar uma forma simples de encontrar a moda das variáveis de um data frame?

2 respostas

Boas Naiane, tudo bem? Espero que sim!

Existe uma forma bastante simples. Vamos criar um DataFrame e verificar como fazê-lo:

Antes de tudo vamos importar as bibliotecas que vamos usar:

import numpy as np
import pandas as pd

Primeiro, vou gerar 500 números aleatórios que vão representar faltas:


np.seed = 101
faltas = np.random.randint(0,100, 500)

Eu 'setei' o seed caso queira reproduzir o código, assim terá o mesmo resultado que eu.

Agora vamos adicionar esses números em um DataFrame:

df = pd.DataFrame(faltas, columns=['Faltas'])

Até agora, temos um dataframe dessa forma:

    Faltas
0    97
1    93
2    84
3    43
4    49

Podemos acessar a moda da coluna a partir de:

df['Faltas'].mode()

Que resulta em:

77.

Outra forma de acessar a moda, é pelo DataFrame inteiro.

Mas antes vamos adicionar mais uma coluna, dessa vez de notas que vão de 0 a 10.

notas = np.random.randint(0,10, 500)
df['Notas'] = notas

Agora, nosso dataframe possui duas colunas:

Faltas    Notas
    0    97    8    
    1    93    5    
    2    84    6    
    3    43    3    
    4    49    2    

E podemos acessar a moda do DataFrame através de:

df.mode()

Que resulta em:

        Faltas    Notas
    0    77.0    0    
    1    NaN     6    

Mas porque temos um Resultado NaN?

Se verificarmos a moda da coluna Notas, será retornado:

    0    0    
    1     6    

O que significa que a moda da coluna é bimodal, ou seja, existem dois valores que aparecem o mesmo número de vezes.

Em resumo, pode-se usar df['Coluna'].mode() para acessar a moda de uma coluna ou df.mode() para acessar do DataFrame inteiro.

Espero ter ajudado! Bons Estudos!

Boas Naiane, tudo bem novamente? Espero que sim.

Percebi apenas agora que a pergunta em questão trata-se da linguagem R. Nesse caso, vou deixar a resposta acima caso algum outro aluno esteja com a mesma dúvida que você em Python e agora vou explicar como fazê-lo em R.

O R padrão não possui uma função que calcula moda nativamente, então, existem duas possibilidades: criar uma função que faz o calculo ou usar uma biblioteca que possua essa implementação, como você pediu por uma forma simples, vamos trabalhar com essa segunda.

A biblioteca que iremos usar chama-se DescTools, sua documentação, infelizmente está disponível somente em inglês, mas sinta-se a vontade para usá-la como base de seus estudos e código.

Para instalar a biblioteca, basta usar o seguinte código no terminal do R:

install.packages("DescTools")

Após isso, o R abrirá uma caixa de aviso por ser uma biblioteca de terceiros, assim como você deverá selecionar um local de onde fazer o download. Recomendo São Paulo, ou qualquer localidade disponível que seja próxima da sua localização.

Antes de mais nada, precisamos adicio****nar a biblioteca para nosso cóigo:

library ("DescTools")

Agora, vamos criar um data frame:

data_frame = data.frame(col1 = c("b", "b", "d", "e", "e") , 
                        col2 = c(0, 2, 1, 2, 5), 
                        col3= c(TRUE, FALSE, FALSE,
                                TRUE, TRUE))

que resulta em:

    col1 col2  col3
1    b    0  TRUE
2    b    2 FALSE
3    d    1 FALSE
4    e    2  TRUE
5    e    5  TRUE

Agora, para a moda de uma das colunas do Data Frame, podemos usar a função Mode() do pacote DescTools. Segue exemplo:

Mode(data_frame$col3)

que retorna:

[1] TRUE
attr(,"freq")
[1] 3

Ou seja, a moda dessa coluna é o valor True, com 3 ocorrências.

Caso queria executar para todo o DataFrame, pode se fazer da seguinte maneira:

sapply(data_frame, Mode)

que retornará:

$col1
[1] "b" "e"
attr(,"freq")
[1] 2

$col2
[1] 2
attr(,"freq")
[1] 2

$col3
[1] TRUE
attr(,"freq")
[1] 3

Essa função retorna valor(es) mais frequente(s) para cada coluna, ainda que seja bimodal ou multimodal.

Espero ter ajudado!

Bons estudos!