1
resposta

[Dúvida] Sobre o método `value_counts()`

Ao fazer essa questão, percebi que o pandas associa a variável categórica sobre a qual estamos contando a frequência (nesse caso, a variável FACE, que assume os valores 'c' (cara) e 'C' (Coroa) ) com o index do DataFrame criado quando estamos utilizando o método df.value_counts(). Por exemplo, não importa se eu crio o index como index = ['c', 'C'] ou index = ['C', 'c'] , ele vai fazer a associação correta com a contagem para cada valor da variável FACE ('c' ou 'C').

Por outro lado, na mesma situação, se dermos um nome qualquer para o index, como por exemplo, 'cara' e 'Coroa', o mesmo método irá resultar em valores nulos (NAN) para as contagens.

Abaixo segue o código utilizado para resolver a questão:

m1 = 'CCcCCccCCCccCcCccCcCcCCCcCCcccCCcCcCcCcccCCcCcccCc'
m2 = 'CCCCCccCccCcCCCCccCccccCccCccCCcCccCcCcCCcCccCccCc'
m3 = 'CccCCccCcCCCCCCCCCCcccCccCCCCCCccCCCcccCCCcCCcccCC'
m4 = 'cCCccCCccCCccCCccccCcCcCcCcCcCcCCCCccccCCCcCCcCCCC'
m5 = 'CCCcCcCcCcCCCcCCcCcCCccCcCCcccCccCCcCcCcCcCcccccCc'

df = pd.DataFrame(
    data = ['Cara', 'Coroa'],
    index = ['c', 'C'],
    columns = ['Faces']
)   

df1 = pd.DataFrame(
    data = {
        'm1': pd.Series(list(m1)).value_counts(),
        'm2': pd.Series(list(m2)).value_counts(),
        'm3': pd.Series(list(m3)).value_counts(),
        'm4': pd.Series(list(m4)).value_counts(),
        'm5': pd.Series(list(m5)).value_counts()
    },
    index = ['c', 'C'],
    columns = ['m1', 'm2', 'm3', 'm4', 'm5']
)

df = pd.concat(
    [df, df1],
    axis = 1
)
df

cujo resultado é:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Ivandson, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

O método value_counts() é usado para obter uma Série contendo contagens de valores únicos. O índice resultante será os valores únicos do DataFrame ou da Série original. Por isso, quando você tenta definir um índice que não corresponde aos valores únicos da Série, ele retorna valores nulos (NAN).

Uma alternativa será renomear o índice para o nome desejado após a criação do DataFrame utilizando o método rename, como apresentado abaixo:

df.rename(index={'c': 'Cara', 'C': 'Coroa'})

Resultado

imagem contendo o resultado da execução do código anterior, com o índice renomeado

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!