Blog

Postado em em 25 de março de 2024

7 Maneiras de Criar DataFrames com Pandas

Aprenda 7 maneiras de criar DataFrames com Pandas no Python e não tenha mais problemas na hora de gerar seus DataFrames.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

7 Maneiras de Criar DataFrames com Pandas

Na aula de hoje, quero te mostrar 7 maneiras de criar DataFrames com Pandas no Python, para que você não tenha mais problemas na hora de gerar seus DataFrames ou precise ficar passando de um formato para o outro.

Veremos como criar DataFrames a partir de um arquivo, uma planilha, da área de transferência, de um dicionário e ainda como fazer a combinação de DataFrames de 3 formas diferentes.

Vou te ensinar a juntar linhas e colunas usando o merge para unir informações específicas e muito mais.

Já conhece alguma dessas formas de criar DataFrames? Quer aprender novas maneiras de criar DataFrames com Pandas? Então vem comigo que eu vou te mostrar!

Instalação e Importação do Pandas

No material disponível para download, você encontrará o arquivo do Jupyter Notebook utilizado nesta aula, além das bases de dados utilizadas. É importante que você faça o download para acompanhar todas as etapas.

Para começar a trabalhar com o Pandas, é importante que você o tenha instalado no seu ambiente Python. Para instalá-lo, basta executar o seguinte comando no terminal do seu editor de códigos:

pip install Pandas

Ou no Jupyter Notebook, execute o seguinte código em uma das células:

!pip install pandas

Feita a instalação, basta importar o Pandas com o alias pd:

import pandas as pd

Com isso, o Pandas estará pronto para ser utilizado.

Criando DataFrame a partir de um Arquivo

A primeira forma que quero apresentar para vocês é a criação do DataFrame a partir de um arquivo presente no computador.

O arquivo que vamos utilizar é uma base de dados sobre cereais disponíveis no mercado americano. Eu obtive essa base através do site Kaggle, que possui diversas bases de dados gratuitas para download.

Esse arquivo vem no formato CSV (Comma-Separated Values), que é uma forma comum de armazenar dados tabulares, e pode ser lido pelo Pandas através da função pd.read_csv() passando o nome do arquivo como argumento.

df_csv = pd.read_csv("cereal.csv")

É importante ressaltar que só é possível utilizar apenas o nome do arquivo porque ele está na mesma pasta que o arquivo do meu código. Caso ele estivesse em outra pasta, seria necessário passar o caminho completo.

Armazenamos esse DataFrame gerado dentro da variável df_csv, e para ter certeza de que ele foi gerado corretamente, podemos utilizar o método head(), que exibe as cinco primeiras linhas presentes nele.

df_csv = pd.read_csv("cereal.csv")

df_csv.head()

Head Pandas

Também podemos verificar as cinco últimas linhas utilizando o método tail().

df_csv.tail()

Tail Pandas

O que é um arquivo CSV?

É muito comum, ao trabalharmos com bases de dados, encontrarmos arquivos CSV (Comma-Separated Values).

O CSV significa “valores separados por vírgula“. Basicamente, são arquivos de texto onde cada linha representa a entrada de um valor, e esses valores são separados por um caractere delimitador, geralmente uma vírgula.

Quando passamos esse arquivo para o Pandas, ele consegue interpretar essas vírgulas como delimitadores e organizar as informações em linhas e colunas corretamente.

Criando DataFrame a partir de uma Planilha

Outra maneira semelhante à importação via CSV é através de planilhas Excel (formato XLSX). Mas, ao invés de utilizarmos a função pd.read_csv(), iremos utilizar a pd.read_excel().

df_excel = pd.read_excel("cereal.xlsx")

Executando o método head(), podemos verificar que nosso DataFrame foi criado corretamente.

df_excel.head()

Abrindo arquivo XLSX

Funções de Leitura do Pandas

É muito comum encontrarmos arquivos em CSV ou XLSX ao trabalharmos com o Pandas, porém ele possui diversas funções de leitura além dessas.

Caso você queira visualizar todas as funções disponíveis, além de consultar a documentação, você pode digitar dentro da célula no Jupyter Notebook o comando pd.read_ e em seguida apertar a tecla Tab.

Isso exibirá uma lista das funções de leitura disponíveis para o Pandas.

lista das funções de leitura disponíveis para o Pandas

Algumas são menos comuns de serem utilizadas, mas temos muitas opções que você pode acabar encontrando como HTML, JSON e SQL.

Criando DataFrame a partir da Área de Transferência

Repare que uma das funções de leitura do Pandas é a clipboard, isso significa que outra maneira de você criar um DataFrame no Pandas é através da área de transferência do seu computador.

