Slide 1

Slide 1 text

Introdução ao Python com Dados Abertos Élysson Mendes Rezende Palestra IF Sul Minas [email protected]

Slide 2

Slide 2 text

Agenda ● Introdução ● Características da Linguagem Python ● Controle de Fluxo ● Formatos de Dados ● Mãos a Obra ● Referências

Slide 3

Slide 3 text

Sobre Mim ● Formado em Sistemas de Informação na FAI - 2011 ● Pós graduado em “Desenvolvimento Ágil de Aplicativos para Dispositivos Móveis e Web” na Fai - 2015 ● Desenvolvedor Pleno no Grupo “Baraka Conexões de Negócios” ● Experiência com Java, C#, PHP, C e Node ● Trabalho a um ano e meio com Python full time

Slide 4

Slide 4 text

Introdução ● É uma Linguagem de altíssimo nível, orientada a objetos de tipagem dinâmica e forte, interpretada e interativa ● Possui sintaxe clara e concisa ● Incluí diversas estruturas de alto nível e vem com as baterias inclusas! – Mais informações em: https://docs.python.org/2/library/

Slide 5

Slide 5 text

Introdução ● Características do projeto: – Software de código aberto – Pode ser incorporado em produtos proprietários – É possível ser integrado com outras linguagens

Slide 6

Slide 6 text

Introdução ● Fundada em 1990 (mais velho que muitas linguagens famosas) por Guido Van Rossum ● Teve nome inspirado no grupo de comédia britânico “Monty Python” ● Concebida a partir da linguagem ABC

Slide 7

Slide 7 text

Introdução ● Usada por diversas empresas de alta tenologia: – Google (app web) – Globo (predominante nas equipes web) – Disney (animações 3D) – Gimp – Blender – Baraka Conexões de Negócios ;) – Entre outras

Slide 8

Slide 8 text

Características da Linguagem ● Exemplo de execução de um programa em python ● Os arquivos são identificados pela extensão “.py” e podem ser executados usando $ python hello.py

Slide 9

Slide 9 text

Características da Linguagem ● Processo de compilação e execução

Slide 10

Slide 10 text

Características da Linguagem ● Python utiliza tipagem dinâmica – O tipo de uma variável é inferido pelo interpretador em tempo de execução ● Python possuí tipagem forte: – O interpretador verifica se as operações são válidas e não faz coerções automáticas entre tipos incompatíveis ● O interpretador pode ser usado de forma interativa usando o comando “python” no terminal do SO

Slide 11

Slide 11 text

Características da Linguagem ● As metas do projeto foram resumidas por Tim Peters através de um texto chamado “Zen of Python”, pode-se conferir esse texto utilizando a instrução “import this” dentro do modo interativo

Slide 12

Slide 12 text

Características da Linguagem ● Um programa em Python é composto por linhas que podem continuar nas linhas seguintes utilizando o caractere “\”, parênteses, colchetes ou chaves; ● O interpretador entende que uma linha é comentário quando ela inicia com “#”, isso não se aplica em comentários funcionais. – Comentários funcionais são utilizados para alterar a codificação do arquivo fonte ou definir qual interpretador será utilizado

Slide 13

Slide 13 text

Características da Linguagem ● Blocos: – Os blocos de código são delimitados pelo uso de endentação (isso obriga o desenvolvedor a criar um código no mínimo legível) – A linha anterior ao bloco sempre termina com “:”

Slide 14

Slide 14 text

Características da Linguagem ● Exemplo:

Slide 15

Slide 15 text

Características da Linguagem ● Exemplo:

Slide 16

Slide 16 text

Características da Linguagem ● Python é uma linguagem orientada a objetos, sendo assim as estruturas de dados possuem atríbutos (dados em si) e métodos (rotinas associadas aos dados) ● Tanto os atríbutos quanto os métodos são acessados usando ponto “.” – Acesso a um atributo: objeto.atributo – Invocando um método: objeto.metodo(argumentos) ● Também é possível acessar a estrutura de módulos importados usando o ponto

Slide 17

Slide 17 text

Características da Linguagem ● Nomes de variáveis são referências, que podem ser alteradas em tempo de execução ● Existem variáveis mutáveis e não mutáveis ● A criação das variáveis são feitas no momento da atribuição e são desalocadas pelo coletor de lixo, quando não usadas mais (não há nenhuma referência apontando mais para ela)

Slide 18

Slide 18 text

Características da Linguagem ● A linguagem provê alguns tipos númericos – Inteiro (int): i = 1 – Real (float): f = 3.14 ● Além dos tipos númericos convencionais, existem também os inteiros longos que posssuem dimensão arbitrária e são limitados pela memória disponível ● As conversões entre inteiro e longo são automáticas

Slide 19

Slide 19 text

