Mensagens

A mostrar mensagens de abril, 2021

Python - Jogo de adivinhar números !

Imagem
 import math #importamos módulo Math import random #importamos random para gerar números aleatórios play = True #vamos colocar tudo num loop gigante para podermos depois dizer se queremos jogar de novo ou não while play: #este é o loop de jogo maior     lim_sup = int(input('Qual o limite superior ?')) #pedimos ao user para definir o limite superior     lim_inf = int(input('Qual o limite inferior ?')) #pedimos ao user para definir o limite inferior     solucao = random.randrange(lim_inf,lim_sup) #esta é a variável que tem o número que é a solução     palpites = round(math.log(lim_sup - lim_inf + 1,2)) #esta é a variável que define o número de palpites que temos, conforme os limites     print('Com estes limites tens direito a',palpites,' tentativas ! Boa sorte !')     contador_tentativas = 0 #este é o contador que contabiliza o número de tentativas que temos     while contador_tentativas < palpites: #aq...

Python - Gerador de nomes aleatórios: V2.0

  Gerador de Nomes Aleatórios em Python V2.0 Consegui  ter mais um tempinho para analisar o código que tinha colocado para o gerador de nomes aleatórios e consegui fazer a versão 2.0 ! Esta versão tal como a anterior parte de 2 ficheiros CSV (cada um com primeiro e últimos nomes) e depois seguindo o input do utilizador, cria um ficheiro com os nomes compostos. Nesta versão os nomes já estão devidamente separados por linhas e colunas ! Graças à ajuda do  Miguel Dias  fiz algumas alterações no código e usei mais dataframes para melhor chegar à informação. Basta alterarem os links dos ficheiros com os nomes e voilá! import pandas as pd from random import choice import csv df1 = pd.read_csv('C:/Users/Dell Latitude E5570/Desktop/primeiros.csv', delimiter = ";") df2 = pd.read_csv('C:/Users/Dell Latitude E5570/Desktop/ultimos.csv', delimiter = ";") primeiros = df1['Primeiros'] ultimos = df2['Ultimos'] a = int(input('Quantos nomes aleatór...

Python - mais gráficos em MatplotLib

Imagem
 Scatter Plot: Para fazermos um ScatterPlot precisamos de importar as libraries para o Python e depois definir os eixos: import matplotlib.pyplot as plt  import numpy as np import random as rand graf = plt.figure(figsize=(4,4)) # aqui definimos o tamanho X = np.random.randn(600) #aqui definimos o eixo X Y = np.random.randn(600) #aqui definimos o eixo Y plt.scatter(X,Y) #aqui executamos o gráfico Inserir várias séries num gráfico: É basicamente a mesma coisa, mas colocamos os eixos todos seguidos: t = np.arange(0,5,0.2) # definimos um array qualquer  graf = plt.figure(figsize=(10,10)) #definimos o tamanho do gráfico plt.plot(t,t,'r--',t,t**3,'bs',t,t**2,'g^',t,t**4,linewidth=1) # é aqui que fazemos o plot do gráfico, o 't,t' são os vários valores de cada série (t,t + t,t**2 + t,t**3...). O que está dentro das aspas é a formatação da série (cor, forma, etc) Inserir gráficos lado a lado (subplots): Neste caso primeiro definimos o nº de linhas, depois o ...

Python - o meu primeiro gráfico no MatPlotLib

Imagem
 Bem, não é propriamente o primeiro pois já desenvolvi um projecto com previsão de dados da COVID, mas agora comecei do zero a tentar perceber mesmo toda a sintaxe. E a sintaxe para fazer um gráfico em Python não é complexa, basta importar o matplotlib: import matplotlib.pyplot as plt import numpy as np Depois temos de definir os dois eixos, o do X e o do Y: Para o do X vamos fazer um array com números de 0 a 10 com intervalos de 0.2: x = np.arange(0,10,0.2) Para o eixo do Y, vamos colocar valores que sejam por exemplo o seno de X: y = np.sin(x) Definidos os nossos eixos, podemos fazer o nosso gráfico: plt.plot(x,y) plt.xlabel('Time') -- aqui definimos o nome do eixo X plt.ylabel('Sine Wave') -- aqui definimos o nome do eixo Y plt.title('Plotting exercise') -- aqui definimos o título

SQL - diferentes tipos de JOIN

Imagem
 Podemos fazer dois tipos diferentes de Join no SQL, um com o comando Join, e outro sem ele. Consideremos as seguintes duas tabelas nas quais queremos juntar o Nome dos nossos clientes e o BI respectivo que está numa segunda tabela: A primeira forma de cruzarmos estas tabelas é com um INNER JOIN: SELECT cliente.Nome_Cliente, Individual.BI FROM Cliente INNER JOIN Individual on Individual.Numero_Cliente = Cliente.Numero_Cliente A segunda forma é fazermos estas ligações directamente entre tabelas com o comando Where a ligá-las: SELECT cliente.Nome_Cliente, Individual.BI FROM Cliente, Individual WHERE Cliente.Numero_Cliente = Individual.Numero_Cliente Se executarmos irá dar precisamente o mesmo resultado. Com esta segunda forma simplificamos a forma de unir tabelas. Imaginemos que queremos unir 'n' tabelas, basta juntar AND ao comando WHERE, por exemplo: SELECT     aluno.nome_aluno,     AVG(classificacao.Classificacao_ID)      FROM aluno, su...

Python - criar nomes aleatórios

Imagem
 Viva ! Como para um projecto que estou a fazer para o meu curso estou a precisar de vários nomes inventados para uma base de dados fícticia, pensei em fazer um pequeno exercício em Python: criar uma série de nomes inventados para colocar na dita BD. Comecei por arranjar uma série de primeiros e últimos nomes e colocar tudo num ficheiro de excel. Depois importei o ficheiro para o Python: import numpy as np df = pd.read_csv('C:/Users/Dell Latitude E5570/Desktop/nomes_1.csv', delimiter = ";") incompleta1 = df["Primeiros"] incompleta2 = df["Ultimos"] primeiros = [ element   for element in incompleta1 if element !='nan'    ] ultimos_pre = [  str(x) for x in incompleta2   ] ultimos = [x for x in ultimos_pre if x != 'nan'] Temos duas colunas no df, a Primeiros e a Ultimos, mas o problema aqui é que a coluna últimos tem vários "NaN" de que nos queremos ver livres, portanto primeiro transformamos tudo em strings e depois fazemos u...

Python - Excel - Lista de Còdigos Postais de Portugal

Imagem
Study day #64 ! Ora bem, hoje depois de mais umas poucas horas de SQL, adiantei junto com os meus colegas o nosso projecto de um site de Cursos online ! Para tal iremos criar a base de dados do projecto pretendido em UML, e depois fazer umas queries em SQL. Como para esse projecto vamos precisar de dados simulados, dediquei-me no Excel a usar o maravilhoso comando "ALEATORIO", o "INDICE" e o CONCAT para ter uma ´serie de utilizadores simulados. Para meter a coisa mais séria em vez de simularmos os códigos postais, decidimos utilizar os verdadeiros de Portugal. Encontrei uma listagem em .CSV online mas tinha muitos campos nulos e portanto peguei no Python e dediquei-me a partir o ficheiro só em 4 colunas: Nome_Localidade, num_cod_postal, ext_cod_postal e desig_postal. Depois exportei para Excel e ficou uma lista muito bonita de 324 507 códigos postais portugueses ! Podem aceder-lhe aqui: https://1drv.ms/x/s!AiCD6y1hHWWk8HlUyce3LsSh8Kr4?e=P3jLDB Se por acaso o link n...

Python - Concatenar e unir dataframes diferentes

Imagem
 Mais algumas funções no Pandas: Concatenar e unir vários dataframes: Se tivermos o seguinte dicionário: raw_data = {     'Numero do Elemento':['1','2','3','4'],     'Primeiro Nome':['Sérgio','Inês','Beatriz','Henrique'],     'Último Nome':['Paulos','Silva','Paulos','Serra'] } Podemos convertê-lo num dataframe do Pandas: elementos = pd.DataFrame(raw_data, columns = ['Numero do Elemento','Primeiro Nome','Último Nome'] Agora se tivermos outro dicionário fazemos o mesmo: raw_data1 = {     'Numero do Elemento':['5','6','7','8'],     'Primeiro Nome':['Francisco','Graça','Joaquim','Helena'],     'Último Nome':['Paulos','Santos','Silva','Silva'] } elementos1 = pd.DataFrame(raw_data1, columns = ['Numero do Elemento','Prime...

Python - mais Pandas !

Imagem
 E hoje continuamos com mais funções do Pandas em Python ! Aplicar uma função numa coluna do dataframe: Imaginemos que vamos importar um ficheiro em CSV (de preferência guardado como UTF-8 para o Python o abrir sem problemas, e definindo o separador para aparecer tudo bonito): df = pd.read_csv('C:/Users/Dell Latitude E5570/Desktop/python8.csv', sep = ';') (verificar o UTF-8 e o separador) E agora queremos pegar numa coluna deste nosso dataframe, por exº a coluna dos salário e aumentar 500 em cada um dos elementos. Podíamos fazer isso um a um, mas se tivéssemos milhares de elementos não era muito inteligente. Vamos portanto criar primeiro uma função: def aumento_salario(x):        return x + 500 Dizemos que para a variável x que coloquemos, iremos ter de volta a variável x + 500. Agora aplicamos essa função na coluna desejada com o comando .apply(): df['Salário'].apply(aumento_salario) E voilá ! E se quisermos por exemplo saber quantas letras tem o nome de cada t...

Python - Introdução ao Pandas

Imagem
 Básicos do plugin Pandas para o Python: Trabalhamos com Séries e Dataframes. Series é como se fossem as colunas no Excel e os Dataframes como se fossem as Tabelas. Aqui, cada elemento das Series pode ter uma label. Por exemplo: my_list = ['melão','laranja','maçã']   criamos uma lista para os nossos elementos etiquetas = ['fruta1','fruta2','fruta3']  criamos uma lista que servirá para chamar esses elementos Assim, para criarmos uma Serie dentro do Pandas : x = pd.Series(data = my_list, index = etiquetas)  no data colocamos os nossos elementos e no index a nossa lista das etiquetas. Quando chamamos a nossa variável x, já temos portanto a nossa Serie criada. Para criarmos um DataFrame (tipo tabela no Excel) , usamos a seguinte sintaxe: df = pd.DataFrame({'Nome':['Sérgio','Inês','Beatriz','Henrique'],'Idade':[42,32,7,6],'Cidade':['Porto','Lisboa','Almada','Li...