Pandas: Leitura de Dados Externos

PandasBeginner
Pratique Agora

Introdução

Na análise de dados, o primeiro passo é frequentemente carregar seus dados em um formato estruturado. Pandas, uma poderosa biblioteca Python, se destaca nessa tarefa. A função mais comum para ler dados de arquivos planos como CSVs é pandas.read_csv(). Esta função é incrivelmente flexível, oferecendo uma ampla gama de parâmetros para lidar com diferentes formatos de arquivo e problemas potenciais.

Neste laboratório, você aprenderá a usar pd.read_csv() para importar dados de um arquivo CSV para um Pandas DataFrame. Cobriremos como lidar com comentários, especificar cabeçalhos, gerenciar valores ausentes e realizar inspeções iniciais dos dados carregados.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 95%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Ler arquivo CSV usando read_csv

Nesta etapa, você aprenderá o uso básico da função pd.read_csv() para carregar dados de um arquivo CSV em um Pandas DataFrame.

Nosso diretório de projeto, ~/project, contém um arquivo chamado data.csv. Vamos examinar seu conteúdo. Ele inclui algumas linhas de comentário no início, que começam com o símbolo #. A função read_csv pode ser instruída a ignorar essas linhas usando o parâmetro comment.

Primeiro, abra o arquivo main.py no explorador de arquivos à esquerda. Escreveremos nosso código Python neste arquivo.

Adicione o seguinte código a main.py para importar o Pandas e ler o arquivo data.csv. Atribuiremos o DataFrame resultante a uma variável chamada df e, em seguida, a imprimiremos.

import pandas as pd

## Read the CSV file, treating lines starting with '#' as comments
df = pd.read_csv('data.csv', comment='#')

## Print the DataFrame
print(df)

Agora, para executar o script, abra um terminal no WebIDE (você pode usar o menu Terminal > New Terminal) e execute o seguinte comando:

python3 main.py

Você deverá ver a seguinte saída, que mostra o conteúdo do arquivo CSV carregado em um DataFrame estruturado.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          NaN
4   5      Eve           22        Paris

Especificar linha de cabeçalho em read_csv

Nesta etapa, exploraremos o parâmetro header da função read_csv.

Por padrão, read_csv assume que a primeira linha não comentada e não ignorada em seu arquivo é a linha de cabeçalho contendo os nomes das colunas. Em nosso arquivo data.csv, após ignorar as linhas de comentário, a linha id,name,age,city é corretamente inferida como o cabeçalho.

O parâmetro header permite que você especifique explicitamente qual linha usar como cabeçalho. Ele recebe um inteiro representando o índice da linha (começando em 0). Como a primeira linha de dados (após os comentários) é o nosso cabeçalho, seu índice é 0.

Vamos modificar o arquivo main.py para definir explicitamente header=0. Embora este seja o comportamento padrão em nosso caso, ser explícito pode prevenir erros com arquivos formatados de forma incomum.

Atualize seu main.py com o seguinte código:

import pandas as pd

## Explicitly specify that the first row (index 0) after comments is the header
df = pd.read_csv('data.csv', comment='#', header=0)

print(df)

Execute o script novamente a partir do terminal:

python3 main.py

A saída será idêntica à etapa anterior, pois apenas confirmamos o comportamento padrão. Esta prática é útil para clareza e robustez do código.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          N/A
4   5      Eve           22        Paris

Tratar valores ausentes com o parâmetro na_values

Nesta etapa, você aprenderá como lidar com representações personalizadas de dados ausentes.

Se você olhar para o DataFrame da etapa anterior, verá os valores "Not Available" na coluna age e NaN na coluna city. O Pandas reconhece automaticamente alguns indicadores comuns de valores ausentes, como strings vazias, NA ou N/A, mas não os personalizados como "Not Available". Podemos usar o parâmetro na_values para fornecer uma lista de strings que devem ser interpretadas como NaN (Not a Number), que é o marcador padrão do Pandas para dados ausentes.

Modifique seu main.py para incluir o parâmetro na_values.

import pandas as pd

## Define a list of strings to be treated as missing values
missing_values = ["Not Available", "N/A"]

## Read the CSV, specifying the custom missing values
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

print(df)

Agora, execute o script:

python3 main.py

Observe a nova saída. A string "Not Available" foi substituída por NaN.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London
3   4    David  35.0          NaN
4   5      Eve  22.0        Paris

Observe que o tipo de dado da coluna age também mudou para float64 para acomodar o valor NaN.

Exibir as primeiras linhas usando o método head

Nesta etapa, aprenderemos como inspecionar as primeiras linhas de um DataFrame.

Ao trabalhar com grandes conjuntos de dados, imprimir o DataFrame inteiro é ineficiente e pode poluir sua tela. O método .head() é uma maneira conveniente de obter uma prévia rápida de seus dados. Por padrão, ele retorna as primeiras 5 linhas.

Você também pode passar um inteiro para .head() para especificar o número de linhas que deseja ver. Vamos exibir apenas as primeiras 3 linhas do nosso DataFrame.

Atualize seu arquivo main.py da seguinte forma. Em vez de imprimir o DataFrame inteiro, agora imprimiremos apenas seu cabeçalho (head).

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Display the first 3 rows of the DataFrame
print(df.head(3))

Execute o script a partir do seu terminal:

python3 main.py

A saída agora será muito mais curta, mostrando apenas o cabeçalho e os três primeiros registros.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London

Verificar a forma do DataFrame usando o atributo shape

Nesta etapa, você aprenderá como verificar as dimensões do seu DataFrame.

Saber o número de linhas e colunas é uma verificação fundamental na análise de dados. DataFrames do Pandas possuem um atributo .shape que retorna uma tupla contendo o número de linhas e colunas.

Note que .shape é um atributo, não um método, portanto você não usa parênteses () ao acessá-lo.

Vamos modificar main.py para imprimir a forma (shape) do nosso DataFrame.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Get the dimensions (rows, columns) of the DataFrame
df_shape = df.shape

print(df_shape)

Execute o script mais uma vez:

python3 main.py

A saída será uma tupla indicando que nosso DataFrame tem 5 linhas e 4 colunas.

(5, 4)

Resumo

Parabéns por completar este laboratório! Você aprendeu as habilidades essenciais para ler e inspecionar dados usando Pandas.

Neste laboratório, você dominou:

  • Ler um arquivo CSV em um DataFrame usando pd.read_csv().
  • Ignorar linhas de comentários com o parâmetro comment.
  • Definir explicitamente a linha de cabeçalho com o parâmetro header.
  • Lidar com valores ausentes personalizados usando o parâmetro na_values.
  • Visualizar um DataFrame com o método .head().
  • Verificar as dimensões de um DataFrame com o atributo .shape.

Estas são operações fundamentais que formam o ponto de partida para quase todas as tarefas de análise de dados. Com essas habilidades, você está agora mais preparado para lidar com uma variedade de desafios de importação de dados.