#-----------------------------------------------------------------------
#                                            Prof. Dr. Walmes M. Zeviani
#                                leg.ufpr.br/~walmes · github.com/walmes
#                                        walmes@ufpr.br · @walmeszeviani
#                      Laboratory of Statistics and Geoinformation (LEG)
#                Department of Statistics · Federal University of Paraná
#                                       2019-mai-18 · Curitiba/PR/Brazil
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
# Pacotes.

import see
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns

#-----------------------------------------------------------------------
# Importação.

url = "http://leg.ufpr.br/~walmes/data/carros_venda_webmotors_270314.txt"
tb = pd.read_csv(filepath_or_buffer = url, delimiter = "\t")

# Inspeção.
tb.shape
tb.columns
tb.info()

# Resumo descritivo global.
tb.describe(include = [np.number])
tb.describe(include = [np.object])

# Tabelas de frequência.
tb.loc[:, "carro"].value_counts()
tb.loc[:, "cor"].value_counts()
tb.loc[:, "anomod"].value_counts()

# Criar a variável ano partindo anomod no delimitador `/`.
tb["ano"] = tb.anomod.str.split('/', expand = True).iloc[:, 0]
tb["ano"].value_counts()

tb["ano"].dtype
tb["ano"] = tb["ano"].astype(int)
tb["ano"].dtype

#-----------------------------------------------------------------------
# Qual e quantidade de carros Gol de cada ano?

tb_gol = tb.query('carro == "gol"')
tb_gol.shape

# Cria uma tabela com ano e frequência.
x = tb_gol.groupby(['ano']).size()
x = x.reset_index()
x.columns = ['ano', 'freq']
x

# Gráfico de pontos de linhas.
sns.scatterplot(x = 'ano', y = 'freq', data = x)
sns.lineplot(x = 'ano', y = 'freq', data = x)
plt.xlabel('Ano')
plt.ylabel('Número de veículos')
plt.show()

# Qual a distância média percorrida por veículos Gol em cada ano/modelo?
# Cria uma tabela com ano e frequência.
tb.columns

# x = tb_gol.groupby(['ano']).agg({'km': ["mean", "size"]})
x = tb_gol.groupby(['ano']).agg({'km': {"media": "mean",
                                        "qtd": "size"}})

# x.columns.get_level_values(0)
# x.columns.get_level_values(1)
x.columns = x.columns.get_level_values(1)
x = x.reset_index()
x

# Gráfico de pontos de linhas.
sns.scatterplot(x = 'ano', y = 'media', size = 'qtd', data = x)
sns.lineplot(x = 'ano', y = 'media', data = x)
plt.xlabel('Ano')
plt.ylabel('Distância percorrida média')
plt.show()

#-----------------------------------------------------------------------
# Refazer a análise usando Gol e Uno.

tb_gp = tb[tb.carro.isin(["gol", "uno"])]
tb_gp.shape

x = tb_gp.groupby(['ano', 'carro']).size()
x = x.reset_index()
x.columns = x.columns[0:2].append(pd.Index(['freq']))

# Quantidade por carro e ano.
sns.scatterplot(x = 'ano', y = 'freq', hue = 'carro', data = x)
sns.lineplot(x = 'ano', y = 'freq', hue = 'carro',
             data = x, legend = None)
plt.xlabel('Ano')
plt.ylabel('Número de veículos')
plt.show()

# Relação preço ~ distância.
sns.scatterplot(x = 'km', y = 'preco', hue = 'carro', data = tb_gp)
plt.xlabel('Distância percorrida')
plt.ylabel('Preço de venda')
plt.show()

#-----------------------------------------------------------------------
