Bibliotecário em Ciência de Dados: Estatística Descritiva com Python
Para se compreender uma grande quantidade de dados é necessário resumi-los em medidas. Entender como essas medidas se relacionam e descrevem os dados é uma das atividades da ciência de dados.
A forma de se realizar isso é com a estatística descritiva.
Continuando na “resenha” do livro “Data science do zero”. No capítulo cinco, o autor introduz alguns conceitos de estatística descritiva.
Grande parte dos cursos de graduação já possuem estatística básica no currículo, então estes conceitos já são mais conhecidos. Principalmente para nós bibliotecários que vemos em disciplinas de estudos métricos da informação.
Mas fazer isso com Python é a novidade para mim!
Neste artigo falarei sobre:
- Medidas de tendência central;
- Medidas separatrizes;
- Medidas de dispersão;
- Correlação;
- Bibliotecas X Municípios;
- Outros conceitos.
Tudo isso a partir de dados reais da relação de Bibliotecas Públicas do Estado de São Paulo do SNBP, com a tabela de Estimativa da População Brasileira do IBGE.
Bora calcular estatísticas com Python?!
Bibliotecas Públicas do Estado de SP
O Sistema Nacional de Bibliotecas Públicas disponibiliza para a população a relação com todos estes ambientes listados.
Fiquei curioso e quis entender como estão algumas métricas em relação às bibliotecas no estado de SP.
Realizei a limpeza e modelagem dos dados para chegar no ponto que eu precisava.
Mesmo aparentando uma estrutura organizada, a planilha não estava com todos os dados consistentes.
No site é informado a quantidade de 589 bibliotecas públicas (municipais e estaduais) no estado de SP. Na realidade fiz a contagem de 602, mesmo realizando a exclusão de valores com município, nome de biblioteca e endereço iguais.
Para os números da população eu utilizei os dados da estimativa da população brasileira de 2020, pois os dados atualizados das bibliotecas foram de 2020.
Contabilizando os dados das bibliotecas, montei um novo dataset e fiz a junção com a tabela da população.
Então obtive este data set:
Medidas de tendência central
Queremos entender como está a distribuição da quantidade de bibliotecas por município, para isso podemos entender a média.
Média aqui vamos usar a aritmética, mas existe a geométrica e harmônica também.
Para fazer apenas precisamos passar a função .mean() :
Ok! Quase uma biblioteca por município, mas para ver o valor mínimo e máximo com .min() e .max() :
Outras duas medidas interessantes são a mediana e a moda. A mediana é o valor que está no centro da distribuição, muito importante para analisar a distribuição destes valores. Já a moda é o valor que mais aparece no conjunto.
Para a mediana, apenas usar o .median() :
Para a moda, apenas usar o .mode() :
A partir disso podemos visualizar como se comportar a curva de distribuição normal da sua distribuição:
Onde ela apresenta uma curva assimétrica positiva (ou à direita).
Indicando que temos muitas bibliotecas com 0 e 1 e pouquíssimas nas demais frequências.
Se quiser saber mais sobre assimetria, confira esse material.
Tabela de Frequência
Para visualizar em número percentuais criei uma tabela de frequência:
Nossa!
35 % dos municípios do estado não possuem uma biblioteca pública!
Eu torço para que estes dados estejam desatualizados, errados…
Mas a grande maioria fica na categoria de 1 biblioteca com 57,8%
Medidas de separatriz: Box Plot
Nem sempre visualizar tabelas ou apenas histogramas podem ser suficientes para entendermos melhor os dados.
Neste caso, podemos utilizar o famoso Box Plot ou diagrama de caixa.
Se você nunca ouviu falar, confira esse artigo científico.
Mas já tomando a imagem do próprio artigo:
Esta é a estrutura principal do gráfico.
Eu acho incrível, pois conseguimos visualizar como estão todas as medidas separadas por quartis.
Que se quisermos separar ela por quartis, apenas devemos usar a função .quantile()
Aqui usamos a divisão dos quartis 25%, 50% e 75% mas poderíamos fazer também com o decis e percentis.
Vamos fazer um com os dados da biblioteca:
Com este nosso conjunto de dados ele não ficou bonitão, mas conseguimos visualizar toda a concentração de bibliotecas dentro da faixa de 0 e 1.
Diversos outliers e principalmente um que é São Paulo, lá com suas 45 bibliotecas.
Aliás 45 bibliotecas, será que é muito? Ou será que é pouco?
Daqui a pouco falarei sobre isso.
Medidas dispersão
Outra forma de entender os conjuntos de dados é através de medidas de dispersão.
Sem visualizarmos através do boxplot ou outro gráfico, podemos saber como é a medida que indica o quanto esta distribuição está em torno das nossas medidas centrais.
Para isso podemos calcular qual é o desvio médio absoluto.
Que é a distância média de todos os valores que estão do ponto médio do conjunto.
Usamos o absoluto, pois se somarmos todos os desvios teremos um valor igual a 0 pois vão se equilibrar em torno da média.
Poderíamos realizar todos os cálculos para se chegar neste valor, mas o pandas já nos dá a função pronta .mad()
Isso quer dizer que a média da distância absoluta de todos os valores é de 0.646 .
Se a média continuasse 1 e tivéssemos um desvio médio acima de 1 , iríamos perceber que em nossa distribuição temos uma quantidade maior de números acima de 1 do que abaixo de 1.
Outra forma de saber como estes dados variam é através da própria variância que é a média dos desvios (sem ser absoluto) ao quadrado.
Aqui utilizada com o .var()
E a mais famosa medida é o desvio padrão, que é o número que mede o quanto a distribuição da quantidade de bibliotecas estão dispersos. Quanto mais próximo de 0 menos dispersos eles são.
Ele é calculado através da raiz quadrada da variância.
De forma bem simples novamente o python calcula com a função: .std()
Se você quiser conferir mais e guardar estes conceitos de uma forma resumida, confira os infográficos que criei:
Correlação
Será que a quantidade de bibliotecas em um município está relacionada a população dele?
Para isso vamos usar de um conceito que o autor do livro introduziu: a correlação.
Que é a associação entre duas ou mais variáveis. No quanto uma interfere na outra.
Ela é medida pelo coeficiente de Pearson, que varia de -1 a 1.
Se for 1 uma aumenta e a outra também aumenta.
Se for -1 uma aumenta e a outra diminui.
Se for 0, não existe uma dependência linear.
A classificação é:
De 0,9 a 1 : muito forte;
De 0,7 a 09 : forte;
De 0,5 a 0,7 : moderada;
De 0,3 a 0,5 : fraca;
De 0 a 0,3 : não possui.
Para fazermos isso em python, usamos o .corr().
Hum, uma forte correlação.
Podemos plotar essa dispersão e visualizarmos:
São poucos os municípios que possuem muitas bibliotecas para uma quantidade de habitantes menor.
Bibliotecas X Municípios
Ao realizar o cálculo de biblioteca per capita e ordenar a tabela para mostrar os primeiros 20:
Verificamos os municípios que possuem a maior quantidade de pessoas para cada biblioteca:
Lembra que lá atrás perguntei se 45 bibliotecas eram muito ou pouco?
Bem aqui verificamos que em São Paulo para cada biblioteca pública tem aproximadamente 273.894 mil habitantes para “atender”. Isso sem considerar a especificidade da biblioteca, região onde está localizada, etc.
Dentre essa relação há muitas variáveis que devemos considerar para conseguir de fato extrair algumas informações mais concisas.
Mas uma visão geral nós conseguimos ter.
Outros conceitos
Ao final do capítulo, o autor ainda aborda dois pontos muito importantes e legais da estatística para se conhecer ao analisar dados.
- Paradoxo de Simpson
“(…)uma tendência aparece em diversos grupos de dados, mas desaparece ou reverte quando esses grupos são combinados.“
Confira esses dois links para saber mais:
“O Paradoxo de Simpson te mostra que nem tudo é o que parece”
2. Correlação X Causalidade
Nem tudo que se correlaciona, de fato há uma causa.
Se não a quantidade de divórcios em Maine seria causada pelo consumo per capita de margarina:
Ou mesmo o Nicolas Cage aparecer em um filme seria a causa do número de pessoas que se afogaram em uma piscina:
Essas em muitas outras estão nesse site.
Então verifique de fato se faz sentido a correlação das variáveis.
E você, o que achou de realizar estatísticas com python?
Se você chegou até aqui e curtiu, dê o claps, compartilhe e se inscreva para me acompanhar.
Ainda há muito a se explorar…