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.

Top comments (0)