Características da Linguagem ● Python suporta diversas operações aritméticas – Soma (+) – Diferença (-) – Multiplicação (*) – Divisão (/) – Divisão Inteira (//) – Módulo (%) – Potência (**)

Slide 20

Slide 20 text

Características da Linguagem ● Números também suportam operações lógicas – Menor (<) – Maior (>) – Menor ou igual (<=) – Maior ou igual (>=) – Igual (==) – Diferente (!=)

Slide 21

Slide 21 text

Características da Linguagem ● Em python String são imutáveis, portanto, não é possível adicionar, remover ou alterar um caractere de uma string ● Essas operações são realizadas criando- se um nova string ● Possuem dois tipos: – String padrão: s = 'The Butcher' – String unicode: u = u'Élysson MR'

Slide 22

Slide 22 text

Características da Linguagem ● Uma string pode ser iniciada: – Com aspas simples ou duplas – Em diversas linhas (entre três aspas simples ou duplas) – Sem expansão de caraceres ('\n' conterá os caracteres “\” e “n”

Slide 23

Slide 23 text

Características da Linguagem ● Interpolação de strings é feita utilizando o operador “%” ● Interpolação é mais eficiente no uso da memória do que a concatenação convencional ● Alguns símbolos: – “%s”: String – “%d”: Inteiro – “%f”: Real – “%%”: Sinal de porcentagem

Slide 24

Slide 24 text

Características da Linguagem ● Strings podem ser “fatiadas” usando Slices

Slide 25

Slide 25 text

Características da Linguagem ● Listas e Tuplas são coleções de objetos que podem ser de qualquer tipo, inclusive outras coleções ● Listas são mutáveis, tuplas não ● Podem ser fatiadas da mesma forma que as strings ● Sintaxe: – lista = [1, 2, 3, 4, 5] – tupla = (1, 2, 3, 4, 5)

Slide 26

Slide 26 text

Características da Linguagem ● Dicionário é uma lista de associações compostas de chave e valor ● São mutáveis, mas a chave precisa ser um tipo imutável ● Dicionários não garantem que as chaves estarão ordenadas ● Sintaxe: – dicionario = {'a': 1, 'b': 2}

Slide 27

Slide 27 text

Características da Linguagem ● O tipo booleano em python é uma especialização do tipo inteiro – Verdadeiro (True) corresponde ao valor 1 – Falso (False) corresponde ao valor 0 ● Os seguintes valores são considerados falsos: – False – None – '' (string vazia) – [], () e {} (coleções vazaias) – Outras estruturas com tamanho igual a 0

Slide 28

Slide 28 text

Características da Linguagem ● Operadores lógicos: – and: retorna True somente se as expressões são verdadeiras – or: retorna False somente se as expressões são falsas – not: nega a expressão – is: retorna True se 2 referências forem para o mesmo objeto – in: retorna True se o elemento estiver presente numa lista

Slide 29

Slide 29 text

Características da Linguagem ● Funções são blocos de código identificados por um nome, podem receber parametros pré-determinados ● Podem ou não ter retorno, aceitam parametros opcionais e possuem namespace próprio (escopo local)

Slide 30

Slide 30 text

Características da Linguagem ● Os argumentos com valor padrão devem vir por último, depois dos argumentos sem valor padrão ● O valor padrão do argumento é calculado quando a função é definida

Slide 31

Slide 31 text

Controle de Fluxos ● If, elif, else:

Slide 32

Slide 32 text

Controle de Fluxos ● Exemplo:

Slide 33

Slide 33 text

Controle de Fluxos ● O for em python, além de receber uma sequência estática também pode receber sequencias de iteradores e geradores ● A cláusula “break” interrompe o laço, continue pula para próxima interação

Slide 34

Slide 34 text

Controle de Fluxos ● A Função range(m, n, p) é bem util para laços, pois retorna uma lista de inteiros de m a n em passos de p

Slide 35

Slide 35 text

Controle de Fluxos ● O bloco dentro do while é repetido enquanto a condição for verdadeira – Adequado para quando não há como determinar quantas interações vão ocorrer

Slide 36

Slide 36 text

Controle de Fluxos ● Exemplo:

Slide 37

Slide 37 text

Formato de Dados ● Alguns formatos de dados mais conhecidos: – CSV (Comma Separated Values) – JSON (JavaScript Object Notation) – Binário – Texto estruturado – Bancos de dados

Slide 38

Slide 38 text

Formato de Dados ● Apresenta os dados em formato de tabela ● Cada linha em um CSV representa um registro ● Os campos são separados por vírgulas (pode-se usar outro caractere) ● Espaços iniciais e finais são eliminados das Strings ● Usado para troca de dados entre aplicações

Slide 39

Slide 39 text

Formato de Dados ● A linha em vermelho representa o nome dos campos do CSV, colunas separadas por “;“ ● As linhas em verde, representam os dados do CSV, colunas separadas por “;“ ● Quando não houver dados, a coluna fica em branco

Slide 40

Slide 40 text

Mãos a Obra 1)Primeiro vamos ler o arquivo 2)Carregar os dados em uma lista de dicionarios (nome da coluna → valor), imprimir o total de elementos 3)Procurar pelo menor e maior valor do combustível para Minas Gerais 4)Calcular o valor médio das amostras 5)Imprimir os valores dos combustíveis de Pouso Alegre ordenados pela pelo valor médio

Slide 41

Slide 41 text

Referências ➔ www.python.org.br ➔ www.pythonbrasil.org.br ➔ Dive Into Python (www.diveintopython.org) ➔ Python para Desenvolvedores (ark4n.wordpress.com/python) ➔ CSV (http://edoceo.com/utilitas/csv-file-format) ➔ Preços de Combustíveis (http://dados.gov.br/dataset/precos-de- combustiveis)

Slide 42

Slide 42 text

Obrigado!!! Élysson MR Site: elyssonmr.com.br Talk/Email: [email protected] Skype: elyssonmr Twitter: @elyssonmr LinkedIn: http://br.linkedin.com/in/elyssonmr/ Github: https://github.com/elyssonmr