quinta-feira, 19 de agosto de 2021

O Básico de Python

Python é uma linguagem Open-Source de propósito geral usado bastante em data science, machine learning, desenvolvimento de web, desenvolvimento de aplicativos, automação de scripts, fintechs e mais.

A ideia deste post é fazer um resumo, descrevendo a sintaxe da linguagem e suas estruturas (condição, repetição, e dados).


#criação e exibição de conteúdo de variáveis
nome = "Hugo" #tipo string

#printando uma variável
print(nome)
idade = 47 #tipo inteiro
print(idade)

#estrutura de condição
if idade == 48:
  print(idade)
else:
  print("Esse é o texto que vai aparecer")

#elif
media = 6
if media <5:
  print('reprovado')
elif media > 5 and media < 7:
  print('recuperacao')
else:
  print('aprovado')

#Estruturas de repetição
#while
gastos = 0
valor_gasto = 0
while gastos < 10:
  #input serve para capturar valores fornecidos pelo usuário
  #O int é para converter explicitamente o valor da variável.
  valor_gasto = int(input("Digite o valor do novo gasto"))
  gastos = gastos + valor_gasto
print(gastos)

#for
for i in range(110):
    print(i)


#Criação de uma função
def mais_um_ano(idade):
  return idade + 1

#chamando a função
mais_um_ano(idade)

#Estrutura de dados
#listas
lista = ["item1""item2""item3"]
print(lista)

#Como pegar um item de uma lista
print(lista[0]) #primeiro elemento da lista

#pegar o último elemento da lista
print(lista[-1])

#Como iterar sobre a lista
for i in lista:
  print(i)

#dicionários
dados = {"nome":"Hugo","idade":47}

#printando itens do dicionário]
print(dados)

#printando um item do dicionário
print(dados["idade"])

#Iterando na lista

for i in dados:
  print(dados[i])

#tuplas são imutáveis
nome_da_tupla = (123#tupla de inteiros

nome_da_tupla = (1"olá"1.5#tupla heterogênea

print(nome_da_tupla)

Veja que o Python é uma linguagem simples. O que dá poder a ela é são os pacotes/bibliotecas desenvolvidas por terceiros. Vamos falar sobre alguns pacotes em outros Posts.

Inté.

Análise de dados na prática com o Pandas

 Lembra daquele trabalho que a gente fazia para promover a transformação e a higienização de dados no Excel?  Não tínhamos problema em trabalhar dessa forma enquanto o volume de dados era pequeno. Porém na era do Big Data planilhar e analisar os dados no excel virou um problema. O pacote Pandas surgiu para resolver esse problema. 

A biblioteca Pandas nos permite fazer análises exploratórias em conjunto de dados. Ela dá ao Python, a capacidade de trabalhar com dados tipo planilha, permitindo carregar, manipular e combinar dados.

A ideia aqui é apresentar um trabalho prático, de modo a assimilar conhecimento sobre o Pandas, sendo necessário apenas conhecimento básico das estruturas de dados do Python.

1 - Vamos criar um arquivo pandas.csv

2- importar o pacote pandas

#importando a biblioteca pandas
import pandas as pd

3- Carregar o Dataset sob o qual faremos a análise exploratória. No pandas, um dataset é conhecido como Dataframe.

#Carregando o dataset retirando linhas com problema e 
#utilizando como separador ponto e vírgula
df = pd.read_csv("Gapminder.csv",error_bad_lines=False, sep=';')

3- Visualizando os dados
#visualizando as 5 primeiras linhas
df.head(10) # ao passar um valor inteiro, você determina a quantidade
de linhas retornadas


















5- Renomeando colunas

#Renomeando colunas
df.rename(columns=
{"country":"País","continent":"Continente","year":"Ano",
"lifeExp":"Expectativa de vida","pop":"População","gdpPercap":"PIB"})

6- Retornando o número de linhas e colunas
#retornando o número de linhas e colunas
df.shape
(3312, 6)

7- Retornando o nome das colunas

#Retornando o nome das colunas 
df.columns
Index(['country', 'continent', 'year', 'lifeExp', 'pop', 'gdpPercap'], dtype='object')

8- Retornando o nome das colunas
#retornando os tipos de dados das colunas
df.dtypes

country object continent object year int64 lifeExp float64 pop int64 gdpPercap float64 dtype: object

9- Retornando as últimas linhas
#retornando as últimas linhas
df.tail()












10- Retornando dados estatísticos

#Retornando dados estatísticos
df.describe()

















11 - Pegando valores únicos na Coluna (Distinct)
# pegando valores únicos na coluna Continent
df['continent'].unique()

array(['Asia', 'Europe', 'Africa', 'Americas', nan, 'FSU', 'Oceania'], dtype=object)

12 - Filtrando dados (where)
#filtrando dados
Oceania = df.loc[df["continent"] == "Oceania"]
Oceania.head()












13 - Pegando a média de um campo
#média da expectativa de vida
df.groupby("year")["lifeExp"].mean()

14 - Agrupando dados (paises por continente count())
#agrupando dados por continente
df.groupby("continent")["country"].nunique()

15 - Soma e Média dos valores de um campo.

#Soma dos valores de um campo
df["gdpPercap"].sum()

#Média de valores de um campo
df["gdpPercap"].mean()

Neste exemplo, trabalhamos com arquivos .csv, mas é possível também trabalhar com planilhas Excel, dados provenientes de bancos de dados, entre outros.

Até a próxima!

sábado, 7 de agosto de 2021

O que é Engenharia de Dados

         Até pouco tempo atrás, nos deparávamos com um cenário onde os sistemas eram monolíticos, persistindo e consultando informações em bancos de dados relacionais. 

        Os mais avançadinhos criavam bancos de dados dimensionais visando performance e facilidade na busca das informações.

        Com o tempo, esse cenário foi mudando. Com o advento da Internet e Internet das coisas, hoje praticamente tudo gera informação, nem sempre de forma estruturada. O formato varia de acordo com o dispositivo que gera a informação. Exemplo: Câmeras que geram fotos, roteadores que geram logs em formato txt, uma peça de um automóvel que indica ao fabricante a necessidade de reparo, entre outros.

        Daí surge algumas questões: Como e onde guardar esses dados? Como produzir informação com os dados gerados se estes, nem sempre são estruturados e possui diversos formatos. Seria o DBA o responsável por resolver essas questões? É nesse cenário que surge a Engenharia de Dados, visando promover a governança das estruturas que irão receber dados desta natureza.

     Em um outro post falamos de ETL, aonde extraímos dados de bancos relacionais, realizamos transformações e geramos informações de acordo com a necessidade do negócio envolvido, com a finalidade de alimentar um banco de dados dimensional(Um DW estruturado). Mas, quando estamos lidando com dados semiestruturados ou ainda dados não estruturados, a ordem dos fatores se altera. Ocorre outro tipo de processo que é conhecido como ELT. É feita a carga desses dados não estruturados para o que chamamos de Datalake, onde é feita a transformação dos dados.

    Resumindo, um Engenheiro de Dados é o profissional que desenvolve, opera e mantem estruturas de dados complexas e heterogêneas, sendo responsável pela segurança, integridade, disponibilidade e confiabilidade desses dados.