hugo-pires.github.io

The most exciting phrase to hear in science is not 'Eureka!' but 'That's funny...'

View My GitHub Profile

Todo o começo

Ao longo do seu primeiro ano de existência, nas edições que vão de Junho de 2017 a Maio de 2018, a “Vinho Grandes Escolhas” provou e avaliou centenas de vinhos de todo o país (e alguns do estrangeiro). Sobre cada um deles estão disponíveis algumas variáveis que nos permitiram construir um dataset já previamente compilado.

Os dados estão guardados num ficheiro Excel e queremos que estejam em memória para que possamos usar o Python e trabalhar sobre eles. É aqui que entra uma biblioteca que nos vai acompanhar por muito tempo nesta análise, o Pandas - https://pandas.pydata.org/. Comecemos por importá-la usando uma convenção:

import pandas as pd

Uma das suas principais vantagens é que torna muito fácil carregar em memória (numa dataframe) dados de diferentes formatos - os mais habituais serão EXCEL, CSV, JSON, mas também outros menos comuns que poderão encontrar na documentação.

vinhos = pd.read_excel(´vinhos.xlsx´)

O processo pode ser tão simples quanto isso, mas o método permite especificar um grande número de parâmetros que nos ajudam a lidar com as características especiais de cada ficheiro.

Vamos ver o que criámos de forma rápida, utilizando uma amostra aleatória de três linhas da Dataframe:

classificacao numerica preco selo boa escolha guarda nome regiao castas
16 16.5 SEM ESCOLHA B Casal Sta. Maria Reg. Lisboa Malvasia
16 5.49 BOA ESCOLHA 2017 A Vila Nova Vinho Verde nan
16.5 35 SEM ESCOLHA A Comendador Costa Reg. Península de Setúbal Encruzado

Encontramos exemplos dos valores das diferentes variáveis para cada um dos vinhos - números, texto, siglas.

Também podemos saber o tamanho da dataframe, ou seja o seu número de linhas e colunas:

vinhos.shape
(2328, 18)

Assim, cada linha corresponde a um vinho e cada coluna a uma variável que caracteriza o vinho. No momento da leitura, o Pandas fez algumas ‘suposições’ sobre o tipo de cada variável.

vinhos.dtypes

classificacao numerica      float64
preco                       float64
selo boa escolha             object
guarda                       object
nome                         object
regiao                       object
castas                       object
designativo de qualidade     object
tipo                         object
ano                           int64
produtor                     object
descricao da prova           object
grau                        float64
provador                     object
mes                          object
ano_pub                       int64
idade                         int64
relacao                     float64
dtype: object

Para já podemos fazer uma distinção simples entre:

  • variáveis qualitativas (ou nominais, “categoricals”, em inglês) que são representadas com um tipo object, e sobre as quais é possível apenas estabelecer comprações e
  • variáveis quantitativas que são representadas com um tipo float ou int, e sobre as quais é possível fazer um conjunto mais alargado de operações matemáticas.

No que diz respeito às variáveis numéricas, é fácil conseguir um “resumo” dos seus conteúdos:

vinhos.describe()
  classificacao numerica preco ano grau ano_pub idade relacao
count 2328 2207 2328 2328 2328 2328 2207
mean 16.454 17.587 1939.42 13.7073 2017.3 77.8763 inf
std 0.980051 34.7815 377.123 3.06619 0.457905 377.133 nan
min 0 0 0 0 2017 1 0
25% 16 6 2014 12.5 2017 1 0.905
50% 16.5 9.99 2015 13.5 2017 2 1.65
75% 17 18.5 2016 14 2018 4 2.67
max 21 900 2017 55.8 2018 2018 inf

Podemos assim, para já saber algumas coisas interessantes:

  • que não temos toda a informação sobre todos os vinhos - basta verificar que a linha count não é igual para todos
  • que existem erros a corrigir - a variável grau tem um valor mínimo de 0
  • que o preço médio de um vinho é 17,59 €

Continuaremos o nosso trabalho no pŕoximo post.

Written on October 26, 2018