- InfinitePy Newsletter 🇧🇷
- Posts
- Trabalhando com Dados em Python: Do Básico ao Avançado
Trabalhando com Dados em Python: Do Básico ao Avançado
Python emergiu como uma das linguagens de programação mais populares para manipulação e análise de dados, graças à sua simplicidade e ao poder de suas bibliotecas.
🕒 Tempo estimado de leitura: 10 minutos
Ler e escrever arquivos são operações fundamentais em Python e muitas vezes são necessárias para tarefas como processamento de dados, gerenciamento de configurações e registro de log. Compreender como trabalhar com dados é uma habilidade crucial, seja lendo e escrevendo arquivos de texto básicos, carregando conjuntos de dados ou realizando manipulações de dados complexas, Python tem tudo isso.
Começaremos com o básico de manipulação de arquivos usando open()
e depois mergulharemos em bibliotecas poderosas como Pandas para tarefas de manipulação de dados mais avançadas. Cobriremos exemplos práticos para usuários iniciantes, intermediários e avançados.
Agora, vamos mergulhar no mundo dos Dados em Python com alguns exemplos práticos, que também estão disponíveis no Google Colab aqui 👨🔬.
Ler arquivos é uma das habilidades fundamentais que você precisa adquirir. A função open()
embutida no Python torna essa tarefa direta. Veja como você pode fazer isso:
Primeiro, faremos o download de um arquivo de exemplo para nosso uso.
# Importe a função urlretrieve do módulo urllib.request # Esta função ajuda a baixar um arquivo a partir de uma URL dada from urllib.request import urlretrieve # Defina a URL do arquivo a ser baixado url = 'https://infinitepy.s3.amazonaws.com/samples/lorem_ipsum.txt' # Defina o nome do arquivo local onde o arquivo baixado será salvo filename = 'lorem_ipsum.txt' # Use a função urlretrieve para baixar o arquivo da URL fornecida # e salvá-lo localmente com o nome de arquivo especificado urlretrieve(url, filename)
Agora podemos abrir o arquivo.
# Abra o arquivo baixado para leitura ('r' significa modo de leitura) # A instrução 'with' garante que o arquivo seja fechado corretamente após o término do bloco de código with open(filename, 'r') as file: # Leia todo o conteúdo do arquivo content = file.read() # Imprima o conteúdo do arquivo no console print(content)
Escrever dados em um arquivo é igualmente simples:
# Escrita básica em arquivo # A instrução 'with' é usada para garantir a aquisição e liberação adequada de recursos. # É um gerenciador de contexto que simplifica o trabalho com arquivos fechando automaticamente o arquivo. with open('output.txt', 'w') as file: # A função 'open' é usada para abrir um arquivo. # O primeiro argumento é o nome do arquivo. Se o arquivo não existir, ele será criado. # O segundo argumento 'w' significa 'modo de escrita', o que permite escrever no arquivo. # O método 'file.write' é usado para escrever a string fornecida no arquivo. # Aqui, ele escreve a string 'Hello, world!' em 'output.txt'. file.write('Hello, world!') # Neste ponto, o gerenciador de contexto 'with' fechará automaticamente o arquivo, # mesmo se ocorrer um erro, garantindo que os recursos sejam liberados corretamente.
Exemplo prático
Abaixo está um exemplo prático que demonstra como ler e escrever em um arquivo de texto. Vamos criar um rastreador de tarefas simples. Teremos duas funções:
uma para ler tarefas de um arquivo e
outra para escrever novas tarefas em um arquivo.
Escrevendo Tarefas em um Arquivo
Primeiro, vamos criar uma função para escrever tarefas em um arquivo. Cada tarefa será escrita em uma nova linha.
def escrever_tarefas_no_arquivo(nome_arquivo, tarefas): """ Escreva uma lista de tarefas em um arquivo especificado. Argumentos: nome_arquivo (str): O nome do arquivo onde as tarefas serão escritas. tarefas (list): Uma lista de tarefas a serem escritas no arquivo. """ # Abra um arquivo com o nome fornecido em modo de escrita ('w'). # A instrução 'with' garante a aquisição e liberação adequada de recursos. # O arquivo é automaticamente fechado após o bloco de código indentado. with open(nome_arquivo, 'w') as file: # Itere sobre cada tarefa na lista de tarefas fornecida. for tarefa in tarefas: # Escreva cada tarefa no arquivo seguida por um caractere de nova linha. file.write(tarefa + '\n') # Imprima uma mensagem no console indicando que as tarefas foram escritas com sucesso no arquivo. print(f"As tarefas foram escritas em {nome_arquivo}")
Lendo Tarefas de um Arquivo
Em seguida, vamos ler as tarefas do arquivo. Leremos cada linha e retornaremos como uma lista de tarefas.
def ler_tarefas_do_arquivo(nome_arquivo): """ Leia tarefas de um arquivo especificado. Argumentos: nome_arquivo (str): O nome do arquivo de onde as tarefas serão lidas. Retorna: list: Uma lista de tarefas lidas do arquivo. """ tarefas = [] # Inicialize uma lista vazia para armazenar as tarefas try: # Tente abrir o arquivo em modo de leitura ('r') with open(nome_arquivo, 'r') as file: # Leia todas as linhas do arquivo na lista 'tarefas' tarefas = file.readlines() # Remova os caracteres de nova linha '\n' do final de cada tarefa tarefas = [tarefa.strip() for tarefa in tarefas] except FileNotFoundError: # Se o arquivo não for encontrado, imprima uma mensagem de erro print(f"O arquivo {nome_arquivo} não existe.") # Retorne a lista de tarefas (ou uma lista vazia se o arquivo não for encontrado) return tarefas
Usando as Funções
Aqui está um exemplo de como você pode usar essas funções:
nome_arquivo = 'tarefas.txt' # Defina uma lista de tarefas para escrever no arquivo tarefas_para_escrever = ['Comprar mantimentos', 'Completar tutorial de Python', 'Passear com o cachorro'] # Chame a função para escrever tarefas no arquivo escrever_tarefas_no_arquivo(nome_arquivo, tarefas_para_escrever) # Chame a função para ler tarefas do arquivo tarefas_lidas = ler_tarefas_do_arquivo(nome_arquivo) print("Tarefas lidas do arquivo:") # Imprima cada tarefa lida do arquivo for tarefa in tarefas_lidas: print("- " + tarefa)
Trabalhando com Arquivos CSV no Python Pandas
Arquivos CSV (Comma-Separated Values) são um dos formatos de armazenamento de dados mais comuns em análise de dados, ciência de dados e aprendizado de máquina. Pandas, uma poderosa biblioteca de manipulação e análise de dados para Python, tem suporte embutido para lidar com arquivos CSV com facilidade.
Pandas é uma biblioteca de código aberto que fornece estruturas de dados de alto desempenho e ferramentas de análise de dados fáceis de usar. É particularmente adequada para trabalhar com dados estruturados, como arquivos CSV.
Lendo Arquivos CSV
Para ler um arquivo CSV em um DataFrame, você usa a função read_csv
:
# Importe a biblioteca pandas, que é muito comumente usada para manipulação e análise de dados em Python import pandas as pd # Leia um arquivo CSV da URL fornecida em um DataFrame # Um DataFrame é uma estrutura de dados rotulada 2D com colunas de tipos potencialmente diferentes, # semelhante a uma tabela em um banco de dados ou uma planilha do Excel. df = pd.read_csv('https://infinitepy.s3.amazonaws.com/samples/empregados.csv')
Exibindo Dados
Você pode exibir as primeiras linhas do DataFrame usando o método head
:
# O método 'head' de um DataFrame do pandas retorna as primeiras n linhas. # Por padrão, ele retorna as primeiras 5 linhas se nenhum argumento for dado. # Então, a linha de código a seguir imprime as primeiras 5 linhas do DataFrame 'df'. print(df.head())
Manipulação Simples de Dados
Suponha que você queira selecionar uma coluna específica do DataFrame:
# Imprima a coluna 'Name' do DataFrame 'df' # A coluna 'Name' é acessada usando df['Nome'] print(df['Nome'])
Filtrando e Ordenando Dados
Filtrar dados pode ser feito usando condições:
# A linha a seguir filtra o DataFrame 'df' para incluir apenas as linhas onde a coluna 'Salário' é maior que 5000. # O resultado é atribuído a 'filtered_df', que é um novo DataFrame contendo as linhas filtradas. salario_filtrado_df = df[df['Salário'] > 5000] # A linha a seguir imprime as primeiras 5 linhas de 'filtered_df' no console. # Isso é útil para inspecionar rapidamente os dados filtrados para garantir que atendem às nossas expectativas. print(salario_filtrado_df.head())
Para ordenar os dados, use o método sort_values
:
# Ordene o DataFrame 'df' pelos valores na coluna 'Salário' em ordem decrescente (do maior para o menor) salario_ordenado_df = df.sort_values(by='Salário', ascending=False) # Imprima as primeiras 5 linhas do DataFrame ordenado # Usamos o método head() para exibir as 5 principais entradas de sorted_df print(salario_ordenado_df.head())
Projeto em Ação: Da Teoria à Prática
Agora, vamos aplicar o que aprendemos em um cenário do mundo real. Suponha que você tenha um arquivo CSV com dados de vendas para diferentes regiões, produtos e meses. Você irá analisar esses dados para obter insights.
Ler Dados
# Leia dados de um arquivo CSV disponível na URL fornecida e armazene-os em um DataFrame chamado sales_df # A função read_csv busca os dados e os estrutura em um formato adequado para análise vendas_df = pd.read_csv('https://infinitepy.s3.amazonaws.com/samples/dados_vendas.csv')
Inspecionar Dados
# 'head()' é um método embutido no DataFrame do pandas que retorna as primeiras n linhas. # Por padrão, ele retorna as primeiras 5 linhas. Você pode especificar um número diferente como argumento, como 'head(10)' para as primeiras 10 linhas. vendas_df.head() # O método .info() é chamado em 'vendas_df', usado para obter um resumo conciso do DataFrame # A saída incluirá: # - O tipo de classe do DataFrame # - O número de entradas não-nulas em cada coluna # - Os nomes das colunas e seus tipos de dados (dtype) # - Uso de memória do DataFrame # Este método é muito útil para obter uma visão geral rápida dos seus dados, # o que pode ajudar a entender sua estrutura e identificar quaisquer problemas potenciais de dados. vendas_df.info()
Limpar Dados: Remover duplicatas e preencha valores ausentes:
# Remova linhas duplicadas do DataFrame 'vendas_df' no local. # Isso significa que quaisquer linhas duplicadas serão removidas diretamente do objeto 'vendas_df', # e nenhuma cópia do DataFrame será criada. vendas_df.drop_duplicates(inplace=True) # Preencha quaisquer valores ausentes (NaN) no DataFrame 'vendas_df' com 0. # O parâmetro 'inplace=True' significa que o DataFrame será modificado diretamente, # sem criar uma cópia. vendas_df.fillna(0, inplace=True)
Analisar Dados: Calcular vendas totais por região:
# Use groupby() para agrupar os dados pela coluna 'Região' # Em seguida, encadeie .sum() para calcular as vendas totais para cada região total_vendas_por_regiao = vendas_df.groupby('Região')['Vendas'].sum() # Imprima o resultado que mostra as vendas totais por região print(total_vendas_por_regiao)
Analisar Dados: Encontrar os 5 principais produtos por vendas:
# Agrupe os dados de vendas pelo 'Produto' e some as 'Vendas' para cada produto. vendas_por_produtos_df = vendas_df.groupby('Produto')['Vendas'].sum() # Ordene as vendas somadas em ordem decrescente para obter os produtos mais vendidos no topo. vendas_ordenadas_por_produtos_mais_vendidos_df = vendas_por_produtos_df.sort_values(ascending=False) # Selecione os 5 principais produtos com as maiores vendas. cinco_produtos_com_mais_vendas_df = vendas_ordenadas_por_produtos_mais_vendidos_df.head(5) # Imprima o resultado para ver os nomes e as vendas dos 5 principais produtos. print(cinco_produtos_com_mais_vendas_df)
Salvar Resultados: Salvar dados limpos e resultados da análise:
# Exporte o DataFrame de vendas limpas para um arquivo CSV # 'index=False' especifica para não escrever o índice da linha no arquivo. vendas_df.to_csv('vendas_limpas.csv', index=False) # Exporte o DataFrame de vendas totais por região para um arquivo CSV total_vendas_por_regiao.to_csv('total_vendas_por_região.csv') # Exporte o DataFrame dos 5 principais produtos por vendas para um arquivo CSV cinco_produtos_com_mais_vendas_df.to_csv('5_productos_mais_vendidos.csv')
Conclusão
Quer você esteja aspirando a se tornar um cientista de dados ou apenas procurando utilizar dados de forma mais eficaz em sua função atual, dominar as capacidades de dados do Python será inegavelmente um divisor de águas.
Desde a leitura e escrita de arquivos básicos com a função open()
do Python até o aproveitamento da poderosa biblioteca Pandas para manipulações de dados complexas, cobrimos uma série de técnicas para trabalhar com dados em Python. Independentemente do seu nível de habilidade, esses métodos formam a base para lidar e analisar dados de forma eficaz em Python.
Sinta-se à vontade para responder a este boletim informativo com qualquer dúvida ou tópicos que você gostaria que abordássemos no futuro.
Se você gostou deste boletim, não se esqueça de se inscrever para receber atualizações regulares. Compartilhe com seus amigos e colegas interessados em Python e vamos crescer juntos em nossa comunidade de programadores!
Lembre-se, a chave para a maestria é a prática e a persistência. Feliz codificação! Até a próxima edição, continue programando! 👨💻
Espero que isso ajude! Se você tiver mais alguma dúvida ou precisar de ajuda em qualquer outra coisa, sinta-se à vontade para perguntar.
InfinitePy Newsletter - Sua fonte de aprendizado e inspiração Python.