image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
Antonio Guedes
Antonio Guedes12/04/2025 12:51
Share
Microsoft Certification Challenge #3 DP-100Recommended for youMicrosoft Certification Challenge #3 DP-100

Estatística Descritiva aplicando python

    Estatística Descritiva com Python

    Definição de Estatística Descritiva

    Ramo da estatística que resume, descreve dados, permitindo compreender e interpretar o que eles significam.

    Definições da Estatística Descritiva

    image

    Conceitos importantes

    Variáveis

    As variáveis são características de cada dado que são de interesse para o estudo. Por exemplo, ao coletar dados no âmbito de uma escola, todos os dados dos alunos podem ser de interesse dependendo do objetivo do estudo. Quais são as variáveis? A idade de cada aluna, o ano em que estudam, os conceitos obtidos em suas avaliações, o gênero de cada aluno. Para determinar se os dados são características de interesse, é necessário definir o objetivo do estudo.

    Classificação das Variáveis 

    São classificadas de acordo com a característica. Se forem numéricas são classificadas com quantitativas, já se indicar características adjetivas, são qualitativas. Estas classificações ainda sofrem subdivisões. As quantitativas, quando o dado indica quantidades específicas são ditas discretas, por exemplo:

    • Quantidade de alunos por sala de aula;
    • Quantidade de mulheres em uma escola;
    • Quantidade de determinada fruta no estoque de um mercado.

    Caso os números indiquem um intervalo que é difícil separar as unidades, dando uma ideia de fluidez, uma contagem intervalar, um fluxo, então as variáveis são contínuas, por exemplo: Notas dos alunos em matemática no segundo ano do ensino médio, as notas não são números inteiros bem definidos, contrário a isso, são números de ponto flutuante (decimais) e por isso

    • O conjunto de dados não é bem definido.
    • O tempo gasto na produção de determinada peça na linha de produção.

    As variáveis qualitativas, por outro lado, fica perceptível que trata-se da categorização dos dados: gênero, cor do veículo, nestes casos não se percebe uma ordem bem definida, não faz diferença representar o gênero feminino primeiro ou o masculino. O agrupamento de veículos por cor, não difere se primeiro for a cor vermelha, ou a azul ou a prata. Nestes casos as variáveis são nominais. Contrário a isso, meses do ano, já exprimem por si só uma ordem definida, qualquer pessoa que conte um história que envolva os meses do ano, ela busca contar de forma cronológica, numa ordem que os ouvintes situem-se na linha do tempo. Quando alguém começa a contar sua história de estudos, normalmente ela conta a história também em uma ordem cronológica, assim a apresentação de dados quem envolvam escolaridade (1º ano, 2º ano, 3º anos,..., etc) já expressão a sensação de ordem nos dados, neste caso as variáveis são qualitativa, pois não possuem características de quantidade, caracterizam cada etapa, então são variáveis ordinais.

    image

    População e Amostra

    image

    obs¹: O conceito de população não cabe apenas a pessoas, a quaisquer conjunto de elementos de um estudo, em sua totalidade, dá-se o nome de população;

    obs²: A amostra deve ser representativa para que as informações da pesquisa sejam precisas;

    obs³: Amostragem é o processo para definição de uma amostra.

    Quando toda a população precisa ser investigada, essa pesquisa é censitária, assim como a investigação feita pelo IBGE, no Brasil. Há pesquisas que podem ser realizadas com uma parte da população, a exemplo disso as pesquisas de intenção de voto. A amostra deve tornar possível apresentar resultados mais próximos possíveis da população.

    Tipo de Amostragem

    Como Selecionar uma parte representativa da população

    • Casual Simples
    • Método caracterizado por um sorteio aleatório. Os elementos da população podem ser enumerados e, em seguidas sorteados entre uma quantidade predefinida.
    • Exemplo: Para fazer a competição entre turmas, um professor de educação física vai fazer uma pesquisa sobre o esporte favorito com todos os alunos do 8º ano do ensino fundamental. A intenção é decidir os esportes que serão incluídos na competição. Característica da população? Alunos do 8º ano. Assim a amostragens ser pelo método casual simples de 30 dos 300 alunos dos oitavos anos.
    • Como ele fará a escolha da amostra? Enumerará os 300 alunos, colocará em uma urna e sorteará os 30 alunos.
    • Sistemática
    • Quando os elementos da população já se encontram ordenados, em seguida são sorteados com uma certa periodicidade;
    • Exemplo: Em um salão de beleza que possui 120 clientes cadastradas, pretende-se realizar uma pesquisa de satisfação mediante uma amostra sistemática de 12 pessoas. Como determinar quais clientes participarão da pesquisa? Neste exemplo, pode-se sortear entre as 10 primeiras clientes, e o nº obtido será da primeira cliente. Depois disso, basta obter o número de cada cliente considerando um intervalo amostral. Como obter esse intervalo? Faz a divisão da população pela amostra;
    • Inicialmente sorteamos o número 3, considerando a população de 120 e a amostra de 12, então o intervalo amostral será de 120/12 = 10. Assim a cada 10 clientes escolhe-se uma, então as clientes que participarão da pesquisa são: [3, 13, 23, 33, 43, 53, 63, 73, 83, 93, 103, 113].
    • Proporcional estratificada
    • Dividir a população em estratos (subgrupos) de acordo com outras características da população que devem ser levadas em conta;
    • Será realizada uma pesquisa com 200 estudantes da população de 10mil matriculados no ensino fundamental. Supondo que o grupo de alunos da pesquisa seja de 30% alunos do 6º ano, 30% do 7º ano, 20% do 8º ano e 20% do 9º.
    • Neste caso a amostra fica conforme a tabela a seguir:

    image

    Deste modo todos os anos estão representados proporcionalmente na pesquisa.

    Medidas

    Medidas de Tendência Central

    Média 'M'

    A média é uma medida muito sensível aos valores, qualquer valor muito discrepante do conjunto de dados pode afetar fortemente o posicionamento da média, fazendo-a se aproximar da discrepância. Por isso é muito adequada em situações em que os dados são distribuídos mais ou menos uniformemente. O cálculo da média se dá pela soma de todos elementos da população e calculando a razão desta soma pelo tamanho da população.

    image

    ​Uma turma do 8º ano de 25 alunos possui as seguintes notas:

    Notas={7,5; 9,2; 8,2; 8,5; 7,9; 8,0; 6,8; 9,5; 10,0; 8,0; 7,8; 6,9; 7,5; 9,0; 8,2; 7,8; 8,7; 8,9; 8,5; 7,5; 6,0; 7,0; 8,0; 9,0; 10,0}

    Qual seria a média da turma?

    image

    Mediana 'Md'

    Representa o valor central do conjunto de dados. Quando o número de elementos de um conjunto de dados é par, encontra-se os valores centrais e calcula a média entre eles, calculando a metade da soma entre ambos.

    Exemplo: Consideremos o conjunto de formato pela altura de um grupo de pessoas.

    Alturas={1,54; 1,67; 1,50; 1,65; 1,75; 1,69; 1,60; 1,55; 1,78}

    Como localizamos a mediana das alturas? A primeira coisa é ordenar tal conjunto, colocando as alturas em ordem crescente.

    Alturas_ordenadas={1,50;1,54;1,55;1,60;1,65;1,67;1,69;1,75;1,78}

    A quantidade de elementos desse conjunto é 9, assim a mediana será o 5º elemento do conjunto. Se perceber, o 5º elemento separa o grupo exatamente no meio, restando 4 elementos à sua esquerda e 4 elementos à sua direita. E qual altura ocupa a 5ª posição do conjunto?

    Md=1,65m

    Agora, seria interessante exemplificarmos o cálculo da mediana em um conjunto de dados com quantidade de elementos par.

    Amostra_Dados = {32, 27, 15, 44, 15, 32}

    Primeiro passo é ordenar o conjunto:

    Amostra_Dados_Ordenada = {15, 15, 27, 32, 32, 44}

    Contendo a amostra 6 elementos, a mediana está entre os terceiro e quarto elementos, assim calculamos a média desses elementos e obteremos a mediana desse conjunto de dados.

    image

    Moda 'Mo'

    A moda representa o valor mais frequente em um conjunto de dados, assim sendo para defini-la basta observar a frequência dos elementos do conjunto de dados. Caso um conjunto apresente duas modas, ele é dito bimodal, caso apresente três modas trimodal, e se apresentar mais é classificado com multimodal.

    Exemplo: Em uma sapataria durante um dia foram vendidos os seguintes números de sapatos: { 34, 39, 36, 35, 37, 40, 36, 38, 36, 38, 41}

    Deste modo qual número de sapato foi vendido com maior frequência?

    frequencias = {34:1, 39:1, 36:3, 35:1, 37:1, 40:1, 38:2, 41:1}

    Deste modo é possível perceber que a moda deste conjunto é 36, pois foi o número que mais se repetiu no conjunto.

    Quartil ou Separatriz

    Os quartizes são valores que dividem o conjunto ordenado de dados em quatro partis iguais, ou seja 1 quartil é igual a 25%(0,25) dos dados. Ou seja, o quartil é a medida que deixa k*100% das observações abaixo dele, lembrando que a amostra deve estar ordenada.

    image

    Para que servem os quartizes? Avaliar a dispersão e a tendência central de um conjunto de amostras. Um conceito interessante é o Intervalo Interquartil, delimitado pelo Q1 e Q3, esta é a medida de dispersão em relação à medida central dos dados.

    Calculando o quartil

    • Primeiramente, ordene os dados de forma crescente;
    • L = k * n, onde:
    • L é o valor que representa o quartil;
    • k é o quartil a ser calculado;
    • n quantidade de observações na amostra.

    obs¹.: Caso L não inteiro, arredonde-o para o maior inteiro mais próximo. O valor do quartil é o L-ésimo valor, a contar do menor valor da observação.

    obs².: Para L inteiro, o quartil é a média entre o L-ésimo e o (L+1)-ésimo elemento do conjunto, a contar do menor.

    Isto significa que ao calcular o quartil, você está calculando a posição do elemento que representa o quartil no conjunto. Vamos ver um exemplo pra ficar mais evidente.

    Dados = {15, 5, 3, 8, 10, 2, 7, 11, 12}, calcule os quartis 0,25 (1º quartil) e 0,75 (3º quartil).

    1 - Ordenar os dados: dados_ordenados = {2, 3, 5, 7, 8, 10, 11, 12, 15}

    2 - Determinar quem é n no conjunto: n = 9

    Para 0,25 (1º quartil), temos: L = 0,25 x n => L = 0,25 x 9, L = 2,25

    Para 0,75 (3º quartil), temos: L = 0,75 x n => L = 0,75 x 9, L = 6,75

    Vimos que em ambos os casos ele não é inteiro, assim arredonda-o para o próximo nº inteiro, que para o exemplo são: 3 e 7, respectivamente.

    Agora temos as posições de cada quartil no conjunto do exemplo.

    O 1º quartil dos dados é o 3º elemento do conjunto, isto é 5.

    O 3º quartil dos dados é o 7º elemento do conjunto, isto é 11.

    O que esse resultado significa?

    Significa que 25% dos dados estão abaixo de 5, e 75% dos dados estão abaixo de 11.

    Medidas de Dispersão

    São parâmetros estatísticos para determinar o grau de variabilidade dos dados de um conjunto. Server para tornar a análise de uma amostra mais confiável, haja vista as variáveis de tendência central escondem a homogeneidade ou não dos dados.

    Exemplo: Imagina que um animador de festas trabalhará em duas festas distintas e para decidir as atividades ele use as idades como parâmetro. Considerando as idades:

    Festa A: 1 ano, 2 anos, 2 anos, 12 anos, 13 anos

    Festa B: 5 anos, 6 anos, 7 anos, 8 anos, 9 anos.

    Em ambos os casos a média das idades é 7 anos, entretanto, observando as idades dos participantes de cada festa é possível inferir que as atividades escolhidas não podem ser iguais. Assim sendo, a média não é uma medida eficiente, uma vez que não indica o grau de dispersão dos dados. As medidas de dispersão mais usadas são: amplitude, variância, desvio padrão e o coeficiente de variação.

    Amplitude 'h'

    É a diferença entre a maior e a menor observação de um conjunto de dados, isto é: h = maior_elemento - menor_elemento

    No exemplo das festas A e B, quais as amplitudes das idades?

    amplitude_festa_a = 13 - 1 = 12anos

    amplitude_festa_b = 9 - 5 = 4anos

    Variância (s)

    É a medida de quanto cada elemento do conjunto, dista da média desse conjunto. Caso fosse calculada como a soma das distâncias de cada elemento, da média do conjunto, tal soma resultaria em 0. Almejando sanar esse comportamento matemático, então a variância resulta da média dos quadrados da diferença entre cada observação do conjunto e a média da amostra. Por esta manipulação matemática a variância não terá fácil interpretação, pois resulta no quadrado da unidade de medida dos elementos do conjunto observado, mais adiante veremos qual medida de dispersão é mais interpretável, uma vez que sofre um ajuste em sua unidade de medida.

    image

    sendo,

    s: variância

    x(i): valor observado

    x(barra): média

    n: número de elementos

    Exemplo: Vamos calcular a variância das idades para cada festa citada anteriormente

    Festa A

    Dados: 1, 2, 2, 12, 12, 13

    Média = (1+ 2 +2 +12 + 12 + 13) / 6 => Média = 42/6 => Média = 7 anos

    s = [(1-7)² + (2-7)² + (2-7)² + (12-7)² + (12-7)² + (13-7)²] / 7, aproximadamente 24,57 anos²

    Festa B

    Dados: 5, 6, 7, 7, 8, 9

    Média = (5 + 6 + 7 + 7 + 8 + 9) / 6 => Média = 42/6 => Média = 7 anos

    s = [(5-7)² + (6-7)² + (7-7)² + (7-7)² + (8-7)² + (9-7)²]/7 => s = 10/7 => s = 1,43 anos²

    Ponto de observação: Reparou que a unidade de medida da variância é diferente da unidade de media dos elementos do conjunto? Unidade de medida dos elementos do conjunto é 'anos', da variância é 'anos²'. Lembre-se dessa informação pois vamos precisar dela ainda neste artigo.

    Comparando-se os resultados é possível perceber que apesar de as médias de ambos conjuntos ser a mesma, as variâncias são muito diferente, o que torna possível inferir que os dados do primeiro conjunto são muito mais heterogêneos.

    Desfio padrão 'Dp'

    O desvio padrão afere o grau de dispersão dos dados. É definido com a raiz quadrada da variância. Com este cálculo a unidade de medida do desvio padrão é a mesma unidade dos dados observados, o que o torna de mais fácil interpretação que a variância.

    Assim:

    image

    Perceba que a equação para calcular o desvio padrão é a mesma que usa-se para calcular a variância, a diferença é que após calcular a variância, calculamos a raiz quadrada dela para encontrar o valor do desvio padrão. Para que faz isso? lembra que a unidade de medida da variância é anos² ? pois é precisamos de uma unidade de medida que melhor represente a dispersão do conjunto em relação à média, assim necessitamos de uma variável que tenha a mesma unidade de media dos elementos do conjunto, e a unidade de medida útil para isso é o desvio padrão. Vamos agora então saber qual é a dispersão das idades das festas?

    image

    Festa A

    s = 24.57 anos²

    Dp = 4.96 anos

    Festa B

    s = 4.96 anos²

    Dp = 1.2 anos

    Agora é possível concluir que a dispersão das idades do primeiro grupo em relação à média é de aproximadamente 5 anos, enquanto no segundo grupo é de pouco mais de 1 ano. O que isso significa para o problema do animador? Bem com uma dispersão de idade tão menor, na Festa B, não tem problema ele realizar brincadeiras semelhantes para os dois grupos, já na Festa A, ele teria de ser mais criativo para agradar as faixas etárias que são tão dispersas. Ai você fala, ué, mas isso dava pra ver de cara, a brincadeira que faz pra uma criança de 1 ano, não dá pra ser a mesma que faz para um adolescente de 13 anos, que bom que chegou a essa conclusão só de olhar o grupo. Agora tente fazer a mesma observação em um grupo com 300 crianças. De fato, fica um pouco mais complicado, não é? Tá aí a estatística descritiva ajudando.

    Mas e se você quiser verificar essa dispersão em termos percentuais, é possível? Com certeza para isso a estatística descritiva dispõe do coeficiente de variação, que segue.

    Coeficiente de Variação 'CV'

    É a em percentual da dispersão dos dados em relação à média. Já vimos que o desvio padrão é a variação dos dados em relação à média, na mesma unidade de medida dos dados observados. Agora pra ter uma noção do percentual dessa variação, então utiliza-se o coeficiente de variação. Para calcular o coeficiente de variação, calculamos qual percentual representa a dispersão do desvio padrão em relação a média média, portanto:

    image

    Continuando a análise das festas, temos o percentual de dispersão das idades em cada festa:

    Festa A:

    CV = (Dp / Média) x 100% => CV = (4.96 anos/7anos) x 100% => CV = 70.81%

    Festa B:

    CV = (Dp / Média) x 100% => CV = (1.20anos / 7anos) x 100% => CV = 17.14%

    O que isso quer dizer? Na primeira festa a dispersão era de mais de 70%, enorme a dispersão das idades, não é? Parece que é chover no molhado, mas agora você tem uma percepção melhor do quanto o desvio padrão representa de dispersão, quando se pensa em menos de 5 anos não dá pra ter uma ideia do quanto isso representa, mas em percentual você pode dizer: "Uau, quase 100% de dispersão? Isso é muito!".

    Mas aí você me pergunta, tá legal, quantas informações mas o título do diz: Estatística Descritiva aplicando python, cadê o python? Vou começar a mostrar agora como todas as medidas podem ser calculadas usando python. Primeiro vou mostrar como fiz cada uma delas na unha, bem raiz.

    Hands On

    Como este estudo tem o objetivo de ser uma base para ciência de dados, e este ramo de conhecimento científico utiliza, atualmente, ferramentas computacionais, vou tentar demostrar como usar a linguagem de programação python para obter estas medidas da estatística descritiva.

    Medidas de Tendência Central em Python

    Média

    ```python

    def calcular_media(numeros): 
    """
      Este método retorna a média de um conjunto de uma variável quantitativa
      Parâmetro:
        numeros (list): Uma lista contendo as observações de uma variável quantitativa.
      Retorna: 
        média (float): O valor da média da lista números.
    """
    return sum(numeros) / len(numeros)
    

    Mediana

    ```python
    def calcular_mediana(numeros):
    """
      Localiza ou calcula a mediana em um conjunto de dados de uma variável quantitativa. Caso a lista que representa o conjunto de dados contenha um número ímpar de valores, então retorna o elemento do conjunto que representa a mediana localizada no conjunto, caso esse número de elementos seja par, então calcula a média dos elementos centrais do conjunto.
      Parâmetro:
        numeros (lista): Uma lista contendo os valores de uma variável quantitativa.
      Retorna: 
        mediana (float): Um número que é a mediana da lista que representa um conjunto de dados dos valores da variável qualitativa.
    """
    sortded = sorted(numeros)
    
      indice_media = len(sortded) // 2
    
      if len(sortded) % 2 == 0:
    
        return (sortded[indice_media - 1] + sortded[indice_media]) / 2
    
      else: 
    
        return sortded[indice_media]
    
    
    

      Moda

    def calcular_moda(numeros):
    """
      Calcula a frequencia de todos os elementos do conjunto. 
      Parâmetro:
        numeros (lista): A lista número é composta pelos valores observados na variável qualitativa, importante passar para o método tal conjunto em formato de lista.
      Retorna:
        um dicionário estratificando os elementos do conjunto e sua freqência.
    """
    frequencias = {}
    for n in numeros:
      frequencias.setdefault(n, 0)
      frequencias[n] += 1
    return frequencias
    
    

    Quartil

    def calcular_quartil(numeros, quartil):
    
    """
    
      Identifica o quartil informado e retorna o elemento do cunjunto de dados que representa o quartil.
    
      Parâmetros:
    
        numeros (list): O conjunto de dados a ser analisado
    
        quartil (float): O quartil em formato decimal
    
      Retorna:
    
        Elemento do conjunto de dados que representa o quartil consultado.
    
    """
    
    n = len(numeros)
    
    if n == 0:
    
      return None
    
    
    
    lista_ordenada = sorted(numeros)
    
    indice_decimal = quartil * (n - 1) # Fórmula comum para posição de quartis
    
    indice_inteiro = int(indice_decimal)
    
    fracao = indice_decimal - indice_inteiro
    
    
    
    
    if fracao == 0:
    
      return lista_ordenada[indice_inteiro]
    
    else:
    
      if indice_inteiro + 1 < n:
    
        valor_inferior = lista_ordenada[indice_inteiro]
    
        valor_superior = lista_ordenada[indice_inteiro + 1]
    
        return valor_inferior + fracao * (valor_superior - valor_inferior)
    
      else:
    
        # Caso o quartil seja o máximo valor (evita indicie fora do limite)
    
        return lista_ordenada[-1]
    

    Medidas de Dispersão em Python

    Amplitude

    def calcular_amplitude(numeros):
    return max(numeros) - min(numeros)
    

    Variância

    def calcular_variancia(numeros):
    media = calcular_media(numeros)
    soma = 0
    for n in numeros:
      soma += (n-media)**2
    print('Soma na variácia: (x - media)^2: ', soma)
    print('Média das idade: ', media)
    return soma/media
    
    
    

    Desvio Padrão

    from math import sqrt
    
    def calcular_desvio_padrao(numeros):  
    variancia = calcular_variancia(numeros)
    return sqrt(variancia)
    

    Coeficiente de Variação

    def calcular_coeficiente_variacao(numeros):
    desvio_padrao = calcular_desvio_padrao(numeros)
    media = calcular_media(numeros)
    return (desvio_padrao/media * 100)
    

    É isso aí pessoal, espero que tenham gostado deste material, espero que seja útil.

    Agora vamos pensar se existe formas mais simples de implementar essas medidas da estatística descritiva. Há sim, existe uma biblioteca muito famosa em python que a maioria, se não todos, usam para análise descritiva de dados. 'Pandas'. Nesta biblioteca já temos todas essas medidas, disponíveis. Aproveitando o ensejo vou mostrar.

    Para usar a biblioteca pandas, se faz necessário ter uma base de dados (dataframe), vou usar uma planilha em excel que tenho em meu computador, se você está lendo esse artigo e se interessou em ler até aqui, provavelmente também já tem uma. Mas se não tiver, basta pedir a que estou usando e posso te enviar.

    A planilha que vou usar é um levantamento realizado quanto a uma metodologia para reduzir o consumo de energia elétrica em uma empresa. Primeiro separou-se os equipamentos em grupos e monitorou o consumo energético em MW (mega watts), mas, por favor não diga Mega' Vats'. Watt era o nome do do matemático e engenheiro escocês que desenvolveu a metodologia para melhor eficiência de motor à vapor, desenvolvendo assim o conceito de potência. Vamos dar crédito a quem merece, então o nome do engenheiro se pronunciava (UÓóT) então falamos Mega UÓóT, quando lemos Mega Watt. Curiosidades à parte, voltemos ao problema, primeiro instalar e importar a biblioteca pandas.

    no prompt usa o comando: pip install pandas

    Depois disso no teu script comece importando a biblioteca pandas, e como uma boa prática e uma convenção vou dar um 'alias' à biblioteca em meu script, todos usam o 'alias': 'pd' e vou usar esse também

    import pandas as pd
    

    Agora que a biblioteca está disponível vamos obter o dataframe, aqui vou chamar de tb_consumo, pois é uma tabela com vistas a apresentar os resultados de consumo energético dos equipamentos na empresa.

    tb_consumo = pd.read_excel('consumo.xlsx')
    

    A planilha está no mesmo diretório que o meu script, por isso não estou precisando referenciar endereço do arquivo. Pronto agora já tempos toda a planilha à nossa disposição, podemos visualizar os dados, podemos tratar, excluir colunas, adicionar, enfim, realizar operações com os dados e com a estrutura.

    Atenção: como estou trabalhando com uma planilha em excel, pode ser que o script, no momento da execução critique a falta de uma bilioteca no ambiente que é 'openpyxl', em algumas máquinas não há essa situação, mas para prevenir você pode fazer o comando para instalar essa lib: pip install openpyxl.

    Pronto, agora vamos às medidas de tendência central em pandas. Para isso precisa-se passar ao pandas de qual variável desejamos calcular tais medidas. Na planilha tem 3 colunas de variáveis quantitativas discretas que utilizaremos e também uma variável quantitativa contínua. Não lembra o que isso significa? No início deste artigo expliquei com exemplos.

    Vamos visualizar a planilha?

    print(tb_consumo.head()) # Se estiver executando no VsCode ou no PyCharm
    tb_consumo.head() # se estiver executando no Anaconda Notebook
    
    # Saída:
    #    Linha 			 Data    Tempo Grupo1 Grupo2 Grupo3 Unnamed: 5 Unnamed: 6
    #         	0 2019-11-24 00:00:00		  0    	   2    	   0     	        NaN    			NaN
    #	        1 2019-11-24 00:01:00    	  0    	   1    	   0     			NaN    			NaN
    #			2 2019-11-24 00:02:00    	  0    	   2    	   0     			NaN    			NaN
    #			3 2019-11-24 00:03:00    	  0    	   1    	   0     			NaN    			NaN
    #		 	4 2019-11-24 00:04:00		  0		   1		   0				NaN			    NaN
    

    Esta é a saída esperada, o pandas retorna os cabeçalhos e as linhas iniciais. Mas quantas linhas tem nessa planilha? pode fazer o comando tb_consumo.count() ele retorna a quantidade de linhas que contém dados

    tb_consumo.count()
    
    # Saída: 
    # Coluna Qtd Dados
    # Data       2880
    # Tempo      2880
    # Grupo1     2880
    # Grupo2     2880
    # Grupo3     2880
    # Unnamed: 5    0
    # Unnamed: 6    1
    # dtype: int64 # tipo dos dados retornados
    

    Vamos às medidas?

    Média

    media_g1 = tb_consumo['Grupo1'].mean()
    media_g2 = tb_consumo['Grupo2'].mean()
    media_g3 = tb_consumo['Grupo3'].mean()
    
    print('\nMédias de consumo por grupo de equipamentos: ')
    print(f'Grupo1 {media_g1}\nGrupo2 {media_g2}\nGrupo3 {media_g3}')
    
    # Saída:
    # Médias de consumo por grupo de equipamentos: 
    # Grupo1 0.7541666666666667
    # Grupo2 1.1368055555555556
    # Grupo3 6.0055555555555555
    

    Se você já é uma pessoa que tem experiência com pandas, já aprendeu a criar dataframes a partir de dados, fazer o casting usando .to_string() então vá em frente, por enquanto estamos nos concentrando apenas na estatística descritiva.

    Mediana

    Medianas de consumo por grupo de equipamentos: 
    Grupo1 0.0
    Grupo2 0.0
    Grupo3 0.0
    

    Moda

    mediana_g1 = tb_consumo['Grupo1'].median()
    mediana_g2 = tb_consumo['Grupo2'].median()
    mediana_g3 = tb_consumo['Grupo3'].median()
    
    
    print('\nMedianas de consumo por grupo de equipamentos: ')
    print(f'Grupo1 {mediana_g1}\nGrupo2 {mediana_g2}\nGrupo3 {mediana_g3}')
    

    Quartil

    quartil_1_g1 = tb_consumo['Grupo1'].quantile(0.25)
    quartil_1_g2 = tb_consumo['Grupo2'].quantile(0.25)
    quartil_1_g3 = tb_consumo['Grupo3'].quantile(0.25)
    
    
    quartil_3_g1 = tb_consumo['Grupo1'].quantile(0.75)
    quartil_3_g2 = tb_consumo['Grupo2'].quantile(0.75)
    quartil_3_g3 = tb_consumo['Grupo3'].quantile(0.75)
    
    
    print('\nMedianas de consumo por grupo de equipamentos: ')
    print(f'Quartis   Grupo1  Grupo2  Grupo3')
    print(f'quartil_1  {quartil_1_g1}     {quartil_1_g2}     {quartil_1_g3}')
    print(f'quartil_3  {quartil_1_g1}     {quartil_3_g2}     {quartil_3_g3}')
    
    # Saída:
    # Medianas de consumo por grupo de equipamentos: 
    # Quartis   Grupo1  Grupo2  Grupo3
    # quartil_1  0.0     0.0     0.0
    # quartil_3  0.0     1.0     17.0
    

    Medidas de Dispersão

    Amplitude

    Para calcular as amplitudes das variáveis no pandas, nós usamos o máximo e o mínimo e calculamos a diferença.

    # AMPLITUDE
    ampli_g1 = tb_consumo['Grupo1'].max() - tb_consumo['Grupo1'].min()
    ampli_g2 = tb_consumo['Grupo2'].max() - tb_consumo['Grupo2'].min()
    ampli_g3 = tb_consumo['Grupo3'].max() - tb_consumo['Grupo3'].min()
    
    
    print('\nAmblitudes de consumo por grupo de equipamentos: ')
    print(f'\nGrandeza   Grupo1  Grupo2  Grupo3')
    print(f'amplitude  {ampli_g1}     {ampli_g2}     {ampli_g3}')
    
    # Saída:
    # Grandeza    Grupo1  Grupo2  Grupo3
    # amplitude   38      40      19
    

    Variância

    var_g1 = tb_consumo['Grupo1'].var()
    var_g2 = tb_consumo['Grupo2'].var()
    var_g3 = tb_consumo['Grupo3'].var()
    
    
    print('\nVariância de consumo por grupo de equipamentos: ')
    print(f'Variâncias   Grupo1  Grupo2  Grupo3')
    print(f'Variância  {var_g1:.2f}     {var_g2:.2f}     {var_g3:.2f}')
    
    # Saída:
    # Variância de consumo por grupo de equipamentos: 
    # Grandeza    Grupo1    Grupo2    Grupo3
    # variância   24.11     26.70     69.39
    

    Desvio Padrão

    dp_g1 = tb_consumo['Grupo1'].std()
    dp_g2 = tb_consumo['Grupo2'].std()
    dp_g3 = tb_consumo['Grupo3'].std()
    
    
    print('\nDesvio Padrão de consumo por grupo de equipamentos: ')
    print(f'Grandeza      Grupo1   Grupo2   Grupo3')
    print(f'DesvioPadrão  {dp_g1:.2f}     {dp_g2:.2f}     {dp_g3:.2f}')
    
    # Saída;
    # Desvio Padrão de consumo por grupo de equipamentos: 
    # Grandeza      Grupo1   Grupo2   Grupo3
    # DesvioPadrão  4.91     5.17     8.33
    
    

    Coeficiente de Variação

    No pandas, não há uma função para calcular o coeficiente de variação, mas no artigo já vimos como alcança esse resultado e como temos todas os elementos para esse calculo, vamos lá.

    Nós já temos as médias calculadas para cada grupo, bem como o desvio padrão, agora é só calcular o percentual que cada desvio padrão representa em relação às médias.

    cv_g1 = (dp_g1 / media_g1)*100
    cv_g2 = (dp_g2 / media_g2)*100
    cv_g3 = (dp_g3 / media_g3)*100
    
    
    print('\nCoeficiente de Variação do consumo por grupo de equipamentos: ')
    print(f'Grandeza      Grupo1   Grupo2   Grupo3')
    print(f'CV  {cv_g1:.2f}%     {cv_g2:.2f}%     {cv_g3:.2f}%')
    
    # Saída
    # Coeficiente de Variação do consumo por grupo de equipamentos: 
    # Grandeza      Grupo1   Grupo2   Grupo3
    # CV           651.04%  454.51%  138.70%
    
    

    Aí você pensa, por que esses percentuais tão altos? Se pensarmos nos dados perceberemos amplitudes grandes de consumo, em dados momentos os equipamentos estão desligados e em outros momentos estão trabalhando à todo vapor, então os dados são realmente extremamente dispersos.

    Agora pra finalizar vou mostrar uma função da biblioteca pandas que facilita bastante as coisas. É o método describe()

    dados_g1 = tb_consumo['Grupo1'].describe()
    dados_g2 = tb_consumo['Grupo2'].describe()
    dados_g3 = tb_consumo['Grupo3'].describe()
    
    print(f"\nDados Grupo 1: {dados_g1}")
    print(f"\nDados Grupo 2: {dados_g2}")
    print(f"\nDados Grupo 3: {dados_g3}")
    
    Saída:
    # Dados Grupo 1: count    2880.000000
    # mean        0.754167
    # std         4.909955
    # min         0.000000
    # 25%         0.000000
    # 50%         0.000000
    # 75%         0.000000
    # max        38.000000
    # Name: Grupo1, dtype: float64
    
    # Dados Grupo 2: count    2880.000000
    # mean        1.136806
    # std         5.166895
    # min         0.000000
    # 25%         0.000000
    # 50%         0.000000
    # 75%         1.000000
    # max        40.000000
    # Name: Grupo2, dtype: float64
    
    # Dados Grupo 3: count    2880.000000
    # mean        6.005556
    # std         8.329776
    # min         0.000000
    # 25%         0.000000
    # 50%         0.000000
    # 75%        17.000000
    # max        19.000000
    # Name: Grupo3, dtype: float64
    

    Valeu pessoal, espero que tenham gostado!

    Até a próxima 😊

    Share
    Recommended for you
    Microsoft Azure Cloud Native
    XP Inc. - Cloud com Inteligência Artificial
    Microsoft AI for Tech - Azure Databricks
    Comments (0)
    Recommended for youMicrosoft Certification Challenge #3 DP-100