# Aula 2


Importando matplotlib


```python
from matplotlib import pyplot as plt
```


```python
nyc_temp = [53.9, 56.3, 56.4, 53.4, 54.5, 56.8, 55.0, 55.3, 54.0, 56.7, 56.0, 56.1, 56.7]
years = range(2000, 2013)
plt.plot(years, nyc_temp, marker = "o")
```


```python
x1 = [38, 34, 39, 30, 45, 31]
plt.plot(x1, marker = "o")
```


```python
years = range(2000, 2013)
print(years [-1])
```

    2012



```python
# valores
x2 = [38, 34, 39, 30, 45, 31]

# series
label = [1999, 2000, 2001, 2002, 2003, 2004]

#Gerar gráfico
plt.plot(label, x2, marker = "o") ##,'o','p','x'
```


```python
list(np.random.randint(100, size = 10))
```




    [0, 53, 34, 23, 82, 85, 60, 44, 76, 90]




```python
np.random.randint(100, size = 100)
```




    array([ 3, 10, 68, 97, 75, 96, 19, 51, 33,  4, 37, 77, 51, 16, 11, 68, 14,
           95, 75, 72, 96, 19, 34, 84, 25, 34, 68,  1, 35, 46, 89, 12, 43, 31,
           77, 66, 47, 95, 95, 11,  9, 14, 27, 35, 13, 24, 87, 86, 47, 56,  1,
           47, 64, 57, 98, 36, 32, 53, 47, 29, 93, 98, 93,  4, 93, 70, 13, 35,
           41, 62, 14, 57, 78,  7, 33, 86, 51, 25, 41, 54,  6, 20, 83, 72, 61,
           28, 34, 63, 97, 97, 77, 37,  0, 52, 16, 19,  7,  5, 46, 65])




```python
#Fazendo uma função para calculo de valor presente liquido:
def npv_f(rate, cashflows):
    total = 0.0
    for i, cashflow in enumerate(cashflows):
        total += cashflow / (1 + rate) ** i
    print(total)    
    plt.plot(cashflows, marker = 'o') 
    return (total)
```


```python
#Calcular quantidade de parcelas, 50, vezes o valor da parcela, 1500, multiplicando pela taxa de 0.05 .
npv_f(0.05, [1500] * 50)
```


```python
#Fazendo um calculo para retornar o valor de parcela
def pmt_f(cashflows, rate):
    total = 0.0
    for i, cashflow in enumerate(cashflows):
        total += cashflow * ((1 + rate/100) ** i)
    plt.plot(cashflows, marker = 'o')
    return (total)
```


```python
pmt_f([1000, 2000, 3000], 5)
```


```python
#Utilizando operador while

cashflows = [550, -500, -500, -500, 1000]
r = 0.0
while (r < 1.0):
    r += 0.0001
    npv = npv_f(r, cashflows) 
    if(abs(npv) <= 0.001):
        print(r)
        
```


```python
grade = 74
if grade >= 90:
    print('A')
    
elif grade >= 85:
    print('A-')

```


```python
import sys
```


```python
#Função que valida notas e classifica de acordo com parametro de entrada.
def notas(nota):
    if nota > 100 or nota <0:
        print("Error!\nNota inválida!\n")
    else:
        if nota >= 90:
            print('A+')
        elif nota >= 85:
            print('A-')
        elif nota >= 75:
            print('B+')
        elif nota >= 65:
            print('B-')
        elif nota >= 55:
            print('C+')
        else:
            print('D-')
        
```


```python
#Função que valida presença
def presencaAluno(total, presenca):
    if presenca > total:
        print('Presença maior que o permitido.')
    else:
        if presenca < ((total * 75) / 100 ):
            print("Aluno Reprovado!")
        else:
            print("Aluno aprovado!")
```


```python
#Verificando nota e presença
sair = False
while sair == False:
    n = int(input("Digite a nota: "))
    notas(n)
    p = int(input("Presença do aluno: "))
    presencaAluno(15, p)
    s = int(input("Deseja sair?\n1. Sim\n2. Não\n"))
    if s == 1 :
        sair = True
print("Você saiu do sistema.")
```

    Digite a nota: 90
    A+
    Presença do aluno: 8
    Aluno Reprovado!
    Deseja sair?
    1. Sim
    2. Não
    2
    Digite a nota: 102
    Error!
    Nota inválida!
    
    Presença do aluno: 15
    Aluno aprovado!
    Deseja sair?
    1. Sim
    2. Não
    1
    Você saiu do sistema.



