Curso: Data Science - Visualização de Dados com Python

Victor Hugo Negrisoli

Desenvolvedor Back-End & Analista de Dados

In [2]:
import matplotlib.pyplot as plt

01 - Gráfico de Linha

In [7]:
x = [1, 2, 3, 4, 8, 66, 78]
y = [4, 1, 3, 2, 12, 25, 44]

plt.title("Comparativo entre valores dos eixos X e Y - Linha")
plt.xlabel("Dados do eixo X")
plt.ylabel("Dados do eixo Y")
plt.gcf().set_size_inches(16, 8)

plt.plot(x, y)
plt.show()

02 - Gráfico de Barras

In [8]:
barX = [1, 2, 3, 4]
barY = [4, 1.5, 3, 2]

plt.title("Comparativo entre valores dos eixos X e Y - Barra")
plt.xlabel("Dados do eixo X")
plt.ylabel("Dados do eixo Y")
plt.gcf().set_size_inches(16, 8)

plt.bar(barX, barY)
plt.show()

03 - Gráfico de Barras - Comparativos

In [9]:
barX_1 = [1, 2, 3, 4]
barY_1 = [4, 1.5, 3, 2]

barX_2 = [1, 2, 3, 4]
barY_2 = [1, 1, 2, 1]

plt.title("Comparativo entre valores dos eixos X e Y - Barra Comparada")
plt.xlabel("Dados do eixo X")
plt.ylabel("Dados do eixo Y")

plt.bar(barX_1, barY_1, label = "Grupo 1")
plt.bar(barX_2, barY_2, label = "Grupo 2")
plt.legend()
plt.gcf().set_size_inches(16, 8)

plt.show()

04 - Gráfico de Dispersão

In [13]:
x = [1, 2, 3, 4, 5]
y = [5, 7, 1, 3, 0]
z = [100, 100, 100, 1000, 100]

plt.title("Comparativo entre valores dos eixos X e Y - Dispersão")
plt.xlabel("Dados do eixo X")
plt.ylabel("Dados do eixo Y")

plt.plot(x, y, color = "k", linestyle = ":")
plt.scatter(x, y, label = "Pontos no eixo X", color = "r", s = z, marker = "o")
plt.legend()
plt.gcf().set_size_inches(16, 8)

plt.show()

Estudo de Caso: Crescimento da População Brasileira Com Open()

In [27]:
# Variável para definir o diretório do arquivo .csv
csvDiretorio = "dados/populacao-brasileira.csv"
In [28]:
# Leitura do arquivo .csv
dadosCsv = open(csvDiretorio).readlines()

# Define o delimitador do CSV
delimitador = ";"

# Exibir o nome das colunas
colunas = dadosCsv[0].split(delimitador)
print("Coluna 1: {} | Coluna 2: {}".format(colunas[0], colunas[1]))
Coluna 1: ano | Coluna 2: population

In [37]:
# Tratamento do CSV extraindo ambas suas linhas e colunas
linha = []
coluna = []

for i in range(len(dadosCsv)):
    if i != 0:
        linhaCsv = dadosCsv[i].split(delimitador)
        linha.append(int(linhaCsv[0]))
        coluna.append(int(linhaCsv[1]))
In [49]:
# Visualizando os dados tratados do CSV
plt.title("Crescimento Anual da População Brasileira de 1980 a 2016")
plt.xlabel("Ano")
plt.ylabel("Crescimento Populacional")

plt.plot(linha, coluna, linestyle = "--", color = "k")
plt.bar(linha, coluna, color = "#e4e4e4")
plt.gcf().set_size_inches(16, 8)

plt.show()

Estudo de Caso: Crescimento da População Brasileira Com Pandas

In [61]:
# Importação da biblioteca Pandas e leitura do CSV em formato de um DataFrame(df)
import pandas as pd

