<jupyter_start><jupyter_text>**Turma de Pós-Graduação de Ciência de Dados****Disciplina: Linguagem de Programação Python****prof: <NAME>, DSc**  **Aula 03**  **Solução do Exercício da Aula 02**<jupyter_code>from numpy.random import seed
from numpy.random import normal
import matplotlib.pyplot as plt
import numpy as np
def gerar_valores(dias):
  seed(1)
  dados = normal(loc=100, scale=10, size=dias)
  return dados
def gerar_dados(posicao_grafico):
  ndias = 365
  dias = np.arange(365)
  y = gerar_valores(ndias)
  linha  = 2
  coluna = 3
  plt.subplot(linha, coluna, posicao_grafico)
  plt.plot(dias,y)
  return y
def analise_exploratoria(dados, investimento):
  media = dados.mean()
  desvio_padrao=dados.std()
  minimo = dados.min()
  maximo = dados.max()
  print("-----------------------------------------------")
  print("Análise do Investimento:{}".format(investimento))
  print("-----------------------------------------------")
  print("media:{}".format(media))
  print("desvio padrão:{}".format(desvio_padrao))
  print("mínimo:{}".format(minimo))
  print("máximo:{}".format(maximo))
import matplotlib.pyplot as plt
import numpy as np

retorno_1 = gerar_dados(1)
retorno_2 = gerar_dados(2)
retorno_3 = gerar_dados(3)
retorno_4 = gerar_dados(4)
retorno_5 = gerar_dados(5)
retorno_6 = gerar_dados(6)
plt.show()
analise_exploratoria(retorno_1,1)
analise_exploratoria(retorno_2,2)
analise_exploratoria(retorno_3,3)
analise_exploratoria(retorno_4,4)
analise_exploratoria(retorno_5,5)
analise_exploratoria(retorno_6,6)<jupyter_output><empty_output><jupyter_text>**Exercício para próxima aula:****Para cada gráfico do exercício anterior, acrescentar informações sobre:**  > A que investimento o gráfico se refere   > Acrescentar rótulos para os eixos horizontal e vertical  > Usar marcadores para destacar pontos nos gráficos    > Usar cores diferentes para cada gráfico<jupyter_code>def gerar_dados_2(investimento):
  ndias = 365
  dias = np.arange(365)
  y = gerar_valores(ndias)
  return y
lista_cores = ['red','blue','green','orange','darkgreen','black']
lista_marcadores = ['x', '*','x','o','x', '*']
fig, axs = plt.subplots(2,3, figsize=(15, 8), sharex=True, sharey=True)
for i, ax in enumerate(axs.flat):
    ax.plot(gerar_dados_2(i), marker=lista_marcadores[i], color=lista_cores[i])
    ax.set_title(f'Investimento {i+1}')