```python
presencaAluno(15, 9)
```

    Aluno Reprovado!


# 2 parte

Aula de operadores


```python
#operador de igualdade
2 == 2
```




    True




```python
#operador de diferente
2 != 3
```




    True




```python
a = 3
b = 2
```


```python
a > 2 & b == 2
```




    True




```python
def curso(nota, presenca):
    if nota < 65 and presenca < 75:
        print('Aluno Reprovado por nota e falta.')
        
    elif nota <65 or presenca < 75:
        print('Aluno reprovado por nota ou falta')
        
    else:
        print("Aluno não reprovou")
```


```python
curso(nota = 60, presenca = 79)
```

    Aluno reprovado por nota ou falta


Criando Anti Join com python


```python
import pandas as pd
```


```python
def anti_join(x, y, on):
    #Retorna linhas em x que não estão presentes em y
    ans = pd.merge(left=x, right=y, how='left', indicator=True, on=on)
    ans = ans.loc[ans._merge == 'left_only', :].drop(columns='_merge')
    return ans
    
```


```python
def anti_join_all_cols(x, y):
    #Retorna colunas em x que não estão presentes em y
    assert set(x.columns.values) == set(y.columns.values)
    return anti_join(x, y, x.columns.tolist())
```

Introdução ao Sympy


```python
#Verificando se ja está instalado a biblioteca
from sympy.solvers import solve
```


```python
#Importando a biblioteca de Symbol
from sympy import Symbol
```


```python
x = Symbol('x')
```


```python
solve(x ** 2 -1 + x, x)
```




    [-1/2 + sqrt(5)/2, -sqrt(5)/2 - 1/2]




```python
from sympy import symbols
from sympy.plotting import plot
x = symbols('x')
#Para alterar as curvas, modifique pelas variaveis p1 e p2, dentro plot.
p1 = plot(x**2, show=False)
p2 = plot(x, show=False)
p1.append(p2[0])
p1
# Plot object containing:
# [0]: cartesian line: x**2 for x over (-10.0, 10.0)
# [1]: cartesian line: x for x over (-10.0, 10.0)
p1.show()
print(p1)

```

Fazendo um gráfico 3D


```python
from sympy import symbols
from sympy.plotting import plot3d
x, y = symbols('x y')
```


```python
plot3d(x*y, (x, -5, 5), (y, -5, 5))
# Plot object containing:
# [0]: cartesian surface: x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
```


```python
plot3d(x*y, -x*y, (x, -5, 5), (y, -5, 5))
# Plot object containing:
# [0]: cartesian surface: x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
# [1]: cartesian surface: -x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
```


```python
plot3d(x**4, -y+1, (x, -5, 5), (y, -5, 5))
```


```python
plot3d((x**2 + y**2, (x, -5, 5), (y, -5, 5)),
    (x*y, (x, -3, 3), (y, -3, 3)))
# Plot object containing:
# [0]: cartesian surface: x**2 + y**2 for x over (-5.0, 5.0) and y over (-5.0, 5.0)
# [1]: cartesian surface: x*y for x over (-3.0, 3.0) and y over (-3.0, 3.0)
```


```python
from sympy import symbols, cos, sin
from sympy.plotting import plot3d_parametric_surface
u, v = symbols('u v')
```


```python
plot3d_parametric_surface(cos(u + v), sin(u - v), u - v,
    (u, -5, 5), (v, -5, 5))
# Plot object containing:
# [0]: parametric cartesian surface: (cos(u + v), sin(u - v), u - v) for u over (-5.0, 5.0) and v over (-5.0, 5.0)
```

9d9e68d365c763f3cba7e4248b6ae42526a68f4d
ipynb
Jupyter Notebook
Aula 2.1.ipynb
Leonardoliveira/Fundamentos_DataScience_Python
a797ba5d6f1e54b01ad352009d58eeb47e9876fa
Apache-2.0
Aula 2.1.ipynb
Leonardoliveira/Fundamentos_DataScience_Python
a797ba5d6f1e54b01ad352009d58eeb47e9876fa
Apache-2.0
Aula 2.1.ipynb
Leonardoliveira/Fundamentos_DataScience_Python
a797ba5d6f1e54b01ad352009d58eeb47e9876fa
Apache-2.0
Qwen/Qwen-72B
1. YES
2. YES