Quando você dá Ctrl + C em alguma informação no seu computador, essa informação fica armazenada na área de transferência.

Utilizando a função read_clipboard(), é possível gerar um DataFrame a partir dos dados presentes na área de transferência.

Para exemplificarmos esse processo, vamos abrir o arquivo Excel com a nossa base de dados e vamos copiar um conjunto de células dele com Ctrl + C.

Planilha Excel

Feito isso, dentro do notebook podemos criar o nosso DataFrame a partir da função read_clipboard(). E para essa função não precisamos passar nenhum argumento.

df_transferencia = pd.read_clipboard()

df_transferencia

Gerado a partir da área de transferência

Isso pode ser interessante quando você está trabalhando com algum arquivo Excel muito extenso e você só quer ter uma ideia de como ficaria a análise feita com Pandas. Então, ao invés de precisar importar todo o arquivo, você pode importar apenas uma parte.

Criando DataFrame a partir de Dicionários Python

Outra forma bastante eficaz de criar DataFrames é através de dicionários Python. Você define qual é seu dicionário primeiro e em seguida pode passar esse dicionário para a classe DataFrame do Pandas.

funcionarios = {
    'Nome': ['João Silva', 'Maria Souza', 'José Ramos', 'Pedro Ferreira'],
    'Idade': [35, 40, 54, 39],
    'Tempo de Empresa': [3, 10, 15, 7],
}

df_dicionario = pd.DataFrame(funcionarios)

Ao passar seu dicionário para essa classe, ele será rapidamente estruturado no formato de um DataFrame.

df_dicionario

DataFrame a partir do dicionário

Essa abordagem pode ser útil para demonstrar visualmente como ficaria a estrutura de dados em um DataFrame ou realizar análises preliminares antes de trabalhar com conjuntos maiores de dados.

Combinando DataFrames – Combinação de Linhas de Diferentes DataFrames

A partir de agora, iremos começar a trabalhar com mais de um DataFrame. É comum, conforme os projetos avançam, termos diversas fontes distintas de dados. E por isso, é muito importante saber combinar essas informações.

Um primeiro exemplo que vamos ver é quando queremos juntar dois DataFrames de forma sequencial. Ou seja, quando queremos que as linhas de um, virem as linhas do outro.

Para visualizarmos essa combinação, vamos continuar utilizando o DataFrame gerado pelo exemplo anterior, e criaremos um novo a partir de um outro dicionário.

mais_funcionarios = {
    'Nome': ['Paula Lima', 'Marta Nunes'],
    'Idade': [28, 45],
    'Tempo de Empresa': [5, 12],
}

df_mais_funcionarios = pd.DataFrame(mais_funcionarios)

df_mais_funcionarios

Segundo dataframe de funcionários

Observe que ambos os DataFrames possuem a mesma estrutura, com as mesmas colunas e tipos de dados.

Para juntar esses dois DataFrames em um único, utilizaremos o método concat do Pandas, passando uma lista com os DataFrames desejados.

df_funcionarios = pd.concat([df_dicionario, df_mais_funcionarios])

df_funcionarios

Dataframe unido pelas linhas

Repare que, apesar de unir os dois em um único DataFrame, o índice numérico ficou desorganizado.

Para mantermos a contagem numérica do índice sequencial, podemos passar o parâmetro ignore_index=True para o método concat. Assim, a contagem numérica será reiniciada sequencialmente quando o DataFrame for gerado.

# resetando o index
df_funcionarios = pd.concat([df_dicionario, df_mais_funcionarios], ignore_index=True)

df_funcionarios

Isso é importante para evitar repetições no índice e nos permitir selecionar os dados corretamente.

Combinando DataFrames – Combinação de Colunas de Diferentes DataFrames

Além da concatenação por linhas, é possível combinar DataFrames que se complementem pelas colunas presentes neles.

Para demonstrar esse exemplo, vamos utilizar a biblioteca NumPy, uma biblioteca essencial para operações numéricas e pré-requisito do Pandas.

Utilizando o módulo random do NumPy, iremos gerar valores aleatórios para um dicionário e depois converter esse dicionário em um DataFrame.

Primeiro, definiremos os setores da empresa dentro de uma lista. O dicionário que será utilizado para criar o DataFrame terá duas chaves: Setor e Salario.

Para gerar os valores associados ao Setor, iremos utilizar a função np.random.choice, passando para ela a lista de setores e o número 6, que indica a quantidade de vezes que queremos que esses setores sejam escolhidos.

Os salários serão gerados de forma semelhante, mas para eles utilizaremos a função np.random.randint, que gera valores inteiros aleatórios dentro do intervalo determinado.