plt.setp(axs[-1, :], xlabel='dias')
plt.setp(axs[:, 0], ylabel='Retorno')<jupyter_output><empty_output><jupyter_text>**Um pouco mais sobre vetores ...**<jupyter_code>import numpy as np
nums = np.array([1,2,3,4,5])     
print('nums = {}'.format(nums))  
print('nums[0] = {}'.format(nums[0]))
print('nums[2:4] = {}'.format(nums[2:4]))
print('nums[2:] = {}'.format(nums[2:]))
print('nums[:2] = {}'.format(nums[:2]))
print('nums[:] = {}'.format(nums[:]))
print('nums[:-1] = {}'.format(nums[:-1]))
print('nums[:-2] = {}'.format(nums[:-2]))
nums[2:4] = [8, 9]        # Assign a new sublist to a slice
print('nums = {}'.format(nums))               # Prints "[0, 1, 8, 9, 4]"<jupyter_output>nums = [1 2 3 4 5]
nums[0] = 1
nums[2:4] = [3 4]
nums[2:] = [3 4 5]
nums[:2] = [1 2]
nums[:] = [1 2 3 4 5]
nums[:-1] = [1 2 3 4]
nums[:-2] = [1 2 3]
nums = [1 2 8 9 5]<jupyter_text>**Um pouco mais sobre funções ...**  ![complex - T01 - Q07.jpg](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCACoAoEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQ<KEY>KKKAC<KEY>AC<KEY>ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//Z)**Implementar uma função para resolver o problema**<jupyter_code>def funcao_somatorio_k_k2(n):
  soma = 0
  for i in range(n):
    k = i +1
    soma = soma + 3*k + 2*k**2
  return soma

resultado = funcao_somatorio_k_k2(10)
print('resultado: {}'.format(resultado))<jupyter_output>resultado: 935<jupyter_text>**Dada função F definida como:**> F(1) = 1> F(N) = F(N/2) + 1,  para N ≥ 2.**Suponha N= 1, 2, 4, 8, 16, 32, 64, ...****Implementar uma função para resolver o problema.**<jupyter_code>def f(n):
  if(n==1):
    return 1
  else:
    return f(n/2)+1
resultado = f(64)
print('resultado: {}'.format(resultado))<jupyter_output>resultado: 7<jupyter_text>**Obtenha f(n) para cada elemento da lista = [2, 16, 64, 256].**<jupyter_code>lista = [2, 16, 64, 256]
for a in lista:
  print('resultado: {}'.format(f(a)))
lista = [2, 16, 64, 256]
n = len(lista)
for i in range(n):
  print('resultado: {}'.format(f(lista[i])))<jupyter_output>resultado: 2
resultado: 5
resultado: 7
resultado: 9<jupyter_text>**Obter uma lista para dos resultados de f(n) para a lista = [2, 16, 64, 256].**<jupyter_code>resultado = []
lista = [2, 16, 64, 256]
for elem in lista:
  resultado.append(f(elem))
print('resultado: {}'.format(resultado))<jupyter_output>resultado: [2, 5, 7, 9]<jupyter_text>**Package Pandas** **Exemplo 01**<jupyter_code>import numpy as np
import pandas as pd
dados = {'coluna 01': [1, 2], 'coluna 02': [3, 4]}
df = pd.DataFrame(data=dados)
df<jupyter_output><empty_output><jupyter_text>**Exemplo 02**<jupyter_code>dados_2 = {'Produto': ['A', 'B'], 'Preço': [100, 500]}
df_2 = pd.DataFrame(data = dados_2)
df_2
n = len(df_2.Produto)
n
n = len(df_2.Preço)
n<jupyter_output><empty_output><jupyter_text>**Adicionar nova coluna**<jupyter_code>df_2['Estoque'] = [200, 707]
df_2<jupyter_output><empty_output><jupyter_text>**Outra forma de adicionar uma coluna**<jupyter_code>df_2.insert(loc=3, column="Categoria", value =['Suco', 'Cereal'])
df_2<jupyter_output><empty_output><jupyter_text>**Visualização de Dados** **Gráfico de Barras**<jupyter_code>import matplotlib.pyplot as plt
import numpy as np

x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.bar(x,y)
plt.show()
import matplotlib.pyplot as plt
import numpy as np

x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.barh(x, y)
plt.show()
import matplotlib.pyplot as plt
import numpy as np

x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.bar(x, y, color = "red")
plt.show()<jupyter_output><empty_output><jupyter_text>**Histograma**<jupyter_code>import matplotlib.pyplot as plt
import numpy as np

x = np.random.normal(170, 10, 250)

plt.hist(x)
plt.show() 
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(1)
dados = np.random.normal(loc=0, scale=1, size=200)

count, bins, ignored = plt.hist(dados, 30)
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.17769679300291547, 'fraction_numerical': 0.04635568513119533, 'mean_word_length': 5.847305389221557, 'pattern_counts': {'":': 0, '<': 52, '<?xml version=': 0, '>': 58, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '13', 'dir': 'jupyter-structured-clean-dedup', 'id': '305460', 'license': 'MIT', 'n_tokens_mistral': 3275, 'n_tokens_neox': 3080, 'n_words': 565, 'path': 'Aula_03_Pos_Ciencia_De_Dados.ipynb', 'repo_name': 'rodrigosilvaluz/python_aulas_2022.1', 'size': '20296'}