DEV Community

Victor Vilela
Victor Vilela

Posted on

Criação de Dataframes com Pandas

Antes de iniciar qualquer outra etapa em um projeto de dados, é necessário realizar primeiro o carregamento da base para o ambiente que estamos trabalhando. Portanto, neste artigo iremos destacar os principais métodos de importação da base com o pandas.

A sintaxe de leitura de arquivos no pandas é bastante intuitivo, sendo que o início de suas funções começam com "read_" e o complemento virá da extensão do arquivo a ser carregado.

CSV (comma separated values)

O arquivo ".csv" é um dos formatos mais comuns que se encontra na internet, para realizar essa importação, basta utilizar a função "read_csv", passar o caminho do arquivo e, para o contexto brasileiro, necessitamos nos atentar a 3 parâmetros em particular:

  • sep: O tipo de separador de colunas -> default = "," (apesar do padrão ser a vírgula, podemos encontrar outros tipos de separadores, como ";" ou "|" etc.)
  • decimal: O tipo de separador de casas decimais -> default = "." (nos EUA o padrão ".", enquanto no Brasil é a ",")
  • encoding: Codificação de caracteres (cada país possui uma lista de caracteres que podem não existir em outros países, como o "ç" que não existe na língua inglesa)
pd.read_csv(
    "https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/latest/owid-covid-latest.csv",
    decimal=",",
    encoding="utf-8"
)
Enter fullscreen mode Exit fullscreen mode

Excel

Outra forma de importarmos uma base é quando se encontra no formato de arquivos excel ".xlsx", nesse caso iremos usar a função "read_excel" do pandas.
Para esse tipo de formato, também devemos nos atentar aos seguintes parâmetros:

  • decimal: O tipo de separador de casas decimais -> default = "."- skiprows: Quantidade de linhas que devemos pular no arquivo excel (pode acontecer de as colunas iniciarem a partir da 5 linha no excel, nesse caso iremos configurar skiprows=4)
  • sheet_name: Especificar o nome de qual sheet o pandas deverá ler (em caso de mais de um sheet no arquivo excel)
pd.read_excel(
    "https://github.com/FBosler/Medium-Data-Extraction/blob/master/invoices.xlsx?raw=true",
    skiprows=2,
    sheet_name="Sheet 2"
)
Enter fullscreen mode Exit fullscreen mode

Parquet

Este formato é comum de ser visto em cenários de Big Data, pois é uma extensão que consegue reduzir drásticamente o tamanho do arquivo original para que seja viável de se manipular no pandas.
Podemos acessar subdivisões da base original através de um filtro, por exemplo:

pd.read_parquet("file.parquet", filters=[("ANO", "=", 2020)])
Enter fullscreen mode Exit fullscreen mode

Não irei aprofundar, pois em outro post irei trazer mais detalhes deste tipo de extensão.

ZIP

É bastante comum os arquivos originais estarem em pastas compactadas em formato ".zip" ou alguma outra extensão, nesse caso devemos utilizar outra biblioteca chamada ZipFile que irá nos ajudar a descompactar para poder aplicar os métodos do pandas para carregamento da base.

with zipfile.ZipFile(f"data/file.zip") as z:
    df = pd.read_csv(
        z.open("file.csv"),
        sep="|",
        encoding="latin-1",
        decimal="."
)
Enter fullscreen mode Exit fullscreen mode

Outro caso comum é de acessar arquivos zipados diretamente da web sem precisar estar armazenado no seu HD, porém o pandas não vai conseguir lê-lo diretamente, para realizar essa importação, devemos utilizar mais 4 bibliotecas, sendo elas:

  • request: Realiza a requisição de conteúdos diretamente na web
  • io: Permite criar buffers para armazenar dados temporariamente na memória antes de serem escritos em um arquivo ou outra fonte de saída.
  • ZipFile: Realizar a descompactação do arquivo.
  • pandas: Para realizar o carregamento da base.
resposta = requests.get("https://download.inep.gov.br/dados_abertos/microdados_censo_escolar_2022.zip")
buffer = BytesIO(initial_bytes=resposta.content)
with zipfile.ZipFile(buffer) as z:
    df = pd.read_csv(
         z.open("/Microdados do Censo Escolar da Educação Básica 2022/dados/microdados_ed_basica_2022.csv"),
         sep="|", 
         encoding="latin-1",
         decimal=",")
Enter fullscreen mode Exit fullscreen mode

Diretamente no pandas

Por fim, porém não menos importante, podemos criar dataframes diretamente do pandas, para isso podemos passar:

  • data: Os dados que irão compor o dataframe
  • columns: Os nomes das colunas
  • index: Se for preciso personalizar o índice do dataframe
pd.DataFrame(
    data=np.random.randint(low=0, high=10, size=(5, 5)),
    columns=["Matemática", "Português", "História", "Geografia", "Física"],
    index=["Pedro", "Maria", "João", "Mateus", "Lucas"]
)
Enter fullscreen mode Exit fullscreen mode

Esses são os principais métodos que iremos encontrar no dia a dia ao carregar uma base para analisar, porém lembre-se de consultar a documentação do pandas sempre que estiver com dúvidas de alguma função.

O mais importante, a prática irá te levar a experiência com os diversos tipos de importação e seus respectivos métodos.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more