Introdução ao Python: Estrutura da Linguagem

Estrutura da linguagem Python, incluindo operações básicas, tipos de objetos (listas, arrays, strings, dicionários) e sintaxe principal.

Python é uma linguagem de programação de alto nível, interpretada e de propósito geral. É amplamente utilizada em ciência de dados, desenvolvimento web, automação e muitas outras áreas. Para análise de dados, utilizamos principalmente as bibliotecas NumPy para computação numérica e Pandas para manipulação de dados tabulares.

DicaCódigo em Python

Acompanha este tutorial o Introdução ao Python

1 Pacotes essenciais

Antes de começarmos, vamos importar os pacotes fundamentais que utilizaremos:

import math
import numpy as np
import pandas as pd

2 Operações aritméticas

Python utiliza os operadores matemáticos padrão de forma intuitiva:

2 + 4
6
2 * 4
8
2 - 4
-2
2**4  # Potenciação
16
13 / 2   # Divisão comum (resultado decimal)
6.5
13 // 2  # Divisão inteira
6
13 % 2   # Módulo (resto da divisão)
1

Python respeita a precedência dos operadores matemáticos:

5 * (9 + 2)
55
5 * 9 + 2
47
3 + 4**2
19

2.1 Funções matemáticas

Python oferece funções matemáticas tanto no módulo math quanto no NumPy:

math.log(100)      # Logaritmo natural
math.log10(100)    # Logaritmo base 10
math.sqrt(36)      # Raiz quadrada
math.pi            # Constante π
3.141592653589793
math.sin(0.5 * math.pi)       # Seno
math.sin(math.radians(90))    # Seno de 90 graus
1.0

Com NumPy, temos funções vetorizadas:

np.log(100)
np.sqrt(36)
np.float64(6.0)

3 Atribuição de valores

Em Python, atribuímos valores a variáveis usando o operador =:

x = np.log(100)
x
np.float64(4.605170185988092)
y = x + 10
y
np.float64(14.605170185988092)

Ao reatribuir um valor, o anterior é substituído:

x = 5
y = x + 10
y
15

Python diferencia maiúsculas de minúsculas:

a = math.sqrt(49)
A = math.sqrt(81)
a, A
(7.0, 9.0)

4 Estruturas de dados

4.1 Listas

Listas são coleções ordenadas e mutáveis em Python:

x = [4, 3.0, 5, 9, 10]
x
[4, 3.0, 5, 9, 10]
type(x)        # Tipo do objeto
len(x)         # Comprimento da lista
5

Acessando elementos (índices começam em 0):

x[0]           # Primeiro elemento
x[0:]          # Do primeiro elemento em diante
[4, 3.0, 5, 9, 10]

Importante: Multiplicar uma lista por um número replica a lista:

x * 2          # Replica a lista duas vezes
[4, 3.0, 5, 9, 10, 4, 3.0, 5, 9, 10]

4.2 Arrays NumPy

Arrays são mais eficientes para operações numéricas:

y = np.array(x)
y
array([ 4.,  3.,  5.,  9., 10.])
type(y)
len(y)
y[0]           # Primeiro elemento
y[0:2]         # Primeiros dois elementos
array([4., 3.])

Operações em arrays são elemento por elemento:

y * 2          # Multiplica cada elemento por 2
array([ 8.,  6., 10., 18., 20.])

Comparação entre listas e arrays:

x * 2                    # Lista: replica
y * 2                    # Array: multiplica cada elemento
[i * 2 for i in x]      # List comprehension: multiplica cada elemento
[8, 6.0, 10, 18, 20]

4.3 Sequências

Python oferece várias formas de criar sequências:

list(range(2, 11))       # Sequência de 2 a 10
np.linspace(2, 10, 4)    # 4 pontos igualmente espaçados entre 2 e 10
np.repeat(4, 6)          # Repete o valor 4 seis vezes
array([4, 4, 4, 4, 4, 4])
[2, 5] * 3               # Lista: replica
np.tile([2, 5], 3)       # Array: repete o padrão
array([2, 5, 2, 5, 2, 5])

4.4 Strings (cadeias de caracteres)

Strings são sequências de caracteres:

especies = ["Deuterodon iguape", 
           "Characidium japuhybense", 
           "Trichomycterus zonatus"]
especies
['Deuterodon iguape', 'Characidium japuhybense', 'Trichomycterus zonatus']
sorted(especies)         # Ordena alfabeticamente
['Characidium japuhybense', 'Deuterodon iguape', 'Trichomycterus zonatus']

Importante: Python é tipado dinamicamente, mas operações devem ser compatíveis:

especies = [
    "Deuterodon iguape",
    "Characidium japuhybense", 
    "Trichomycterus zonatus",
    4]

# especies[3] + 3  # Isso causaria erro: não pode somar string com número

4.5 Arrays 2D (matrizes)

Listas de listas podem representar matrizes:

x = [
    [21, 26, 5, 18],
    [17, 28, 20, 15],
    [13, 14, 27, 22]
]

x
x[0]           # Primeira linha
x[0][0]        # Elemento da primeira linha, primeira coluna
21

Arrays NumPy oferecem indexação mais conveniente:

y = np.array(x)
y
y[0]           # Primeira linha
y[0][0]        # Elemento [0,0]
y[0, 0]        # Notação matricial
y[0,:]         # Primeira linha (todas as colunas)
y[:,0]         # Primeira coluna (todas as linhas)
array([21, 17, 13])

4.6 Dicionários

Dicionários armazenam pares chave-valor:

nosso_dic = {
    'Ilha' : ['Ilhabela', 'Anchieta', 'Cardoso'],
    'Areaskm2': [347.5, 8.3, 131]
}
nosso_dic
nosso_dic.keys()       # Mostra as chaves
dict_keys(['Ilha', 'Areaskm2'])

4.7 DataFrames

DataFrames são estruturas tabulares do Pandas, similares a planilhas:

df = pd.DataFrame(nosso_dic)
df
df['Ilha']             # Acessa a coluna 'Ilha'
0    Ilhabela
1    Anchieta
2     Cardoso
Name: Ilha, dtype: object