Precisamos informar o valor inicial e final do intervalo e a quantidade de números que devem ser gerados.

Depois disso, podemos criar nosso DataFrame.

import numpy as np

setores = ['Vendas', 'RH', 'TI']

dados_funcionarios = {
    'Setor': np.random.choice(setores, 6),
    'Salario': np.random.randint(2000, 10000, size=6),
}

df_dados_funcionarios = pd.DataFrame(dados_funcionarios)

df_dados_funcionarios

Combinação de Colunas de Diferentes DataFrames

Repare que como são dados aleatórios, cada vez que você gerar os dados, você terá um DataFrame resultante diferente.

Com esse DataFrame gerado, podemos combiná-lo com o df_funcionarios que geramos anteriormente. Assim, teremos em um único DataFrame as informações de Nome, Idade, Tempo de Empresa, Setor e Salário dos funcionários.

Para realizar a união pelas colunas, utilizaremos a função concat, especificando o eixo das colunas.

df_funcionarios_completo = pd.concat([df_funcionarios, df_dados_funcionarios], axis='columns')

df_funcionarios_completo

Combinação de Colunas de Diferentes DataFrames

Isso só faz sentido caso ambos os DataFrames estejam organizados seguindo a mesma ordem. Ou seja, a primeira linha do segundo DataFrame é correspondente à primeira linha do primeiro.

Juntar DataFrames com Merge

Existe uma outra maneira de juntarmos dois DataFrames no Pandas que é utilizando a função merge().

Vamos ver um exemplo bem parecido com o anterior, porém agora, dentro dos DataFrames teremos uma mesma coluna chamada “id” que será um código de identificação do funcionário.

funcionarios = {
    'id': ['FTI1', 'FVE2', 'FRH1', 'FVE1'],
    'Nome': ['João Silva', 'Maria Souza', 'José Ramos', 'Pedro Ferreira'],
    'Idade': [35, 40, 54, 39],
    'Tempo de Empresa': [3, 10, 15, 7],
}

df_funcionarios = pd.DataFrame(funcionarios)

df_funcionarios

Primeiro DataFrame
dados_funcionarios = {
    'id': ['FVE1', 'FRH1', 'FTI1', 'FVE2'],
    'Setor': ['Vendas', 'RH', 'TI', 'Vendas'],
    'Salario': np.random.randint(2000, 10000, size=4),
}

df_dados_funcionarios = pd.DataFrame(dados_funcionarios)

df_dados_funcionarios

Segundo DataFrame

Os ids são identificadores únicos que estarão presentes em diversas bases de dados. Essa é uma abordagem comum dos bancos de dados para identificar elementos únicos dentro dele, evitando duplicações e garantindo a integridade dos dados.

Podemos comparar o id de uma entrada em uma base de dados com o CPF no Brasil, que é um identificador único para cada cidadão.

Os identificadores são muito úteis quando você deseja unir as informações de dois bancos de dados que estão em ordens diferentes.

Nesse nosso exemplo, o id está sendo utilizado para identificar cada um dos vendedores presentes na empresa.

Se utilizássemos a função concat para unir esses dois DataFrames, teríamos as informações de Setor e Salário atribuídas de forma incorreta aos funcionários, porque a função concat iria considerar a ordem das linhas e não o id.

Para garantir que o setor e o salário estejam corretos para cada um dos funcionários podemos utilizar a função merge().

O merge é preferível ao concat quando não temos certeza sobre a ordem dos dados presentes. Como o merge utiliza um critério específico (identificar único) para unir os DataFrames, isso garante a precisão das informações.

Na prática, você lidará muito mais com o merge do que com o concat. Isso porque as bases de dados dentro das empresas possuem algum identificador único que permita o relacionamento das informações contidas nelas.

O parâmetro que irá receber o nome da coluna que contém o critério específico para essa junção será o parâmetro on.

df_funcionarios_completo = pd.merge(df_funcionarios, df_dados_funcionarios, on='id')

df_funcionarios_completo

DataFrame unido pelo Merge

Perceba que o DataFrame final possui apenas uma coluna “id” e as informações foram atribuídas corretamente.

Conclusão – 7 Maneiras de Criar DataFrames com Pandas

Na aula de hoje, eu te mostrei 7 maneiras de criar DataFrames com Pandas no Python! Vimos como gerar DataFrames a partir de um arquivo, uma planilha, da área de transferência, de um dicionário e ainda como fazer a combinação de DataFrames.

Dessa forma, você conseguirá trabalhar sem problemas com bases de dados de diferentes fontes para gerar os seus DataFrames de forma fácil e rápida.

Hashtag Treinamentos

Para acessar outras publicações de Ciência de Dados, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador