Objetivos: Pequenos exemplos para uso da linguagem python em sala de aula, em qualquer projetos de software. Exemplos que podem ser citados e comentados nas disciplinas que necessitam do apoio de uma linguagem de programação. Como prerequisito é necessário ter uma IDE instalada. Este material é extremamente resumido e supões que o leitor tem conhecimento básico de programação ou pelo menos português estruturado. (Esta é a versão: 2).
Observações:
1. Este material pode ser usado como suporte às disciplinas de: lógica,
algoritmos, programação e projeto de sistemas.
2. Este material foi ou poderá ser usado em sala de aula/laboratório/EAD.
3. É um prerequisito conhecimentos básicos de programação e uso de
IDE (os códigos foram testados com Spyder).
4. Os exemplos estão em python 3.
5. Esta página poderá passar por atualizações sem aviso prévio.
6. Se houver necessidade do uso de outras ferramentas de desenvolvimento
de software além de python, consulte a lista de ferramentas:
https://github.com/monteiro74/lista_de_ferramentas
- Tutorial sobre python
- Sumário
- 1 - Conceitos e exemplos gerais da linguagem
- 1.1. Comando print
- 1.2. Comentário
- 1.3. Operações matemáticas
- 1.4. Tipos de dados e variáveis
- 1.5. Operadores
- 1.5.1. Operadores matemáticos
- 1.6. Tratamento de exceções
- 1.7. Estruturas condicionais (controle de fluxo)
- 1.8. Estruturas de repetição
- 1.9. Funções
- 1.10. Arquivos
- 1.11. Listas
- 1.11.1. Acessando elementos individuais da lista
- 1.11.2. Percorrer elementos de uma listas
- 1.11.3. Tamanho de listas
- 1.11.4. Adicionando itens na lista
- 1.11.5. Procurar um elemento na lista
- 1.11.6. Subtraindo elementos de uma lista
- 1.11.7. Ordenando itens da lista, sort
- 1.11.8. Ordenando itens da lista, sorted
- 1.11.9. Pop
- 1.11.10. Funções para tratamento de listas
- 1.11.10.1. List comprehensions
- 1.12. Tuplas
- 1.13. Sets
- 1.14. Dicionários
- 1.15. Comparação List, Tuple, Set, Dictionary
- 1.16. Números aleatórios
- 1.17. Arrays
- 1.18. Módulos
- 1.19. Input
- 1.20. Standard Library
- 2. Programação Orientada a Objetos
- 3 - Banco MySQL (MariaDB)
- 4. - Banco MongoDB
- 5 - Plotagem de gráficos
- 5.1. Plot e gráficos
- 5.2. Gráfico com matplotlib
- 5.3. Gráfico pizza
- 5.4. Grafico com numpy
- 5.5. Gráfico da distribuição normal
- 5.6. Gráfico de dispersão
- 5.7. Gráfico boxplot com seaborn
- 5.8. Gráfico de histograma
- 5.9. Gráfico de histogramas com Seabor e KDE
- 5.10. Gráfico com Matplotlib, KDE, Seaborn, Pyplot
- 6. Estatísticas
- 7. GUI
- 8. Analise de dados
- 9. 3D
- Lista de IDEs
- Lista de editores de códigos
- Referências
- Avisos, licença, observações, estatísticas
Impressão na tela, exemplo
print("teste")
print("teste")
Usando "#"
# isto não é impresso
print("teste1")
""" isto não é impresso
print("teste2")
"""
print("teste3")
# -*- coding: utf8-8 -*-
print("Olá mundo!")
print(2+2)
print(2-2)
print(2*2)
print(2/2)
O python utiliza 3 tipos numéricos: int, float e complex
# -*- coding: utf-8 -*-
# declarações/atribuições
inteiro1 = 35656222554887711
inteiro2 = -3255522
float1 = 7.35
float2 = -43.75
complexo1 = 1J
complexo2 = 4.35 + 4.55j
# em seguida realizamos as operações
print("Exemplo de inteiro: " + str(inteiro1))
print("Exemplo de inteiro: " + str(inteiro2))
print("Exemplo de float ou flutuante: " + str(float1))
print("Exemplo de float ou flutuante: " + str(float2))
print("Exemplo de complexo ou científico: " + str(complexo1))
print("Exemplo de complexo ou científico: " + str(complexo2))
O resultado será:
Exemplo de inteiro: 35656222554887711
Exemplo de inteiro: -3255522
Exemplo de float ou flutuante: 7.35
Exemplo de float ou flutuante: -43.75
Exemplo de complexo ou científico: 1j
Exemplo de complexo ou científico: (4.35+4.55j)
print(2**3)
print(10/3)
O resultado é o resto o operador é obtido pelo %
exemplo:
print(10%3)
Exemplo de uma variável com caracteres (strings)
mensagem = "teste"
print(mensagem)
print(mensagem)
Regras para variáveis:
- não pode ter espaço
- não pode ter caracteres especiais
- as variáveis são case sensitive
- o sinal de = é chamado de operador de atribuição, não é um sinal ade igual !
Alguns exemplos de tipos de dados, mais comuns:
Tipo de dado | Exemplo |
---|---|
Número (Inteiro) | 3 |
Número flutuante (com decimais) | 2.34 |
String (texto) | "teste teste" |
Boolean | TRUE ou FALSE |
Outros tipos:
- Numéricos: int, float, complex
- Sequenciais: list, tuple, range
- Mapeamento/mapa/map: dict
- Set (conjunto): set, frozenset
- Binary: bytes, bytearray, memoryview
- None: NoneType
Exemplo:
var1 = 1 # isto é um comentario
var2 = 3.5 # estar variável é do tipo flutuante (inteiro com valor decimal)
var3 = "isto é uma string"
var4 = True
Se o código acima for executado, o resultado na tela será nada, pois apenas se armazenou os valores nas variáveis, não foram feitas nenhuma operação com elas.
Outro exemplo:
var1 = 1
var2 = 3.5
var3 = "isto é uma string"
print(var1)
Se uma variável for declarada com um valor e posteriormente for feita outra declaração, a segunda declaração irá substituir a anterior.
No exemplo abaixo o valor 2 irá substituir o valor 1:
var1 = 1
var1 = 2
print(var1)
# primeiro declaramos as variaveis
var1 = "aula"
var2 = "de"
var3 = "python"
# em seguida realizamos as operações
texto = var1 + " " + var2 + " " + var3
print(texto)
O resultado será:
aula de python
# primeiro declaramos as variaveis
var1 = "abc"
contar_letras = len(var1)
# em seguida realizamos as operações
print(contar_letras)
O resultado será:
3
# primeiro declaramos as variaveis
var1 = "abcde"
# em seguida realizamos as operações
print(var1[3])
O resultado será:
d
# primeiro declaramos as variaveis
var1 = "abcdefghijklmno"
# em seguida realizamos as operações
print(var1[1:5])
O resultado será:
bcde
# primeiro declaramos as variaveis
var1 = "ABCDEFghijklm"
# em seguida realizamos as operações
print(var1.lower())
print(var1.capitalize())
print(var1.upper())
O resultado será:
abcdefghijklm
Abcdefghijklm
ABCDEFGHIJKLM
Strip, remove espaços em branco
# primeiro declaramos as variaveis
var1 = " ABCDEFghijklm "
# em seguida realizamos as operações
print(var1.strip())
O resultado será:
ABCDEFghijklm
Split, converte a string em uma lista
# primeiro declaramos as variaveis
var1 = "uva, banana, arroz, carne, leite"
# em seguida realizamos as operações
print(var1.split())
O resultado será:
['uva,', 'banana,', 'arroz,', 'carne,', 'leite']
Exemplo de buscas em strings
# primeiro declaramos as variaveis
var1 = "uva, banana, arroz, carne, leite"
substring1 = var1.find("carne")
substring2 = var1.find("feijao")
# em seguida realizamos as operações
print(substring1)
print(var1[substring1:])
print(substring2)
O resultado será:
20
carne, leite
-1
Exemplo de substituição em strings
# primeiro declaramos as variaveis
var1 = "uva, banana, arroz, carne, leite"
var2 = "feijao"
# em seguida realizamos as operações
print(var1)
print(var1.replace("uva", var2))
O resultado será:
uva, banana, arroz, carne, leite
feijao, banana, arroz, carne, leite
# -*- coding: utf-8 -*-
# declarações/atribuições
var1 = "Tutorial"
var2 = "sobre"
var3 = "python"
# em seguida realizamos as operações
print("Tutorial sobre python")
print(var1, var2, var3)
print("Este é um {} {} {}".format(var1, var2, var3))
print(f"Este é um {var1} {var2} {var3}")
O resultado será:
Tutorial sobre python
Tutorial sobre python
Este é um Tutorial sobre python
Este é um Tutorial sobre python
Variáveis locais e globais ou escopo local e global.
# -*- coding: utf-8 -*-
# declarações/atribuições
x = "global"
def funcao1():
x = "local"
print("Exemplo de variavel: " + x)
# em seguida realizamos as operações
funcao1()
print("Exemplo de variavel: " + x)
O resultado será:
Exemplo de variavel: local
Exemplo de variavel: global
Recordando que = é um operador de atribuição.
Revisão de alguns operadores..
Operador | Operação |
---|---|
+ | Soma |
- | Subtração |
* | Multiplicação |
/ | Divisão |
** | Exponenciação |
% | Módulo |
Operadores relacionais são usados para fazer comparações, por exemplo:
Operador | Operação |
---|---|
== | Igualdade |
!= | Diferença |
> | Maior que |
< | Menor que |
>= | Maior ou igual |
<= | Menor ou igual |
exemplos:
# primeiro declaramos as variaveis
var1 = 5
var2 = 2
# em seguida realizamos as operações
print(var1 == var2)
print(var1 != var2)
print(var1 > var2)
print(var1 < var2)
print(var1 >= var2)
print(var1 <= var2)
O resultado acima será:
False
True
True
False
True
False
Permite comparações entre valores das variáveis
Operador | Operação |
---|---|
OR | Ou, ao menos uma condição é verdadeira |
AND | E, ambas condições são verdadeiras |
NOT | Negação, inverter valor |
Exemplos:
# primeiro declaramos as variaveis
var1 = 5
var2 = 2
var3 = 1
var4 = 1
# em seguida realizamos as operações
print(var1 == var2 and var1 == var3)
print(var3 == var4)
O resultado acima será:
False
True
# declarações/atribuições
a = 2
b = 0
# em seguida realizamos as operações
try:
print(a/b)
O resultado será:
SyntaxError: expected 'except' or 'finally' block
# declarações/atribuições
a = 2
b = 0
# em seguida realizamos as operações
try:
print(a/b)
except:
print("ocorreu um erro!")
O resultado será:
ocorreu um erro!
Também chamados de comandos estruturais. Servem para realizar avaliações ou testes entre variáveis.
Depois de uma condiçõa existe um bloco de código criado com uma tabulação.
exemplos:
# primeiro declaramos as variaveis
var1 = 5
var2 = 2
var3 = 1
var4 = 1
# em seguida realizamos as operações
if var1 > var4:
print("a var1 é maior que var4")
if var1 < var4:
print("a var1 é menor que var4")
O resultado acima será:
a var1 é maior que var4
no exemplo acima somente um dos if é executado se a condição verdadeira ocorrer.
Outro exemplo com if...else...
# primeiro declaramos as variaveis
var1 = 1
var2 = 3
# em seguida realizamos as operações
if var1 > var2:
print("a var1 é maior que var2")
else:
print("a var1 é menor que var2")
O resultado acima será:
a var1 é menor que var2
Outro exemplo com elif:
# primeiro declaramos as variaveis
var1 = 1
var2 = 3
# em seguida realizamos as operações
if var1 == var2:
print("numeros iguais")
elif var1 < var2:
print("var1 menor que var2")
elif var2 > var1:
print("var2 maior que var1")
else:
print("valores não sao iguais")
O resultado acima será:
var1 menor que var2
Outro exemplo com elif:
# -*- coding: utf-8 -*-
# declarações/atribuições
x = int(input("Digite um numero: "))
# em seguida realizamos as operações
if x < 0:
x = 0
print('fornecido numero negativo')
elif x == 0:
print('Zero')
elif x == 1:
print('Um')
else:
print('Maior que um')
O resultado acima será:
Maior que um
# -*- coding: utf-8 -*-
for num in range(1, 11):
print(num)
if num == 5:
break
O resultado acima será:
1
2
3
4
5
# -*- coding: utf-8 -*-
for numero in range(1, 10):
print(numero)
if numero % 2 == 0:
print("numero par", numero)
continue
if numero == 5:
break
O resultado acima será:
1
2
numero par 2
3
4
numero par 4
5
Pass pode ser usado quando existe a necessita de uma comando/parâmetro, mas ele não tratá efeito e requerer uma ação.
# -*- coding: utf-8 -*-
numero = 0
while True:
pass
for numero in range(1,21):
print(numero)
if numero == 4:
break
break
O resultado acima será:
1
2
3
4
Também pode ser usando para permitir uma classe tenha um conteúdo inicial enquanto o restanto do projeto da classe não esta totalmente pronto.
# -*- coding: utf-8 -*-
class Classe1:
pass
Match e case, são equivalentes ao Swtich do C# e Java.
# -*- coding: utf-8 -*-
# declarações/atribuições
escolha = input("Digite um número de 1 a 4 ")
# operações
match escolha:
case "1":
print("Digitado: 1")
case "2":
print("Digitado: 2")
case "3":
print("Digitado: 3")
case "4":
print("Digitado: 4")
case _:
print("Nenhum das alternativas")
O resultado acima será:
Digite um número de 1 a 4 2
Digitado: 2
Também são chamados de laços de repetição ou iteradores. Iterar é repetir. Desta forma um bloco (ou várias linhas de código) serão repetidas até que uma condição seja satisfeita.
# primeiro declaramos as variaveis
var1 = 1
# em seguida realizamos as operações
while var1 < 10:
print(var1)
var1 = var1+2
print("------------")
# primeiro declaramos as variaveis
var2 = 5
# em seguida realizamos as operações
# x= é o mesmo que x=x+1
while var2 < 8:
print(var2)
var2 += 1
O resultado acima será:
1
3
5
7
9
------------
5
6
7
8
9
# -*- coding: utf-8 -*-
numero = 0
while True:
for numero in range(1,21):
print(numero)
if numero == 4:
break
break
O resultado acima será:
1
2
3
4
Este laço usado para percorrer uma estrutura de dados, como uma lista, por exemplo:
# declarações/atribuições
primeira_lista = [1,2,3,"ana","bob",True,5.66,0,abc]
# em seguida realizamos as operações
for i in primeira_lista:
print(i)
O resultado acima será:
1
2
3
4
ana
bob
True
5.66
0
3
# em seguida realizamos as operações
# conta de 5 até 15 pulando 3 valores
for i in range (5,15,3):
print(i)
O resultado será:
5
8
11
14
Funções são blocos de código. Em python uma função vem precedida da palavra def, seguido do nome e os parâmetros da função. Uma função que já foi utilizada com frequencia até o momento foi print(). O bloco de comandos vai depois de uma tabulação.
Exemplo:
# primeiro declaramos a função
def soma(valor1, valor2):
print(valor1)
print(valor2)
return valor1 + valor2
def subtracao(valor1, valor2):
print(valor1)
print(valor2)
return valor1 - valor2
# em seguida realizamos as operações
resultado1 = soma(1, 5)
resultado2 = subtracao(7, 3)
print("----")
print(resultado2)
O resultado será:
1
5
7
3
----
4
Exemplo de chamada recursiva:
# primeiro declaramos a função
def soma(valor1, valor2):
print(valor1)
print(valor2)
return valor1 + valor2
def subtracao(valor1, valor2):
print(valor1)
print(valor2)
return valor1 - valor2
# em seguida realizamos as operações
resultado1 = soma(1, 5)
resultado2 = subtracao(7, 3)
print("----")
print(resultado2)
print("exemplo de chamada recursiva:")
print(soma(resultado1, resultado2))
O resultado será:
1
5
7
3
----
4
exemplo de chamada recursiva:
6
4
10
# -*- coding: utf-8 -*-
# declarações/atribuições
def funcao1():
"""
Chamada a função funcao1
"""
pass
# operações
print(funcao1.__doc__)
O resultado será:
Chamada a função funcao1
O python pode manipular arquivos. Para abrir um arquivo é utilizada a função open. Os modos de trabalho com arquivos são:
Modo | Descrição |
---|---|
r | Abre o arquivo para leitura, é o default |
w | Abre o arquivo para leitura; criar um arquivo se o arquivo não existe ou troca o arquivo se existe. |
x | Abra um arquivo para criação exclusiva. Se o arquivo já existir, a operação falhará |
a | Abra um arquivo para anexar no final do arquivo sem truncá-lo. Cria um novo arquivo se ele não existir. |
t | Abre o arquivo em modo texto (default) |
b | Abre um arquivo em modo binário. |
Exemplo de uso das funções para manipular arquivos:
# declarações/atribuições
arquivo1 = open("arquivo_teste.txt")
# operações
print(arquivo1)
O resultado será:
<_io.TextIOWrapper name='arquivo_teste.txt' mode='r' encoding='cp1252'>
Exemplo do uso de readlines:
# declarações/atribuições
arquivo1 = open("arquivo_teste.txt")
linhas1 = arquivo1.readlines()
# operações
print(linhas1)
O resultado será:
['caneta\n', 'apagador\n', 'caderno']
Outro exemplo com for para percorrer todo o arquivo:
# declarações/atribuições
arquivo1 = open("arquivo_teste.txt")
conteudo1 = arquivo1.readlines()
# operações
for linha1 in conteudo1:
print(linha1)
O resultado será:
caneta
apagador
caderno
# declarações/atribuições
arquivo1 = open("arquivo_teste.txt")
conteudo1 = arquivo1.read()
# operações
print(conteudo1)
O resultado será:
caneta
apagador
caderno
Outros exemplos:
Retorna apenas uma linha do arquivo selecionado.
Usa como parâmetro o número de bytes que deverá retornar, -1 significa tudo.
# declarações/atribuições
arquivo1 = open("arquivo_teste.txt")
conteudo1 = arquivo1.readline(-1)
# operações
print(conteudo1)
O resultado será:
caneta
O parâmetro w esta criando o arquivo.
arquivo2 = open("arquivo_teste2.txt", "w")
arquivo2.write("primeira informação dentro do arquivo_teste2")
arquivo2.close()
O resultado poderá ser visto na pasta onde o programa foi chamado, lá deverá haver um arquivo .txt novo.
O parâmetro a adiciona uma nova linha no final do arquivo preexistente.
arquivo2 = open("arquivo_teste2.txt", "a")
arquivo2.write("primeira informação dentro do arquivo_teste2 !!!! \n")
arquivo2.close()
São um conjunto de dados para armazenar multiplos itens em uma única variável.
# declarações/atribuições
lista1 = ["feijao", "arroz", "carne"]
# operações
print(lista1)
O resultado será:
['feijao', 'arroz', 'carne']
Neste exemplo, queremos acessar um elemento específico da lista:
# declarações/atribuições
lista1 = [1,2,3,4,"ARROZ", "Carne", 3.78, False, True]
# em seguida realizamos as operações
print(lista1[4])
print(lista1[5])
O resultado será:
ARROZ
Carne
Se for solicitado um elemento fora da lista, o interpretador irá apresentar um erro dizendo que o índice esta fora da faixa de valores.
# declarações/atribuições
lista1 = [1,2,3,4,"ARROZ", "Carne", 3.78, False, True]
# em seguida realizamos as operações
print(lista1[9])
O resultado será:
IndexError: list index out of range
Usando o laço for:
# declarações/atribuições
lista1 = [1,2,3,4,"ARROZ", "Carne", 3.78, False, True]
# em seguida realizamos as operações
for item in lista1:
print(item)
O resultado será:
1
2
3
4
ARROZ
Carne
3.78
False
True
Para descobrir o tamanho (em quantidade de elementos) de uma lista, utiliza-se a função len.
# declarações/atribuições
lista1 = [1,2,3,4,"ARROZ", "Carne", 3.78, False, True]
# em seguida realizamos as operações
print(len(lista1))
O resultado será:
9
# declarações/atribuições
lista1 = [1,2,3,4,"ARROZ", "Carne", 3.78, False, True]
# em seguida realizamos as operações
lista1.append("item_adicionado")
print(lista1)
O resultado será:
[1, 2, 3, 4, 'ARROZ', 'Carne', 3.78, False, True, 'item_adicionado']
# declarações/atribuições
lista1 = [1,2,3,4,"ARROZ", "Carne", 3.78, False, True]
# em seguida realizamos as operações
if 3 in lista1:
print("elemento 3 encontrado")
if "ARROZ" in lista1:
print("elemento ARROZ encontrado")
O resultado será:
elemento 3 encontrado
elemento ARROZ encontrado
# declarações/atribuições
lista1 = [1,2,3,4,"ARROZ", "Carne", 3.78, False, True]
# em seguida realizamos as operações
print("Lista completa: ")
print(lista1)
print("Removido o item 5: ")
del lista1[5] # remove o item 5
print(lista1)
print("Remove tudo a partir do item 5: ")
del lista1[5:] # remove a partir do item 5
print(lista1)
print("Apaga todos os itens da lista")
del lista1[:] # remove todos os itens
print(lista1)
O resultado será:
Lista completa:
[1, 2, 3, 4, 'ARROZ', 'Carne', 3.78, False, True]
Removido o item 5:
[1, 2, 3, 4, 'ARROZ', 3.78, False, True]
Remove tudo a partir do item 5:
[1, 2, 3, 4, 'ARROZ']
Apaga todos os itens da lista
[]
# declarações/atribuições
lista1 = [7,8,4,3,5,6,9,2]
# em seguida realizamos as operações
lista1.sort()
print(lista1)
O resultado será:
[2, 3, 4, 5, 6, 7, 8, 9]
# declarações/atribuições
lista1 = [7,8,4,3,5,6,9,2]
# em seguida realizamos as operações
print("Imprime decrescente: ")
lista1.sort(reverse=True)
print(lista1)
print("Imprime crescente: ")
lista1.sort(reverse=False)
print(lista1)
O resultado será:
Imprime decrescente:
[9, 8, 7, 6, 5, 4, 3, 2]
Imprime crescente:
[2, 3, 4, 5, 6, 7, 8, 9]
# declarações/atribuições
lista1 = [7,8,4,3,5,6,9,2]
# em seguida realizamos as operações
lista1.reverse()
print(lista1)
O resultado será:
[2, 9, 6, 5, 3, 4, 8, 7]
# declarações/atribuições
lista1 = [7,8,4,3,5,6,9,2]
nova_lista2 = sorted(lista1)
# em seguida realizamos as operações
print(nova_lista2)
O resultado será:
[2, 3, 4, 5, 6, 7, 8, 9]
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [7,8,4,3,5,6,9,2]
# em seguida realizamos as operações
print("Imprime lista: ")
lista1.sort()
lista1.pop()
print(lista1)
lista1.sort()
lista1.pop()
print(lista1)
lista1.sort()
lista1.pop()
print(lista1)
lista1.sort()
lista1.pop()
print(lista1)
O resultado será:
[2, 3, 4, 5, 6, 7, 8]
[2, 3, 4, 5, 6, 7]
[2, 3, 4, 5, 6]
[2, 3, 4, 5]
Exemplo no uso de funções para tratamento de listas:
É uma funcionalidade que permite a geração de novas listas.
Exemplo 1: sem list comprehension
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [4,5,7,8,9,0]
lista2 = []
# em seguida realizamos as operações
for i in lista1:
lista2.append(i**2)
print(lista1)
print(lista2)
- Atenção: a letra "i" é usada para representar um indice, pode-se reescrever o código acima da seguinte forma:
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [4,5,7,8,9,0]
lista2 = []
# em seguida realizamos as operações
for indice in lista1:
lista2.append(indice**2)
print(lista1)
print(lista2)
O resultado de ambos os códigos (usando "i" ou "indice" ou "melancia") será o mesmo:
[4, 5, 7, 8, 9, 0]
[16, 25, 49, 64, 81, 0]
Exemplo 2: com list comprehension
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [4,5,7,8,9,0]
lista2 = [i**2 for i in lista1]
# em seguida realizamos as operações
print(lista1)
print(lista2)
O resultado será:
[4, 5, 7, 8, 9, 0]
[16, 25, 49, 64, 81, 0]
Exemplo 2: com list comprehension e com uma condição, neste exemplo gera uma nova lista com números pares.
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [4,5,7,8,9,0]
lista2 = [i**2 for i in lista1]
lista3 = [i for i in lista1 if i%2==0]
# em seguida realizamos as operações
print(lista1)
print(lista2)
print(lista3)
O resultado será:
[4, 5, 7, 8, 9, 0]
[16, 25, 49, 64, 81, 0]
[4, 8, 0]
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [4,5,7,8,9,0]
# em seguida realizamos as operações
for indice in lista1:
print(indice)
O resultado será:
4
5
7
8
9
0
Outro exemplo:
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [4,5,7,8,9,0]
# em seguida realizamos as operações
for indice in range(len(lista1)):
print(indice, lista1[i])
O resultado será:
0 4
1 5
2 7
3 8
4 9
5 0
Outro exemplo:
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [4,5,7,8,9,0]
# em seguida realizamos as operações
for indice, valor_numerico in enumerate(lista1):
print(indice, valor_numerico)
O resultado será:
0 4
1 5
2 7
3 8
4 9
5 0
Esta função aplica uma função aos elementos de uma lista.
# -*- coding: utf-8 -*-
# declarações/atribuições
def duplicar(x):
return x*2
lista1 = [1,3,5,7,8,9]
lista2 = map(duplicar, lista1)
lista2 = list(lista2)
# em seguida realizamos as operações
print(lista2)
O resultado será:
[2, 6, 10, 14, 16, 18]
Permite aplica uma função especificada a todos os argumentos de uma lista.
# -*- coding: utf-8 -*-
# declarações/atribuições
from functools import reduce
def soma_valores_da_lista(valor1, valor2):
return valor1 + valor2
lista1 = [1,3,5,7,8,9]
soma1 = reduce(soma_valores_da_lista, lista1)
# em seguida realizamos as operações
print(soma1)
O resultado será:
33
A função zip permite que itens possam "juntados" a partir de duas listas anteriores, criar uma nova lista com a junção destes.
# -*- coding: utf-8 -*-
# declarações/atribuições
lista1 = [5,6,7,8,9,10]
lista2 = ["a","b","c","d","e"]
lista3 = ["casa", "carro", "cadeira", "mesa", "porta"]
# em seguida realizamos as operações
for valor1, valor2, valor3 in zip(lista1, lista2, lista3):
print(valor1, valor2, valor3)
O resultado será:
5 a casa
6 b carro
7 c cadeira
8 d mesa
9 e porta
Lista são dinâmicas e tuplas estáticas!
# -*- coding: utf-8 -*-
# declarações/atribuições
tupla1 = ("banana", "abacate", "melancia", "abacate")
# em seguida realizamos as operações
print(tupla1)
print("comprimento: ",len(tupla1))
O resultado será:
('banana', 'abacate', 'melancia', 'abacate')
comprimento: 4
Com os conjuntos é possível armazenar multiplos valores em uma única variável. Os conjuntos não podem ser ordenados.
# -*- coding: utf-8 -*-
# declarações/atribuições
set1 = ("banana", "abacate", "melancia")
# em seguida realizamos as operações
print(set1)
('banana', 'abacate', 'melancia')
O dicionário é um conjunto de elementos do tipo chave e valor. O dicionário não obedece uma ordem.
# declarações/atribuições
declaracoes1 = {"A":"ANA", "B":"BOB", "C":"CARLOS", "D":"DANIEL"}
# em seguida realizamos as operações
print(declaracoes1)
print(declaracoes1["B"])
print("--- imprime as chaves ---")
for chaveD in declaracoes1:
print(chaveD)
print("--- impime os valores ---")
for chaveD in declaracoes1:
print(declaracoes1[chaveD])
print("--- impime chave e valores ---")
for chaveD in declaracoes1:
print(chaveD + ":" + declaracoes1[chaveD])
O resultado será:
{'A': 'ANA', 'B': 'BOB', 'C': 'CARLOS', 'D': 'DANIEL'}
BOB
--- imprime as chaves ---
A
B
C
D
--- impime os valores ---
ANA
BOB
CARLOS
DANIEL
--- impime chave e valores ---
A:ANA
B:BOB
C:CARLOS
D:DANIEL
# declarações/atribuições
declaracoes1 = {"A":"ANA", "B":"BOB", "C":"CARLOS", "D":"DANIEL"}
# em seguida realizamos as operações
for chaveD in declaracoes1.items():
print(chaveD)
O resultado será:
('A', 'ANA')
('B', 'BOB')
('C', 'CARLOS')
('D', 'DANIEL')
# declarações/atribuições
declaracoes1 = {"A":"ANA", "B":"BOB", "C":"CARLOS", "D":"DANIEL"}
# em seguida realizamos as operações
for chaveD in declaracoes1.values():
print(chaveD)
O resultado será:
ANA
BOB
CARLOS
DANIEL
agora com a função keys
# declarações/atribuições
declaracoes1 = {"A":"ANA", "B":"BOB", "C":"CARLOS", "D":"DANIEL"}
# em seguida realizamos as operações
for chaveD in declaracoes1.keys():
print(chaveD)
O resultado será:
A
B
C
D
List | Tuple | Dictionary | Set |
---|---|---|---|
Permite itens duplicados | Permite itens duplicados | Sem duplicados | Sem duplicados |
Mutável | Não mutável | Mutável, indexável | Não pode ser mudada, mas pode ser adicionada, não indexada |
Ordenada | Ordenada | Não ordenada | Não ordenada |
[] ou list() | () ou tuple() | {}* ou set() | {} ou dict() |
Fonte: https://www.devopsschool.com/blog/python-tutorials-difference-between-list-array-tuple-set-dict/
# -*- coding: utf-8 -*-
# importando módulos
import random
# declarações/atribuições
n1 = random.randint(0,50)
# em seguida realizamos as operações
print(n1)
O resultado será um inteiro:
17
Outro exemplo:
# -*- coding: utf-8 -*-
# importando módulos
import random
# declarações/atribuições
# random.seed(2)
n1 = random.randint(0,50)
lista1 = [3,5,7,8,9]
n2 = random.choice(lista1)
# em seguida realizamos as operações
print(n1)
print(n2)
O resultado poderá ser:
13
9
Python não tem suporte a arrays (matrizes), veja listas.
Os módulos são outros programas feitos em python que podem ser chamados, é uma forma de se estruturar funções em bibliotecas de códigos separados em outros arquivos.
O primeiro arquivo será o modulo1.py
# -*- coding: utf-8 -*-
# modulo1
def imprimindo(variavel1):
print("a variavel recebeu o valor: ", variavel1)
O arquivo principal, será colocado na mesma pasta que o arquivo anterior. O arquivo principal esta a seguir:
# -*- coding: utf-8 -*-
# declarações/atribuições
import modulo1
# em seguida realizamos as operações
modulo1.imprimindo("abcde")
O resultado será:
a variavel recebeu o valor: abcde
# -*- coding: utf-8 -*-
# declarações/atribuições
palavra1 = input("Digite uma palavra: ")
# em seguida realizamos as operações
print("Foi digitado: " + palavra1)
O resultado será:
Digite uma palavra: teste
Foi digitado: teste
A documentação oficial esta em: https://docs.python.org/3/library/
# -*- coding: utf-8 -*-
# declarações/atribuições
import math
valor = 5
# em seguida realizamos as operações
print("conseno: ", math.cos(valor))
print("seno: ", math.sin(valor))
print("tangente: ", math.tan(valor))
O resultado será:
conseno: 0.28366218546322625
seno: -0.9589242746631385
tangente: -3.380515006246586
Atenção: adicionar mais exemplos da standard library.
Criando uma classe sem atributos e sem métodos:
# -*- coding: utf-8 -*-
# declarações/atribuições
class Pessoa:
def __init__(self):
pass
Criando os atributos de uma classe:
# -*- coding: utf-8 -*-
# declarações/atribuições
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
Criando os métodos de uma classe:
# -*- coding: utf-8 -*-
# declarações/atribuições
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
def caminhar(self):
print("caminhando...")
def andar(self): # métodos
print("andar...")
Outro exemplo simplificado abaixo:
# -*- coding: utf-8 -*-
# declarações/atribuições
class Pessoa:
# atributos da classe
nacionalidade = "brasileiro"
# metodos construtor
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
# metodo descricao
def descricao(self):
return f"{self.nome} tem {self.idade} anos de idade"
# metodo fala
def fala(self, fale):
return f"{self.nome} diz {fale}"
# outro exemplo de classe
class Pet:
pass
# +1 exemplo de classe
class Carro:
pass
# duas instanciações como exemplo
ana = Pessoa("ana", 33)
beth = Pessoa("beth", 25)
# em seguida realizamos as operações
print("nome: ", ana.nome)
print("nacionalidade: ", ana.nacionalidade)
print("idade: ", ana.idade)
print("--------------------------")
print("nome: ", beth.nome)
print("nacionalidade: ", beth.nacionalidade)
print("idade: ", beth.idade)
O resultado será:
nome: ana
nacionalidade: brasileiro
idade: 33
--------------------------
nome: beth
nacionalidade: brasileiro
idade: 25
Exemplo:
# -*- coding: utf-8 -*-
# declarações/atribuições
class Pessoa:
# classe atributo
nome = ""
idade = 0
# cria o objeto ana
ana = Pessoa()
ana.nome = "ana"
ana.idade = 20
# cria o objeto pedro
pedro = Pessoa()
pedro.nome = "pedro"
pedro.idade = 30
# em seguida realizamos as operações:
# imprimindo os valores do objetos
print(f"{ana.nome} tem {ana.idade} anos")
print(f"{pedro.nome} tem {pedro.idade} anos")
O resultado será:
ana tem 20 anos
pedro tem 30 anos
# -*- coding: utf-8 -*-
# declarações/atribuições
class Pessoa:
# atributos da classe
nacionalidade = "brasileiro"
# metodos construtor
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
# metodo descricao
def descricao(self):
return f"{self.nome} tem: {self.idade} anos de idade"
# metodo fala
def fala(self, fale):
return f"{self.nome} diz: {fale}"
# classe derivada
class Cyborg(Pessoa):
fabricante = "tecnologia nacional"
tipo = "robo humanoide"
def correr(self):
return("Humanoide pode correr")
ana = Pessoa("ana", 33)
b9 = Cyborg("robo b9", 1)
# em seguida realizamos as operações
print("nome: ", ana.nome)
print("nacionalidade: ", ana.nacionalidade)
print("idade: ", ana.idade)
print(ana.descricao())
print(ana.fala("olá"))
print("--------------------------")
print("nome: ", b9.nome)
print("nacionalidade: ", b9.nacionalidade)
print("idade: ", b9.idade)
print("fabricante: ", b9.fabricante)
print("tipo: ", b9.tipo)
print(b9.correr())
O resultado será:
nome: ana
nacionalidade: brasileiro
idade: 33
ana tem: 33 anos de idade
ana diz: olá
--------------------------
nome: robo b9
nacionalidade: brasileiro
idade: 1
fabricante: tecnologia nacional
tipo: robo humanoide
Humanoide pode correr
Exemplo:
# -*- coding: utf-8 -*-
# declarações/atribuições
class Pessoa:
def __init__(self):
self.__salarioBase = 1300
def informaSalario(self):
print("Salario base: {}".format(self.__salarioBase))
def setMaxPrice(self, base):
self.__salarioBase = base
p = Pessoa()
p.informaSalario()
# em seguida realizamos as operações:
# muda salario base
p.__salarioBase = 2000
p.informaSalario()
# using setter function
p.setMaxPrice(3000)
p.informaSalario()
O resultado será:
Salario base: 1300
Salario base: 1300
Salario base: 3000
Exemplo:
# -*- coding: utf-8 -*-
# declarações/atribuições
class Veiculo:
# method to render a shape
def chamar(self):
print("Chamando o Veiculo.")
class SUV(Veiculo):
# renders SUV
def chamar(self):
print("Chamando o SUV.")
class Sedan(Veiculo):
# renders Sedan
def chamar(self):
print("Chamando o Sedan.")
# em seguida realizamos as operações:
veiculo1 = Veiculo()
veiculo1.chamar()
# create an object of SUV
suv1 = SUV()
suv1.chamar()
# create an object of Sedan
sedan1 = Sedan()
sedan1.chamar()
O resultado será:
Chamando o Veiculo.
Chamando o SUV.
Chamando o Sedan.
Para instalar o conector mysql no python use o comando no promt: python -m pip install mysql-connector-python
# -*- coding: utf-8 -*-
# declarações/atribuições
import mysql.connector
bancodedados = mysql.connector.connect(
host="localhost",
user="root",
password=""
)
dbcursor = bancodedados.cursor()
# em seguida realizamos as operações
dbcursor.execute("SHOW DATABASES")
for x in dbcursor:
print(x)
print("Cria o banco de dados: escola")
dbcursor.execute("CREATE DATABASE escola")
O resultado será:
('information_schema',)
('mysql',)
('performance_schema',)
('sys',)
Cria o banco de dados: escola
# -*- coding: utf-8 -*-
# declarações/atribuições
import mysql.connector
bancodedados = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="escola"
)
dbcursor = bancodedados.cursor()
# em seguida realizamos as operações
dbcursor.execute("SHOW DATABASES")
for x in dbcursor:
print(x)
print("Cria a tabela: alunos")
dbcursor.execute("CREATE TABLE alunos (nome VARCHAR(50), idade VARCHAR(2))")
O resultado será:
('escola',)
('information_schema',)
('mysql',)
('performance_schema',)
('sys',)
Cria a tabela: alunos
# -*- coding: utf-8 -*-
# declarações/atribuições
import mysql.connector
bancodedados = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="escola"
)
dbcursor = bancodedados.cursor()
# em seguida realizamos as operações
sql1 = "INSERT INTO alunos (nome, idade) VALUES (%s, %s)"
val1 = ("pedro", "30")
val2 = ("ana", "40")
val3 = ("joao", "35")
dbcursor.execute(sql1, val1)
bancodedados.commit()
print("--- insert ---------------")
print(dbcursor.rowcount, "registro inserido", val1)
dbcursor.execute(sql1, val2)
bancodedados.commit()
print(dbcursor.rowcount, "registro inserido", val2)
dbcursor.execute(sql1, val3)
bancodedados.commit()
print(dbcursor.rowcount, "registro inserido", val3)
print("--- delete ---------------")
sql2 = "DELETE FROM alunos WHERE nome = 'joao'"
dbcursor.execute(sql2)
bancodedados.commit()
print(dbcursor.rowcount, "registro deletado", val3)
print("--- update ---------------")
sql3 = "UPDATE alunos SET idade = '41' WHERE idade = '40'"
dbcursor.execute(sql3)
bancodedados.commit()
print(dbcursor.rowcount, "registro atualizado")
O resultado será:
--- insert ---------------
1 registro inserido ('pedro', '30')
1 registro inserido ('ana', '40')
1 registro inserido ('joao', '35')
--- delete ---------------
1 registro deletado ('joao', '35')
--- update ---------------
1 registro atualizado
# -*- coding: utf-8 -*-
# declarações/atribuições
import mysql.connector
bancodedados = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="escola"
)
dbcursor = bancodedados.cursor()
# em seguida realizamos as operações
print("--- select ---------------")
dbcursor.execute("SELECT * FROM alunos")
resultado = dbcursor.fetchall()
for x in resultado:
print(x)
O resultado será:
--- select ---------------
('pedro', '30')
('ana', '41')
('alvaro', '37')
('fernando', '26')
# -*- coding: utf-8 -*-
# declarações/atribuições
import mysql.connector
bancodedados = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="escola"
)
dbcursor = bancodedados.cursor()
# em seguida realizamos as operações
print("--- soma ---------------")
dbcursor.execute("SELECT SUM(idade) AS TotalIdade FROM alunos;")
resultado = dbcursor.fetchall()
for x in resultado:
print(x)
print("--- max ---------------")
dbcursor.execute("SELECT MAX(idade) AS MaxIdade FROM alunos;")
resultado = dbcursor.fetchall()
for x in resultado:
print(x)
print("--- min ---------------")
dbcursor.execute("SELECT MIN(idade) AS MinIdade FROM alunos;")
resultado = dbcursor.fetchall()
for x in resultado:
print(x)
print("--- media ---------------")
dbcursor.execute("SELECT AVG(idade) AS mediaIdade FROM alunos;")
resultado = dbcursor.fetchall()
for x in resultado:
print(x)
print("--- countar ---------------")
dbcursor.execute("SELECT COUNT(idade) AS ontagemIdade FROM alunos;")
resultado = dbcursor.fetchall()
for x in resultado:
print(x)
O resultado será:
--- soma ---------------
(134.0,)
--- max ---------------
('41',)
--- min ---------------
('26',)
--- media ---------------
(33.5,)
--- contar ---------------
(4,)
# -*- coding: utf-8 -*-
# declarações/atribuições
import mysql.connector
bancodedados = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="escola"
)
dbcursor = bancodedados.cursor()
# em seguida realizamos as operações
dbcursor = bancodedados.cursor()
sql1 = "DROP TABLE alunos"
dbcursor.execute(sql1)
print("tabela deletada: alunos")
print("----------------------------")
sql2 = "DROP DATABASE escola"
dbcursor.execute(sql2)
print("banco de dados deletado: escola")
O resultado será:
tabela deletada: alunos
----------------------------
banco de dados deletado: escola
Site para treinamento com SQL:
https://www.db-fiddle.com/
import pymongo
clienteMongo = pymongo.MongoClient("mongodb://localhost:27017/")
db1 = clienteMongo["aula10b"]
col1 = db1["alunos3"]
x = col1.find_one()
# imprimir o primeiro documento
print(x)
# imprimir todos os documentos
for col1 in col1.find():
print(col1)
O resultado será:
{'_id': ObjectId('653041528a0a55c981579857'), 'nome': 'bill', 'nota': 7}
-------------------
{'_id': ObjectId('653041528a0a55c981579857'), 'nome': 'bill', 'nota': 7}
{'_id': ObjectId('653041618a0a55c981579858'), 'nome': 'maria', 'nota': 93}
{'_id': ObjectId('653049258a0a55c98157985a'), 'nome': 'daniel', 'nota': 6}
{'_id': ObjectId('653049258a0a55c98157985b'), 'nome': 'mauricio', 'nota': 8}
{'_id': ObjectId('653049258a0a55c98157985c'), 'nome': 'joao', 'nota': 7}
Em desenvolvimento
import matplotlib.pyplot as plt1
import numpy as npy
xpoints = npy.array([1, 5, 8, 10])
ypoints = npy.array([3, 8, 10, 15])
plt1.plot(xpoints, ypoints)
plt1.show()
Exemplo com linhas:
import matplotlib.pyplot as plt1
import numpy as npy
ypoints = npy.array([2, 7, 5, 11])
plt1.xlabel("Eixo X")
plt.ylabel("Eixo y")
plt1.plot(ypoints, linestyle = 'dotted')
plt1.grid()
plt1.show()
Exemplo com barras:
import matplotlib.pyplot as plt1
import numpy as npy
x = npy.array(["X", "Y", "Z", "W"])
y = npy.array([5, 9, 4, 11])
plt1.bar(x,y)
plt1.grid()
plt1.show()
import matplotlib.pyplot as plt1
# definição de classes ou categorias da pizza
classes = ['classe1', 'classe2', 'classe3', 'classe4']
# valores das classes
fatias = [5, 5, 3, 9]
# cores de cada classe
cores = ['r', 'y', 'g', 'b']
# montando a pizza
plt1.pie(fatias, labels = classes, colors=cores,
startangle=90, shadow = True, explode = (0, 0, 0.1, 0),
radius = 1.2, autopct = '%1.1f%%')
# plotando a legenda
plt1.legend()
# mostrando a pizza
plt1.show()
Em desenvolvimento
# -*- coding: utf-8 -*-
import pandas as pds
import seaborn as sbn
import matplotlib.pyplot as plt1
filmes = pds.read_csv("tmdb_5000_movies.csv")
# foi utilizado o arquivo: https://www.kaggle.com/datasets/tmdb/tmdb-movie-metadata?resource=download
#sbn.catplot(x="original_language", kind="count", data=filmes)
filmes_por_categoria = filmes["original_language"].value_counts().to_frame()
filmes_por_categoria = filmes["original_language"].value_counts().to_frame().reset_index()
filmes_por_categoria.columns = ["original_language", "total"]
print(filmes_por_categoria.head())
plt1.pie(filmes_por_categoria["total"], labels = filmes_por_categoria["original_language"])
np.mean, função mean do numpy é usada para calcular a média aritmética ou média dos elementos da matriz junto com o eixo especificado ou eixo múltiplo.
import numpy as npy
import matplotlib.pyplot as plt1
dados = {'Empresa0': 109.50,
'Empresa1': 104.59,
'Empresa2': 114.71,
'Empresa3': 113.43,
'Empresa4': 100.30,
'Empresa5': 102.54,
'Empresa6': 137.96,
'Empresa6': 123.38,
'Empresa7': 135.99,
'Empresa8': 123.60}
group_dados = list(dados.values())
group_nomes = list(dados.keys())
group_mean = npy.mean(group_dados)
fig, ax = plt1.subplots()
ax.barh(group_nomes, group_dados)
# -*- coding: utf-8 -*-
# declarações/atribuições
import numpy
import matplotlib.pyplot as plt1
idade1 = [53,66,77,34,75,25,47,54,67,83,77]
# cria 1000 numeros aleatórios entre 1 e 5
idade2 = numpy.random.normal(1.0, 5.0, 1000)
# em seguida realizamos as operações
# criar um gráfico com os dados do vetor idade1
plt1.hist(idade1, 100)
plt1.show()
# cria um gráfico com os dados gerados aleatóriamente
plt1.hist(idade2, 100)
plt1.show()
# -*- coding: utf-8 -*-
# declarações/atribuições
import matplotlib.pyplot as plt
# 1 2 3 4 5 6 7 8 9 10
velocidade = [53,66,77,34,75,25,47,54,67,83]
idade = [10,15,12,20, 8, 5,11,18,7,3]
# em seguida realizamos as operações
# eixo-x eixo-y
plt.scatter(idade, velocidade)
plt.show()
Definição: Seaborn...
Em desenvolvimento
# -*- coding: utf-8 -*-
# declarações/atribuições
import pandas as pds
import seaborn as sbn
notas = pds.read_csv("ratings.csv")
# foi utilizado o arquivo: https://grouplens.org/datasets/movielens/
print("-- mudar o título do cabeçalho ----------------------------")
notas.columns = ["usuario", "filme", "nota", "timestamp"]
print(notas.head())
#print("--- várias medidas ---")
#print(notas.nota.describe())
sbn.boxplot(notas.nota)
# -*- coding: utf-8 -*-
import pandas as pds
notas = pds.read_csv("ratings.csv")
# foi utilizado o arquivo: https://grouplens.org/datasets/movielens/
print("-- mudar o título do cabeçalho ----------------------------")
notas.columns = ["usuario", "filme", "nota", "timestamp"]
print(notas.head())
print("--- mostrar uma coluna 2 (forma1) ---------------------------")
print(notas["nota"])
print("--- mostras uma coluna 2 (forma2) ------------------")
print(notas.nota)
print("--- mostras uma coluna 2 (forma3) ------------------")
print(notas.nota.head)
print("--- mostrar um gráfico do tipo histograma com os valores de nota")
print(notas.nota.plot(kind='hist'))
KDE (kernel density estimates)
Em desenvolvimento
# -*- coding: utf-8 -*-
import pandas as pds
import seaborn as sbn
filmes = pds.read_csv("movies.csv")
notas = pds.read_csv("ratings.csv")
# foi utilizado o arquivo: https://grouplens.org/datasets/movielens/
print("-- mudar o título do cabeçalho ----------------------------")
#filmes.columns = ["id_filme", "titulo", "genero"]
#notas.columns = ["usuario", "id_filme", "nota", "timestamp"]
print(filmes.head())
print(notas.head())
print("--- exemplo2: media por grupos de filmes usando a coluna nota (rating) ---")
medias_por_filme = notas.groupby("movieId").mean().rating
print(medias_por_filme.head)
#print("--- histograma de médias por filmes ---")
medias_por_filme.plot(kind="hist")
print("--- histograma de médias por filmes usando seaborn ---")
#sbn.boxplot(medias_por_filme)
sbn.displot(medias_por_filme)
# KDE kernel density estimates (KDEs)
print("--- alterando a quantidade de colunas no gráfico(bins)")
sbn.displot(medias_por_filme, bins=15, kde=True)
print("--- desta forma o seaborn decide sozinho a quantidade de colunas")
sbn.displot(medias_por_filme, kde=True)
Em desenvolvimento
# -*- coding: utf-8 -*-
import pandas as pds
import seaborn as sbn
import matplotlib.pyplot as plt1
filmes = pds.read_csv("movies.csv")
notas = pds.read_csv("ratings.csv")
# foi utilizado o arquivo: https://grouplens.org/datasets/movielens/
#print("--- exemplo2: media por grupos de filmes usando a coluna nota (rating) ---")
medias_por_filme = notas.groupby("movieId").mean().rating
#print(medias_por_filme.head)
# --- gráfico 1: histograma de médias por filmes ---
medias_por_filme.plot(kind="hist")
# --- gráfico 2: usando KDE kernel density estimates (KDEs)
sbn.displot(medias_por_filme, bins=15, kde=True)
# --- gráfico 3: desta forma o seaborn decide sozinho a quantidade de colunas
sbn.displot(medias_por_filme, kde=True)
# --- gráfico 4: usando matplotlib
plt1.hist(medias_por_filme)
plt1.title("titulo de gráfico aqui !")
Em desenvolvimento
# -*- coding: utf-8 -*-
import pandas as pds
import seaborn as sbn
# gráfico de barras para as categorias usando seaborn kind
filmes = pds.read_csv("tmdb_5000_movies.csv")
sbn.catplot(x="original_language", kind="count", data=filmes)
Exemplo:
Em desenvolvimento
A média (mean) de um conjunto de dados é encontrada somando-se todos os números do conjunto de dados e então dividindo o resultado pelo número de valores do conjunto.
A mediana (median) é o valor do meio quando o conjunto de dados está ordenado do menor para o maior.
A moda (mode) é o número que aparece mais vezes em um conjunto de dados.
Desvio padrão é o grau de dispersão de um conjunto de elementos.
# -*- coding: utf-8 -*-
# declarações/atribuições
import numpy
idade = [53,66,77,34,75,25,47,54,67,83,77]
x = numpy.mean(idade)
y = numpy.median(idade)
from scipy import stats
w = stats.mode(idade, axis=None, keepdims=False)
y = numpy.std(idade)
# em seguida realizamos as operações
print("media: ", x)
print("mediana: ", y)
print("moda: ", w)
print("desvio padrão: ", y)
O resultado será:
media: 59.81818181818182
mediana: 18.019273428083416
moda: ModeResult(mode=77, count=2)
desvio padrão: 18.019273428083416
# -*- coding: utf-8 -*-
# declarações/atribuições
import numpy
idade = [53,66,77,34,75,25,47,54,67,83,77]
x = numpy.percentile(idade, 50)
def qual_a_porcentagem(numero1, numero2):
return (numero1 / numero2) * 100
# em seguida realizamos as operações
print("idade = [53,66,77,34,75,25,47,54,67,83,77]")
print("o percentil das idades é: ", x)
print("--------------------------------")
print("Exemplo de porcentagem")
print("25% de 100 é: ", qual_a_porcentagem(25, 100))
print("15% de 93 é: ", qual_a_porcentagem(15, 93))
print("arredondando: ", round(qual_a_porcentagem(15, 93), 2))
O resultado será:
idade = [53,66,77,34,75,25,47,54,67,83,77]
o percentil das idades é: 66.0
--------------------------------
Exemplo de porcentagem
25% de 100 é: 25.0
15% de 93 é: 16.129032258064516
arredondando: 16.13
Definição1:
Em desenvolvimento
Definição2:
Definição:
Em desenvolvimento
# -*- coding: utf-8 -*-
# declarações/atribuições
import matplotlib.pyplot as plt1
from scipy import stats
# 1 2 3 4 5 6 7 8 9 10
velocidade = [90,93,80,75,79,83,89,71,95,85]
idade = [10,9,12,11, 11, 11,11,12,7,9]
slope, intercept, r, p, std_err = stats.linregress(velocidade, idade)
def funcao1(velocidade):
return slope * velocidade + intercept
modelo1 = list(map(funcao1, velocidade))
# em seguida realizamos as operações
# eixo-x eixo-y
plt1.scatter(velocidade, idade)
plt1.plot(velocidade, modelo1)
plt1.show()
Observações: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.linregress.html
Slope represente os passos em uma linha. slope: inclinação da linha de regressão. Interceptar : interceptar a linha de regressão. Valor-r: coeficiente de correlação. Valor p : valor p bilateral para um teste de hipótese cuja hipótese nula é que a inclinação é zero. Stderr : Erro padrão da estimativa.
Predizer a velocidade para um carro com 10 anos:
# -*- coding: utf-8 -*-
# declarações/atribuições
from scipy import stats
# 1 2 3 4 5 6 7 8 9 10
velocidade = [90,93,80,75,79,83,89,71,95,85]
idade = [10,9,12,11,11,11,11,12,7,9]
slope, intercept, r, p, std_err = stats.linregress(idade, velocidade)
def funcao1(idade):
return slope * idade + intercept
# em seguida realizamos as operações
velocidade2 = funcao1(10)
print(velocidade2)
O resultado será:
85.18099547511312
Definição:
Em desenvolvimento
# -*- coding: utf-8 -*-
# declarações/atribuições
import numpy
import matplotlib.pyplot as plt1
hora = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
velocidade = [90,93,65,65,63,65,67,71,72,71,78,67,70,80,80,64,78,75,90,100]
modelo1 = numpy.poly1d(numpy.polyfit(hora, velocidade, 3))
linha1 = numpy.linspace(1, 22, 100)
# em seguida realizamos as operações
plt1.scatter(hora, velocidade)
plt1.plot(linha1, modelo1(linha1))
plt1.show()
# -*- coding: utf-8 -*-
import pandas as pds
notas = pds.read_csv("ratings.csv")
# foi utilizado o arquivo: https://grouplens.org/datasets/movielens/
print("--- primeiras linhas ---------------------------")
print(notas.head())
print("--- formato ---------------------------")
print(notas.shape)
print("-- mudar o título do cabeçalho ----------------------------")
notas.columns = ["usuario", "filme", "nota", "timestamp"]
print(notas.head())
print("--- mostrar uma coluna ---------------------------")
print(notas["nota"])
print("--- mostrar os valores unicos de uma coluna ----------")
print(notas["nota"].unique())
print("--- contar a quantidade de valores na coluna -----------")
print(notas["nota"].value_counts())
print("--- média de todos valores da coluna -----------")
print(notas["nota"].mean())
print("--- médiana de todos valores da coluna -----------")
print(notas["nota"].median())
print("--- ver os valores de uma coluna ------------------")
print(notas.nota)
O resultado será:
--- primeiras linhas ---------------------------
userId movieId rating timestamp
0 1 1 4.0 964982703
1 1 3 4.0 964981247
2 1 6 4.0 964982224
3 1 47 5.0 964983815
4 1 50 5.0 964982931
--- formato ---------------------------
(100836, 4)
-- mudar o título do cabeçalho ----------------------------
usuario filme nota timestamp
0 1 1 4.0 964982703
1 1 3 4.0 964981247
2 1 6 4.0 964982224
3 1 47 5.0 964983815
4 1 50 5.0 964982931
--- mostrar uma coluna ---------------------------
0 4.0
1 4.0
2 4.0
3 5.0
4 5.0
100831 4.0
100832 5.0
100833 5.0
100834 5.0
100835 3.0
Name: nota, Length: 100836, dtype: float64
--- mostrar os valores unicos de uma coluna ----------
[4. 5. 3. 2. 1. 4.5 3.5 2.5 0.5 1.5]
--- contar a quantidade de valores na coluna -----------
4.0 26818
3.0 20047
5.0 13211
3.5 13136
4.5 8551
2.0 7551
2.5 5550
1.0 2811
1.5 1791
0.5 1370
Name: nota, dtype: int64
--- média de todos valores da coluna -----------
3.501556983616962
--- médiana de todos valores da coluna -----------
3.5
--- ver os valores de uma coluna ------------------
0 4.0
1 4.0
2 4.0
3 5.0
4 5.0
100831 4.0
100832 5.0
100833 5.0
100834 5.0
100835 3.0
Name: nota, Length: 100836, dtype: float64
# -*- coding: utf-8 -*-
import pandas as pds
notas = pds.read_csv("ratings.csv")
# foi utilizado o arquivo: https://grouplens.org/datasets/movielens/
print("-- mudar o título do cabeçalho ----------------------------")
notas.columns = ["usuario", "filme", "nota", "timestamp"]
print(notas.head())
print("--- várias medidas ---")
print(notas.nota.describe())
O resultado será:
-- mudar o título do cabeçalho ----------------------------
usuario filme nota timestamp
0 1 1 4.0 964982703
1 1 3 4.0 964981247
2 1 6 4.0 964982224
3 1 47 5.0 964983815
4 1 50 5.0 964982931
--- várias medidas ---
count 100836.000000
mean 3.501557
std 1.042529
min 0.500000
25% 3.000000
50% 3.500000
75% 4.000000
max 5.000000
Name: nota, dtype: float64
Instalação do PyForms, via command prompt:
pip install pyforms
from tkinter import *
window = Tk()
window.title("tela1")
window.geometry('200x200')
lbl = Label(window, text="exemplo1")
lbl.grid(column=0, row=0)
def clicked():
lbl.configure(text="exemplo2")
btn = Button(window, text="clique aqui", command=clicked)
btn.grid(column=1, row=0)
window.mainloop()
Outro exemplo:
import tkinter as tk
class IMCCalculator:
def __init__(self, root):
self.root = root
self.root.title('IMC Calculator')
self.root.geometry('300x250')
self.peso_label = tk.Label(root, text='Peso:')
self.peso_label.grid(row=0, column=0, padx=10, pady=10)
self.peso_edit = tk.Entry(root)
self.peso_edit.grid(row=0, column=1, padx=10, pady=10)
self.altura_label = tk.Label(root, text='Altura:')
self.altura_label.grid(row=1, column=0, padx=10, pady=10)
self.altura_edit = tk.Entry(root)
self.altura_edit.grid(row=1, column=1, padx=10, pady=10)
self.calcular_button = tk.Button(root, text='Calcular IMC', command=self.calcular_imc)
self.calcular_button.grid(row=2, column=0, columnspan=2, pady=10)
self.resultado_label = tk.Label(root, text='Resultado:')
self.resultado_label.grid(row=3, column=0, columnspan=2, pady=10)
self.sair_button = tk.Button(root, text='Sair', command=root.destroy)
self.sair_button.grid(row=4, column=0, columnspan=2, pady=10)
def calcular_imc(self):
try:
peso = float(self.peso_edit.get())
altura = float(self.altura_edit.get())
imc = peso / (altura ** 2)
self.resultado_label.config(text=f'Resultado: {imc:.2f}')
except ValueError:
self.resultado_label.config(text='Por favor, insira valores válidos para peso e altura.')
if __name__ == "__main__":
root = tk.Tk()
app = IMCCalculator(root)
root.mainloop()
Em desenvolvimento
Definição da Wikipedia:
NumPy é uma biblioteca para a linguagem de programação Python, que suporta o processamentode grandes, multi-dimensionais arranjos e matrizes, juntamente com uma grande coleção de funções matemáticas de alto nível para operar sobre estas matrizes. O ancestral do NumPy, o Numeric, foi originalmente criado por Jim Hugunin com contribuições de vários outros desenvolvedores. Em 2005, Travis Oliphant criou o NumPy incorporando recursos do Numarray concorrente no Numeric, com extensas modificações. NumPy é um software de código aberto e tem muitos colaboradores.
Exemplos:
import numpy as np
a = np.array([1,2,3,4,5])
vetor_array1 = np.array([0, 1, 2, 3, 4, 5, 6])
# Cria um array com zeros
np.zeros((3,4))
# Cria um array vazios
np.empty((3,2))
# Salva um array
np.save('array1.txt', a)
np.savez('array2.txt', a)
# Carregando do disco
np.load('array2.txt.npz')
# Salvando como txt
np.savetxt('array3.txt.npz', a, delimiter=",")
# Mostrando as dimensões de um array
print(vetor_array1.shape)
# Mostrando o tamanho do array
print(len(vetor_array1))
# Mostrando as dimensões do array
print(vetor_array1.ndim)
# Mostrando os elementos do array
print(vetor_array1.size)
from numpy import random
x = random.randint(1000)
print(x)
import numpy as np
vetor1 = np.array([1, 2, 3, 4, 5])
x = vetor1.copy()
y = vetor1.view()
vetor1[0] = 50
print(vetor1)
print(x)
print(y)
O resultado será:
[50 2 3 4 5]
[1 2 3 4 5]
[50 2 3 4 5]
import numpy as np
vetor1 = np.array([1, 2, 3])
vetor2 = np.array([4, 5, 6])
vetor = np.concatenate((vetor1, vetor2))
vetor3 = np.array_split(vetor, 3)
vetor2 = np.array([3, 2, 0, 1])
print(vetor1)
print(np.sort(vetor2))
print(vetor3)
O resultado será:
[1 2 3]
[0 1 2 3]
[array([1, 2]), array([3, 4]), array([5, 6])]
Pandas é um biblioteca que permite trabalhar com dados tabulares. O conjunto de dados tabulares é chamado de dataframe.
Fonte da figura: https://pandas.pydata.org/docs/_images/01_table_dataframe.svg
Todos os vetores no exemplo a baixo devem ter a mesma quantidade de elementos. Já é aceito pela comunidade instanciar a biblioteca com o apelido de "pd". Exemplo do uso da biblioteca pandas:
import pandas as pd
df = pd.DataFrame(
{
"Nome": [
"Ana",
"Barbara",
"Carlos",
"Deb",
"Eloisa",
"Fabio"
],
"Idade": [25, 26, 27, 45, 46, 48],
"Sexo": ["F", "F", "M", "F", "F", "M"],
}
)
print(df)
O resultado será:
Nome Idade Sexo
0 Ana 25 F
1 Barbara 26 F
2 Carlos 27 M
3 Deb 45 F
4 Eloisa 46 F
5 Fabio 48 M
Outro exemplo básico com pandas
import pandas as pd
df123 = pd.DataFrame(
{
"Municipio": ["Sinop", "Caceres", "Sorriso"],
"2023": ["45", "65", "78"],
"2022": ["67", "60", "78"],
"2021": ["73", "67", "87"],
"2020": ["80", "45", "89"],
}
)
print('--- imprime o dataframe ---')
print(df123)
print('--- imprime o head do dataframe ---')
print(df123.head())
print('--- imprime o tail do dataframe ---')
print(df123.tail())
print('--- imprime transpose do dataframe ---')
print(df123.T)
print('--- imprime uma coluna ---')
print(df123["2023"])
print('--- imprime duas linhas ---')
print(df123[0:2])
O resultado do código acima será:
--- imprime o dataframe ---
Municipio 2023 2022 2021 2020
0 Sinop 45 67 73 80
1 Caceres 65 60 67 45
2 Sorriso 78 78 87 89
--- imprime o head do dataframe ---
Municipio 2023 2022 2021 2020
0 Sinop 45 67 73 80
1 Caceres 65 60 67 45
2 Sorriso 78 78 87 89
--- imprime o tail do dataframe ---
Municipio 2023 2022 2021 2020
0 Sinop 45 67 73 80
1 Caceres 65 60 67 45
2 Sorriso 78 78 87 89
--- imprime transpose do dataframe ---
0 1 2
Municipio Sinop Caceres Sorriso
2023 45 65 78
2022 67 60 78
2021 73 67 87
2020 80 45 89
--- imprime uma coluna ---
0 45
1 65
2 78
Name: 2023, dtype: object
--- imprime duas linhas ---
Municipio 2023 2022 2021 2020
0 Sinop 45 67 73 80
1 Caceres 65 60 67 45
Exemplo de importação de arquivo CSV e estatísticas básicas:
import pandas as pd
df = pd.read_csv('D:\programacao\python\data2.csv')
print('--- listagem das linhas do arquivo --------')
print(df.to_string())
media1 = df['Pulse'].mean()
soma = df['Pulse'].sum()
max1 = df['Pulse'].max()
min1 = df['Pulse'].min()
countagem1 = df['Pulse'].count()
mediana1 = df['Pulse'].median()
desvioPadrao1 = df['Pulse'].std()
variancia1 = df['Pulse'].var()
print("--- Estatísticas simples -----------------")
print('Media de Pulse: ' + str(media1))
print('Soma de Pulse: ' + str(soma))
print('Max de Pulse: ' + str(max1))
print('Min de Pulse: ' + str(min1))
print('Contagem de Pulse: ' + str(countagem1))
print('mediana de Pulse: ' + str(mediana1))
print('Desvio padrão de Pulse: ' + str(desvioPadrao1))
print('Variação de Pulse: ' + str(variancia1))
O resultado será:
--- listagem das linhas do arquivo --------
Duration Pulse Maxpulse Calories
0 60 110 130 409.1
1 60 117 145 479.0
2 60 103 135 340.0
3 45 109 175 282.4
4 45 117 148 406.0
5 60 102 127 300.0
6 60 110 136 374.0
7 45 104 134 253.3
8 30 109 133 195.1
9 60 98 124 269.0
10 60 103 147 329.3
11 60 100 120 250.7
12 60 106 128 345.3
13 60 104 132 379.3
14 60 98 123 275.0
15 60 98 120 215.2
16 60 100 120 300.0
17 45 90 112 NaN
18 60 103 123 323.0
19 45 97 125 243.0
--- Estatísticas simples -----------------
Media de Pulse: 103.9
Soma de Pulse: 2078
Max de Pulse: 117
Min de Pulse: 90
Contagem de Pulse: 20
mediana de Pulse: 103.0
Desvio padrão de Pulse: 6.711341539748807
Variação de Pulse: 45.04210526315789
Em desenvolvimento
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
fig, axs = plt.subplots(1, 3, subplot_kw={'projection': '3d'})
# Get the test data
X, Y, Z = axes3d.get_test_data(0.05)
# Plot the data
for ax in axs:
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
# Set the orthographic projection.
axs[0].set_proj_type('ortho') # FOV = 0 deg
axs[0].set_title("'ortho'\nfocal_length = ∞", fontsize=10)
# Set the perspective projections
axs[1].set_proj_type('persp') # FOV = 90 deg
axs[1].set_title("'persp'\nfocal_length = 1 (default)", fontsize=10)
axs[2].set_proj_type('persp', focal_length=0.2) # FOV = 157.4 deg
axs[2].set_title("'persp'\nfocal_length = 0.2", fontsize=10)
plt.show()
Outro exemplo com matplotlib: https://matplotlib.org/stable/gallery/mplot3d/box3d.html
Mais um exemplo: https://stackoverflow.com/questions/70911608/plot-3d-cube-and-draw-line-on-3d-in-python
# importa as bibliotecas
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# Cria os eixos
axes = [5, 5, 5]
# Cria os dados
data = np.ones(axes)
# Controle transparencia
alpha = 0.9
# Controle cores
colors = np.empty(axes + [4])
colors[0] = [1, 0, 0, alpha] # vermelho
colors[1] = [0, 1, 0, alpha] # verde
colors[2] = [0, 0, 1, alpha] # azul
colors[3] = [1, 1, 0, alpha] # amarelo
colors[4] = [1, 1, 1, alpha] # cinza
# Plota a figura
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Voxels são usados para customizar tamanho, posição e cores
ax.voxels(data, facecolors=colors, edgecolors='grey')
Em desenvolvimento
Ferramenta | URL |
---|---|
Codeblocks | https://www.codeblocks.org/ |
Microsoft Visual Studio Community | https://visualstudio.microsoft.com/pt-br/vs/community/ |
Spyder | https://www.spyder-ide.org/ |
QT designer | https://www.qt.io/download |
QT Creator | https://build-system.fman.io/qt-designer-download |
Code Lite | https://codelite.org/ |
Eric Python IDE | http://eric-ide.python-projects.org/index.html |
Anaconda | https://www.anaconda.com/download |
Outras IDEs: https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments
Ferramenta | URL |
---|---|
Visual Studio Code | https://code.visualstudio.com/ |
Notepad++ | https://notepad-plus-plus.org/downloads/ |
Pulsar | https://github.com/pulsar-edit/pulsar |
Light Table | http://lighttable.com/ |
Geany | https://geany.org/ |
Descrição | URL |
---|---|
Documentação da linguagem | https://docs.python.org/3/ |
Livro The Python Language Reference Manual | https://www.amazon.com.br/Python-Language-Reference-Manual/dp/1906966141 |
Referência da linguagem | https://docs.python.org/3/reference/index.html |
https://www.devopsschool.com/blog/python-tutorials-difference-between-list-array-tuple-set-dict/
Lista de ferramentas: https://github.com/monteiro74/lista_de_ferramentas#5-IDEs
Este material esta recebendo atualizações frequentes.
As informações aqui contidas podem ser alteradas sem aviso prévio.
Autor: Prof. Dr. Monteiro.
Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
https://creativecommons.org/licenses/by-nc-sa/4.0/
Primeira postagem em: Junho/2023.
Histórico de atualizações nos repositórios do Prof. Monteiro:
Pulse:
https://github.com/monteiro74/tutorial_python/pulse
Histórico de frequência de código:
https://github.com/monteiro74/tutorial_python/graphs/code-frequency
Atividade de commits:
https://github.com/monteiro74/tutorial_python/graphs/commit-activity
Trafego:
https://github.com/monteiro74/tutorial_python/graphs/traffic