![]() |
Photo by Hello I'm Nik 🎞 on Unsplash |
Um dos formatos mais comum, para a transferência de dados pela internet, é o JavaScrip Object Notation - JSON. Você pode estar pensando que esse formato de transferência de dados só poderia ser utilizado na linguagem de JavaScript, muito provável mente pelo nome JavaScrip, mas isso não é verdade. Muitas outras linguagens de programação fazem uso desse formato de transferência de dados, entre elas o python. O python já vem com um módulo para decodificar e codificar dados no formato JSON.
>>> import pandas as pd >>> import json >>> dados = '{"nome":["Diana", "Fabiana", "Eveline"], "aniversario":[1998, 1991, 1995]}' >>> pessoas = json.loads(dados) >>> encoded = json.dumps(pessoas) >>> encoded '{"nome": ["Diana", "Fabiana", "Eveline"], "aniversario": [1998, 1991, 1995]}'
Trabalhando com JSON e pandas
Para o nosso primeiro exemplo vamos ler os dados no formato JSON e criar um dataframe pandas com esses dados. Você pode notar muita semelhança com o tipo de dados dicionário do python.
>>> pessoas = pd.read_json(encoded) >>> pessoas nome aniversario 0 Diana 1998 1 Fabiana 1991 2 Eveline 1995
Quando trabalhamos com dados JSON precisamos ter a certeza que esses dados estão no formato certo para que a biblioteca pandas possa carregá-lo corretamente. A biblioteca pandas tem suporte aos dados JSON nas seguintes orientações:
- columns - (padrão) um mapeamento de nomes de colunas para uma lista de valores nas colunas.
- records - uma lista de linhas. Cada linha é um dicionário que mapeia uma coluna para um valor.
- split - Um mapeamento de columns para nomes de colunas, index para valores de índice e dados para uma lista de cada linha de dados (cada linha também é uma lista).
- index - Um mapeamento do valor do index para uma linha. Uma linha é um dicionário que mapeia uma coluna para um valor.
- values - uma lista de cada linha de dados (cada linha também é uma lista). Não inclui valores de coluna ou índice.
- table - Um mapeamento de schema para o esquema DataFrame e dados para uma lista de dicionários.
Veja exemplos com diferentes orientações:
>>> records = pessoas.to_json(orient='records') >>> records '[{"nome":"Diana","aniversario":1998},{"nome":"Fabiana","aniversario":1991},{"nome":"Eveline","aniversario":1995}]' >>> pd.read_json(records, orient='records') nome aniversario 0 Diana 1998 1 Fabiana 1991 2 Eveline 1995 >>> split = pessoas.to_json(orient='split') >>> split '{"columns":["nome","aniversario"],"index":[0,1,2],"data":[["Diana",1998],["Fabiana",1991],["Eveline",1995]]}' >>> pd.read_json(split, orient='split') nome aniversario 0 Diana 1998 1 Fabiana 1991 2 Eveline 1995
O método loads()
retorna um dicionário, por isso podemos ler os dados de apenas uma colunas.
>>> pessoas = json.loads(dados) >>> type(pessoas) <class 'dict'> >>> pessoas['nome'] ['Diana', 'Fabiana', 'Eveline']
Em algumas situações, pode ser mais fácil trabalhar com dicionários do que com JSON.
Referência:
Módulo JSON
Método read_json()
Método to_json()
0 comentários:
Postar um comentário