Vamos explorar algumas das bibliotecas mais importantes para realizar análises de dados utilizando a linguagem Python. Vamos entender o que é uma biblioteca, para que serve cada uma das principais bibliotecas, suas funcionalidades, casos de uso e exemplos práticos.
Mas antes, vamos recapitular:
O que é Python?
Python é uma linguagem de programação amplamente utilizada hoje em dia para análise de dados e desenvolvimento de software. Por ser uma linguagem interpretada e de alto nível, Python permite automatizar tarefas, realizar análises complexas e desenvolver aplicações de forma rápida e prática.
Além disso, Python conta com uma vasta comunidade e grandes empresas que utilizam a linguagem, o que garante suporte constante e evolução contínua.
Torne-se um cientista de dados aprendendo tudo na prática!
O que é uma biblioteca?
Uma biblioteca nada mais é do que um conjunto de funções e métodos pré-construídos que nos permitem realizar tarefas específicas dentro de uma linguagem de programação.
No caso do Python, existem diversas bibliotecas focadas em análise de dados, machine learning, visualização de dados e muitas outras áreas. Essas bibliotecas funcionam como uma “caixa de ferramentas” que temos disponível para importar e utilizar em nossos scripts Python.
Algumas das principais vantagens de se utilizar bibliotecas são:
- Produtividade: como as funções já estão prontas, não precisamos reinventar a roda e podemos focar em resolver o problema real da análise de dados.
- Qualidade: como são bibliotecas amplamente utilizadas, os métodos costumam ser bem testados e confiáveis.
- Comunidade: ao utilizar bibliotecas conhecidas, é mais fácil encontrar suporte e ajuda na comunidade.
- Desempenho: por serem escritas em linguagens compiladas como C e C++, as bibliotecas tendem a ter um desempenho superior.
Sendo assim, invés de criarmos todas as funcionalidades do zero, podemos aproveitar o conhecimento e trabalho de toda a comunidade que está por trás destas bibliotecas.
Pandas
O Pandas é uma das bibliotecas mais populares do Ecossistema Python para análise de dados. Ele fornece estruturas de dados flexíveis e intuitivas para manipular e analisar dados com eficiência.
!https://smartplayer.scaleup.com.br/images/pandas.png
O Pandas é open-source e permite importar dados de vários formatos como CSV, JSON, SQL, Microsoft Excel e depois manipular esses dados de forma simples com suas estruturas de dados integradas, como Series e DataFrames.
Alguns dos principais recursos do Pandas:
- Carregar e manipular diferentes formatos de dados;
- Selecionar e acessar subconjuntos de dados;
- Manipulação de dados faltantes;
- Agregações e junções de grupos;
- Mapeamentos e atribuições comuns.
Em resumo, o Pandas fornece uma maneira fácil de trabalhar com dados para análise exploratória e limpeza antes de aplicar algoritmos de Machine Learning.
Series e DataFrames
As duas principais estruturas de dados do Pandas são Series e DataFrames. Entender essas estruturas é essencial para trabalhar com a biblioteca.
Series
Um Series é uma estrutura de dados unidimensional que pode armazenar qualquer tipo de dados (inteiros, strings, floats, objetos Python, etc). É parecido com um array, com a diferença que podemos nomear os índices do Series.
Exemplo:
import pandas as pdnotas = pd.Series([8.5, 7.8, 9.0], index=["Matemática", "Física", "Química"]) print(notas)
Saída:
Matemática 8.5Física 7.8 Química 9.0dtype: float64
Podemos acessar valores do Series utilizando os rótulos dos índices ou as posições numéricas, como em arrays tradicionais do Python.
DataFrames
Um DataFrame é uma estrutura de dados bidimensional, ou seja, com linhas e colunas, podendo ser entendido como uma planilha ou tabela do Excel em código.
Exemplo:
import pandas as pddados = { "nome":["João", "Márcia", "Pedro", "Júlia"], "idade":[27, 32, 22, 25], "cidade":["Rio de Janeiro", "Belo Horizonte", "São Paulo", "Porto Alegre"] }df = pd.DataFrame(dados)print(df)
Saída:
nome idade cidade0 João 27 Rio de Janeiro1 Márcia 32 Belo Horizonte 2 Pedro 22 São Paulo3 Júlia 25 Porto Alegre
O DataFrame permite indexação e seleção de colunas específicas, aplicação de funções, junção com outros DataFrames e muito mais. É a estrutura mais utilizada para análises de dados no Pandas.
Lendo e Escrevendo Dados
Uma das principais funcionalidades do Pandas é ler dados de diversas fontes e formatos, como CSV, TXT, Excel, SQL, JSON e outros.
Alguns exemplos:
Lendo CSV
df = pd.read_csv("dados.csv")
Lendo Excel
df = pd.read_excel("planilha.xlsx")
Lendo banco de dados SQL
df = pd.read_sql("SELECT * FROM clientes", conexao)
Do mesmo modo, o Pandas permite salvar DataFrames em diferentes formatos:
df.to_csv("saida.csv", index=False) df.to_excel("saida.xlsx", sheet_name="planilha")
Isso facilita muito o fluxo de importar dados, fazer análises e exportar resultados.
Seleção de Dados
Uma funcionalidade crucial do Pandas é selecionar subconjuntos específicos dos dados para análise. Isso é feito principalmente através da indexação e fatiamento de linhas e colunas.
Alguns exemplos:
# Selecionar coluna específica df["coluna"]# Selecionar com condiçõesdf[df["coluna"] > 0]# Fatiar linhasdf[0:10] # Selecionar linhas e colunas específicas df.loc[0:5, ["coluna1", "coluna2"]]
Essas são apenas algumas das diversas formas de selecionar e filtrar dados disponíveis no Pandas.
Agregações e Groupby
Operações de agregação e groupby são comumente utilizadas em análises de dados. O Pandas torna essas tarefas intuitivas e fáceis de usar.
Alguns exemplos de agregações:
# Média df["coluna"].mean()# Contagem de itensdf["coluna"].count() # Valor máximodf["coluna"].max()# Desvio padrão df["coluna"].std()
Já o groupby permite separar os dados em grupos e aplicar funções de agregação para cada grupo:
# Agrupar por coluna1 e tirar média de coluna2df.groupby("coluna1")["coluna2"].mean()
Isso permite obter insights poderosos sobre os dados.
Junção de DataFrames
Uma operação muito comum é a necessidade de juntar ou mesclar dois DataFrames, similar a um join de bancos de dados relacionais.
O Pandas provê vários métodos de mesclagem e junção intuitivos:
# Mesclagem simplesdf1.merge(df2)# Mesclagem nas colunas específicas df1.merge(df2, on=["coluna1", "coluna2"])# Junção esquerda df1.merge(df2, how="left")
Novamente, o Pandas abstrai o trabalho manual e repetitivo deixando a análise de dados mais produtiva.
Conclusão sobre o Pandas
O Pandas é uma biblioteca indispensável para análises de dados em Python pela sua capacidade de importar, manipular, transformar, agregar, junção e exportar dados de forma fácil e intuitiva.
Seu uso é disseminado entre cientistas e engenheiros de dados, analistas, e qualquer pessoa que precise trabalhar com dados. Portanto, dominar o Pandas é um requisito importante para qualquer profissional de dados hoje em dia.
Vale a pena investir tempo para aprender suas principais funcionalidades. A documentação do Pandas é um ótimo recurso que deve ser usado como referência constante.
NumPy
O NumPy é uma biblioteca fundamental para computação científica em Python, sendo muito utilizada em aplicações de análise de dados, machine learning e inteligência artificial.
!https://smartplayer.scaleup.com.br/images/numpy.png
O NumPy introduz o tipo de dado ndarray (n-dimensional array) que é um array multidimensional que permite representar matrizes e tensores que são estruturas centrais para análises matemáticas e estatísticas de dados.
Além disso, o NumPy possui diversas funcionalidades úteis:
- Funções matemáticas para álgebra linear, geração de números aleatórios, transformadas de Fourier e muito mais
- Broadcast de operações entre arrays de diferentes dimensões
- Ferramentas para leitura e escrita em disco
- Integração com outras bibliotecas como Pandas, SciPy, Matplotlib e TensorFlow
Em resumo, com o NumPy podemos executar cálculos numéricos de forma eficiente e com alto desempenho, sendo essencial para boa parte das análises de dados.
Ndarrays
O tipo de dado mais importante do NumPy é o ndarray. Ele permite representar arrays de N dimensões, onde cada dimensão pode ter um tamanho diferente.
Exemplos de criação manual de ndarrays:
import numpy as npvetor = np.array([1, 2, 3]) matriz = np.array([[1, 2, 3], [4, 5, 6]]) tensor3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
Podemos especificar o tipo de dado durante a criação do ndarray:
inteiros = np.array([1, 2, 3], dtype=int)floats = np.array([1.5, 2.7, 3.9], dtype=float)
Também podemos modificar o formato (shape) de um array existente utilizando a função .reshape():
a = np.array([1, 2, 3, 4, 5, 6]) a.reshape((2, 3)) # transforma em matriz 2x3
Ndarrays são a estrutura central do NumPy e nos permitem representar dados matriciais de forma eficiente para computação científica.
Operações Elemento-a-Elemento
Uma grande vantagem do NumPy é a facilidade em fazer operações aplicadas elemento-a-elemento em arrays.
Por exemplo:
import numpy as npa = np.array([1, 2, 3, 4])b = np.array([10, 20, 30, 40])c = a + b # Resultado: array([11, 22, 33, 44]) d = b - a # Resultado: array([ 9, 18, 27, 36])
Isso economiza laços for explícitos, deixando o código mais limpo e eficiente.
Também podemos fazer operações elemento-a-elemento entre arrays e escalares:
a = np.array([1, 2, 3, 4])b = a * 2 # Multiplica cada elemento por 2 # Resultado: array([2, 4, 6, 8])
Essas operações aplicadas a arrays inteiros são extremamente rápidas e otimizadas no NumPy.
Transmissão de Funções
Outra funcionalidade poderosa do NumPy é a capacidade de transmitir funções, que consiste em aplicar uma função a cada elemento de um array, de forma vetorizada.
Por exemplo, podemos calcular o seno de cada elemento de um array utilizando a função sin() do NumPy:
import numpy as npangulos = np.array([0, np.pi/2, np.pi]) print(np.sin(angulos))# Resultado: # [0. 1. 1.22464680e-16]
Funções matemáticas comuns como seno, cosseno, logaritmo, exponencial e muitas outras podem ser aplicadas a arrays para processamento veloz e vetorizado de dados numéricos.
Matplotlib
O Matplotlib é a biblioteca mais popular do Python para visualização de dados e construção de gráficos 2D simples e completos.
!https://smartplayer.scaleup.com.br/images/matplotlib.png
Com o Matplotlib, podemos criar uma ampla variedade de plots, incluindo:
- Gráficos de linhas
- Gráficos de dispersão (scatter)
- Histogramas
- Gráficos de barras
- Gráficos de pizza
- Box plots
- Mapas de calor
Além disso, o Matplotlib permite customizar cada aspecto visual do gráfico, desde cores, rótulos, títulos, escalas e muito mais.
Vamos ver alguns exemplos práticos.
Gráfico de Linhas
Um gráfico de linhas mostra a relação entre duas variáveis numéricas.
Exemplo:
import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]y = [2, 4, 6, 8, 10] plt.plot(x, y)plt.title("Gráfico de Linhas")plt.xlabel("Eixo X")plt.ylabel("Eixo Y")plt.show()
Saída:
!https://smartplayer.scaleup.com.br/images/linhas.png
Gráfico de Barras
Já o gráfico de barras exibe barras separadas para cada categoria.
Exemplo:
import matplotlib.pyplot as pltvalores = [10, 7, 13, 9, 15]frutas = ["Maçã", "Banana", "Pera", "Uva", "Laranja"]plt.bar(frutas, valores)plt.title("Produção de Frutas")plt.ylabel("Toneladas")plt.show()
Saída:
!https://smartplayer.scaleup.com.br/images/barras.png
Histogramas
Histogramas mostram a distribuição dos dados com barras agrupadas em bins (intervalos).
Exemplo:
import matplotlib.pyplot as pltidades = [18, 19, 21, 25, 26, 26, 30, 32, 38, 45]plt.hist(idades)plt.title("Histograma de Idades")plt.xlabel("Idade")plt.ylabel("Frequência")plt.show()
Saída:
!https://smartplayer.scaleup.com.br/images/histograma.png
Salvando Gráficos
Podemos salvar os gráficos gerados em arquivo utilizando o método savefig():
plt.savefig("grafico.png")
Conclusão
Aprendemos de forma detalhada as bibliotecas fundamentais para a análise de dados em Python, evidenciando a importância e versatilidade de cada uma. Aprendemos como o uso dessas bibliotecas são indispensáveis não apenas na manipulação e análise de grandes conjuntos de dados, mas também na visualização de dados de forma eficaz e na extração de insights.
Seja você um iniciante ou um profissional experiente, a compreensão dessas bibliotecas abre portas para um mundo de possibilidades na área de análise de dados utilizando Python!
Torne-se um cientista de dados aprendendo tudo na prática!