Conversão de Dicionário para DataFrame com Pandas em Python
Published on
Como Cientista de Dados, trabalhar com dados é um dos aspectos fundamentais do trabalho. Uma das estruturas de dados mais comuns usadas em Python para esse propósito é o dicionário. Um dicionário é uma coleção de pares de chave-valor, onde cada chave é única. Pandas é uma biblioteca popular em Python para análise de dados e fornece uma poderosa capacidade para manipulação de dados. Uma das tarefas mais comuns na análise de dados é a conversão de um dicionário em um DataFrame em Pandas. Neste post de blog, discutiremos o processo de conversão de um dicionário para um DataFrame em Pandas.
Quer criar rapidamente visualizações de dados em Python?
PyGWalker é um projeto Python de código aberto que pode ajudar a acelerar o fluxo de trabalho de análise e visualização de dados diretamente em um ambiente baseado em notebooks Jupyter.
PyGWalker (opens in a new tab) transforma seu DataFrame Pandas (ou DataFrame Polars) em uma IU visual onde você pode arrastar e soltar variáveis para criar gráficos com facilidade. Basta usar o seguinte código:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
Você pode executar o PyGWalker agora mesmo com estes notebooks online:
E, não se esqueça de nos dar uma ⭐️ no GitHub!
O que é um Dicionário?
Em Python, um dicionário é uma coleção de pares de chave-valor. Cada chave é única e corresponde a um valor. Dicionários são usados para armazenar e manipular dados que podem ser acessados usando chaves. Os dicionários em Python são definidos usando chaves {}
e podem ser aninhados.
O que é um DataFrame?
Um DataFrame é uma estrutura de dados bidimensional em forma de tabela em Pandas. Ele consiste em linhas e colunas, onde cada coluna pode conter dados de um tipo diferente. Os DataFrames são uma excelente maneira de analisar e manipular dados, e o Pandas fornece uma ampla variedade de funções para manipular dados em um DataFrame.
Convertendo um Dicionário em um DataFrame
Pandas fornece um método simples para converter um dicionário em um DataFrame usando a função pd.DataFrame.from_dict()
. A função from_dict()
recebe um dicionário como entrada e retorna um DataFrame. O comportamento padrão dessa função assume que as chaves no dicionário correspondem aos nomes das colunas e os valores correspondem aos dados das linhas.
Vamos considerar um exemplo em que temos um dicionário contendo informações sobre alunos, suas notas e suas disciplinas:
dados_alunos = {'nome': ['Alice', 'Bob', 'Charlie'], 'nota': [95, 87, 92], 'disciplina': ['Matemática', 'Inglês', 'Ciência']}
Para converter este dicionário em um DataFrame, basta usar a função from_dict()
:
import pandas as pd
df = pd.DataFrame.from_dict(student_data)
print(df)
A saída deste trecho de código será parecida com esta:
name grade subject
0 Alice 95 Math
1 Bob 87 English
2 Charlie 92 Science
Como podemos ver, as chaves do dicionário (nome
, nota
e matéria
) foram usadas como os nomes das colunas no DataFrame resultante, e os valores correspondentes foram usados como dados das linhas.
Usando o parâmetro orient
Em casos em que o dicionário possui uma estrutura diferente, podemos usar o parâmetro orient
para especificar como o DataFrame deve ser criado. O parâmetro orient
aceita vários valores, como índice
, colunas
, dividido
e valores
. O valor padrão é colunas
. Vamos considerar um exemplo em que temos um dicionário contendo listas de comprimentos diferentes:
data = {'nome': ['Alice', 'Bob', 'Charlie'], 'nota': [95, 87], 'matéria': ['Matemática', 'Inglês', 'Ciências']}
Se tentarmos converter este dicionário em um DataFrame usando o comportamento padrão, obteremos um ValueError
:
df = pd.DataFrame.from_dict(data)
ValueError: as listas devem ter o mesmo tamanho
Para evitar este erro, podemos usar o parâmetro orient
com o valor índice
para criar um DataFrame onde as chaves do dicionário se tornam os índices das linhas e os valores correspondentes se tornam os dados das linhas:
df = pd.DataFrame.from_dict(data, orient='index')
print(df)
A saída deste trecho de código será parecida com esta:
0 1 2
nome Alice Bob Charlie
nota 95 87 None
matéria Matemática Inglês Ciências
Usando uma lista de dicionários
Outra maneira de criar um DataFrame a partir de um dicionário é usando uma lista de dicionários. Nesse cenário, cada dicionário na lista corresponderá a uma linha no DataFrame resultante, e as chaves no dicionário corresponderão aos nomes das colunas. Vamos considerar um exemplo em que temos uma lista de dicionários representando alunos e suas notas:
student_data = [{'nome': 'Alice', 'nota': 95, 'matéria': 'Matemática'},
student_data = [{'name': 'Bob', 'grade': 87, 'subject': 'English'},
{'name': 'Charlie', 'grade': 92, 'subject': 'Science'}]
Para converter esta lista de dicionários em um DataFrame, simplesmente usamos a função pd.DataFrame()
:
df = pd.DataFrame(student_data)
print(df)
A saída deste trecho de código será:
name grade subject
0 Alice 95 Math
1 Bob 87 English
2 Charlie 92 Science
Como podemos ver, o DataFrame resultante é o mesmo que o criado a partir do dicionário no exemplo anterior.
Usando as chaves como colunas
Por padrão, a função from_dict()
usa as chaves do dicionário como os nomes das colunas no DataFrame resultante. Em casos em que desejamos usar um conjunto diferente de chaves, podemos usar o parâmetro columns
. Por exemplo, se tivermos um dicionário com chaves a
, b
e c
, mas quisermos usar x
, y
e z
como os nomes das colunas, podemos fazer o seguinte:
data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df = pd.DataFrame.from_dict(data, columns=['x', 'y', 'z'])
print(df)
A saída deste trecho de código será:
x y z
0 1 4 7
1 2 5 8
2 3 6 9
Usando uma orientação detalhada
A função from_dict()
também pode ser usada para criar um DataFrame de um dicionário com uma orientação detalhada. Uma orientação detalhada significa que cada chave do dicionário contém um dicionário com o mesmo conjunto de chaves. Considere o seguinte exemplo:
data = {'a': {'x': 1, 'y': 2, 'z': 3}, 'b': {'x': 4, 'y': 5, 'z': 6}, 'c': {'x': 7, 'y': 8, 'z': 9}}
Para criar um DataFrame a partir deste dicionário com uma orientação detalhada, podemos usar o parâmetro orient
e definir seu valor como index
:
df = pd.DataFrame.from_dict(data, orient='index')
print(df)
A saída deste trecho de código será:
x y z
a 1 2 3
b 4 5 6
c 7 8 9
a 1 2 3 b 4 5 6 c 7 8 9
### Nomes de Índice e Coluna
Ao converter um dicionário em DataFrame, também podemos especificar os nomes de índice e coluna. Vamos considerar o seguinte exemplo:
```python
data = {'name': ['Alice', 'Bob', 'Charlie'], 'grade': [95, 87, 92], 'subject': ['Math', 'English', 'Science']}
df = pd.DataFrame.from_dict(data, orient='columns', columns=['name', 'subject', 'grade'], index=['student1', 'student2', 'student3'])
print(df)
A saída deste trecho de código ficará assim:
name subject grade
student1 Alice Math 95
student2 Bob English 87
student3 Charlie Science 92
Como podemos ver neste exemplo, podemos especificar os nomes de coluna usando o parâmetro columns
e os nomes de índice usando o parâmetro index
.
Conclusão
Neste post do blog, aprendemos como converter facilmente um dicionário em um DataFrame usando a função pd.DataFrame.from_dict()
do Pandas. Também aprendemos como especificar a orientação do dicionário e personalizar os nomes de coluna e índice. A capacidade de converter facilmente dicionários em quadros de dados torna a manipulação de dados em Python mais fácil, permitindo que os cientistas de dados realizem várias tarefas de análise de dados, como manipulação de dados e aprendizado de máquina, que podem ser úteis em sua profissão. As habilidades aprendidas na manipulação de dicionários em quadros de dados também podem ser transferidas para a linguagem R, outra ferramenta popular em ciência de dados e no campo geral de análise e manipulação de dados em Python.