dadosDf = pd.read_csv(csvDiretorio, delimiter = delimitador)
dadosDf.head(5)
ano = "ano"
population = "population"
In [63]:
# Visualizar os 5 maiores anos de crescimento
dadosDf.sort_values(by = population, ascending = False).head(5)
Out[63]:
ano population
36 2016 206114067
35 2015 204482459
34 2014 202799518
33 2013 201062789
32 2012 193976530
In [64]:
# Descrevendo dados estatísticos do DataFrame
dadosDf.describe()
Out[64]:
ano population
count 37.000000 3.700000e+01
mean 1998.000000 1.635654e+08
std 10.824355 2.662302e+07
min 1980.000000 1.190111e+08
25% 1989.000000 1.417150e+08
50% 1998.000000 1.617902e+08
75% 2007.000000 1.893352e+08
max 2016.000000 2.061141e+08
In [65]:
# Criando a visualização com Pandas

plt.title("Crescimento Anual da População Brasileira de 1980 a 2016")
plt.xlabel("Ano")
plt.ylabel("Crescimento Populacional")


plt.plot(dadosDf[ano], dadosDf[population], linestyle = "--", color = "k")
plt.bar(dadosDf[ano], dadosDf[population], color = "#e4e4e4")
plt.gcf().set_size_inches(16, 8)

plt.show()
In [ ]:
dadosDf2 = dadosDf.sort_values(by = population, ascending = True).head(10)

# Visualizando o top 10 com anos de maiores crescimentos
dadosDf2.plot.bar(x = ano, y = population, rot=0, figsize=(16, 8))

Visualização de Diagrama de Caixa (Boxplot)

In [144]:
# Importando a biblioteca random para geração de números aleatórios
import random

dados = []

total = 100

for i in range(total):
    numero_randomico = random.randint(0, total)
    dados.append(numero_randomico)
    
plt.title("Diagrama de Caixa - Boxplot")

plt.boxplot(dados)
plt.gcf().set_size_inches(16, 8)

Projeto - Comparação de Genomas: Bactéria e Humano

In [165]:
# Lê os dados de junção de pares de bases da bactéria e do humano
bacteria = open("dados/bacteria.fasta").read()
humano = open("dados/human.fasta").read()

nucleotideos = ['A', 'C', 'G', 'T']
contadorBacteria = {}
contadorHumano = {}

# Cria o dicionário de dados dos nucleotídeos
for i in nucleotideos:
    for j in nucleotideos:
        contadorBacteria[i + j] = 0
        contadorHumano[i + j] = 0

print("Bacteria: {}".format(contadorBacteria))
print("Humano: {}".format(contadorHumano))
Bacteria: {'AA': 0, 'AC': 0, 'AG': 0, 'AT': 0, 'CA': 0, 'CC': 0, 'CG': 0, 'CT': 0, 'GA': 0, 'GC': 0, 'GG': 0, 'GT': 0, 'TA': 0, 'TC': 0, 'TG': 0, 'TT': 0}
Humano: {'AA': 0, 'AC': 0, 'AG': 0, 'AT': 0, 'CA': 0, 'CC': 0, 'CG': 0, 'CT': 0, 'GA': 0, 'GC': 0, 'GG': 0, 'GT': 0, 'TA': 0, 'TC': 0, 'TG': 0, 'TT': 0}
In [166]:
# Remove a quebra de linha do arquivo de entrada
bacteria = bacteria.replace("\n", "")
humano = humano.replace("\n", "")
In [203]:
# Define a contagem de cada par
# A cada vez que ocorrer um par deverá ser contado um valor
# Exemplo: AA: 153, AG: 78, TA: 44, TC: 48, ...

for k in range(len(bacteria) - 1):
    contadorBacteria[bacteria[k] + entrada[k + 1]] += 1

for k in range(len(humano) - 1):
    contadorHumano[humano[k] + humano[k + 1]] += 1
    
print("Bacteria: {}".format(contadorBacteria))
print("Humano: {}".format(contadorHumano))

# Define as colunas de nucleotideos das bactérias e as contagens
xbacteria = [i for i in contadorBacteria]
ybacteria = []
for i in contadorBacteria:
     ybacteria.append(int(contadorBacteria[i]))
        
xhumano = [i for i in contadorHumano]
yhumano = []
for i in contadorHumano:
     yhumano.append(int(contadorHumano[i]))
Bacteria: {'AA': 3570, 'AC': 2924, 'AG': 3774, 'AT': 2176, 'CA': 2822, 'CC': 2516, 'CG': 3298, 'CT': 2550, 'GA': 3842, 'GC': 3706, 'GG': 4998, 'GT': 3162, 'TA': 2176, 'TC': 2040, 'TG': 3672, 'TT': 1938}
Humano: {'AA': 3944, 'AC': 3298, 'AG': 3842, 'AT': 3230, 'CA': 2958, 'CC': 6256, 'CG': 5780, 'CT': 3570, 'GA': 4556, 'GC': 5270, 'GG': 6256, 'GT': 3570, 'TA': 2890, 'TC': 3706, 'TG': 3774, 'TT': 3842}
In [208]:
for i in range(len(xbacteria)):
    print("Nucleotídeo: {} | Contagem Bactéria: {} | Contagem Humano: {}".format(xbacteria[i], str(ybacteria[i]), str(yhumano[i])))
Nucleotídeo: AA | Contagem Bactéria: 3570 | Contagem Humano: 3944
Nucleotídeo: AC | Contagem Bactéria: 2924 | Contagem Humano: 3298
Nucleotídeo: AG | Contagem Bactéria: 3774 | Contagem Humano: 3842
Nucleotídeo: AT | Contagem Bactéria: 2176 | Contagem Humano: 3230
Nucleotídeo: CA | Contagem Bactéria: 2822 | Contagem Humano: 2958
Nucleotídeo: CC | Contagem Bactéria: 2516 | Contagem Humano: 6256
Nucleotídeo: CG | Contagem Bactéria: 3298 | Contagem Humano: 5780
Nucleotídeo: CT | Contagem Bactéria: 2550 | Contagem Humano: 3570
Nucleotídeo: GA | Contagem Bactéria: 3842 | Contagem Humano: 4556
Nucleotídeo: GC | Contagem Bactéria: 3706 | Contagem Humano: 5270
Nucleotídeo: GG | Contagem Bactéria: 4998 | Contagem Humano: 6256
Nucleotídeo: GT | Contagem Bactéria: 3162 | Contagem Humano: 3570
Nucleotídeo: TA | Contagem Bactéria: 2176 | Contagem Humano: 2890
Nucleotídeo: TC | Contagem Bactéria: 2040 | Contagem Humano: 3706
Nucleotídeo: TG | Contagem Bactéria: 3672 | Contagem Humano: 3774
Nucleotídeo: TT | Contagem Bactéria: 1938 | Contagem Humano: 3842
In [224]:
# Visualização dos dados
plt.title("Contagens dos Nucleotídeos das Bactérias x Humanos")
plt.xlabel("Nucleotídeo")
plt.ylabel("Contagem")

plt.plot(xbacteria, ybacteria, color = "k", linestyle = "--", label = "Bactéria", marker = "x")
plt.plot(xhumano, yhumano, color = "r", linestyle = "--", label = "Humano", marker = "o")
plt.gcf().set_size_inches(16, 8)
plt.legend()

plt.show()
In [223]:
plt.title("Contagens dos Nucleotídeos das Bactérias x Humanos")
plt.xlabel("Nucleotídeo")
plt.ylabel("Contagem")

plt.plot(xbacteria, ybacteria, color = "r", linestyle = "--", label = "Bactéria", marker = "o")
plt.bar(xhumano, yhumano, color = "#e4e4e4", linestyle = "--", label = "Humano")
plt.gcf().set_size_inches(16, 8)
plt.legend()

plt.show()