Trabalhar com JSON e DataFrame do Pandas é comum em análise de dados, relatórios e pipelines de ETL. Embora o Pandas forneça readjson
para análise básica, ele pode ter dificuldades com estruturas profundamente aninhadas, arquivos muito grandes ou fluxos de trabalho focados no Excel. É aqui que o Aspose.Cells for Python ajuda. Ele oferece um rico pipeline de JSON para Excel, que você pode facilmente integrar com o Pandas para obter DataFrames limpos para análise. Neste post do blog, você aprenderá como converter JSON em dataframes do Pandas no Python.
Biblioteca Python para Converter JSON em DataFrame do Pandas
Aspose.Cells for Python via .NET é uma poderosa API de planilhas que não requer o Microsoft Excel. Além da automação clássica do Excel, ela suporta importação e exportação direta de JSON, tornando-a ideal quando você deseja converter JSON em um DataFrame do Pandas e depois salvá-lo ou processá-lo no Excel.
Com Aspose.Cells, você pode:
- Importar JSON em planilhas usando
JsonUtility
, com opções para lidar com arrays e estruturas aninhadas. - Converter intervalos de planilhas em DataFrames do Pandas para análise e visualização.
- Crie, carregue e manipule JSON dentro de arquivos do Excel, que se encaixa em pipelines de análise.
- Exportar DataFrames de volta para Excel (XLSX, CSV, ODS, PDF) para relatórios.
Em resumo, a biblioteca facilita a movimentação de dados do JSON para o Excel para relatórios, enquanto você usa o Pandas para análises mais profundas. O JsonUtility
importa JSON para uma planilha, e o JsonLayoutOptions
controla como arrays e objetos aninhados se expandem.
Conversão de JSON para DataFrame
Aspose.Cells importa JSON diretamente em uma planilha. Você então lê a linha de cabeçalho e as linhas de dados para construir um DataFrame do Pandas.
Siga os passos abaixo para converter JSON em um DataFrame do pandas:
- Crie uma pasta de trabalho e obtenha a primeira planilha.
- Configure
JsonLayoutOptions
para tratar arrays como tabelas. - Import the JSON string at row
0
, column0
. - Utilize a primeira linha como cabeçalhos de coluna.
- Extrair linhas restantes como dados.
- Construir um DataFrame do Pandas.
O seguinte exemplo de código mostra como converter JSON em um DataFrame do pandas em Python:
import pandas as pd
import aspose.cells as ac
# Crie uma nova pasta de trabalho e obtenha a primeira planilha (índice baseado em 0)
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Configure como o JSON deve ser disposto na planilha
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# Exemplo de array JSON de objetos simples
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# Importar JSON para a planilha começando na linha=0, coluna=0 (célula A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# Localize a primeira linha que contém dados (esta será nossa linha de cabeçalho)
header_idx = ws.cells.min_data_row
# Extraia os valores do cabeçalho dessa linha para usar como nomes das colunas do DataFrame.
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# Extraia todas as linhas subsequentes como dados (ignore a linha do cabeçalho)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# Construir o DataFrame usando os cabeçalhos e linhas coletados
df = pd.DataFrame(data, columns=columns)
# Display the result
print(df)
Output
id name
0 1.0 Alice
1 2.0 Bob
Converter JSON aninhado em um DataFrame do Pandas
Se o seu JSON contiver objetos aninhados, o Aspose.Cells importa JSON em uma planilha usando JsonUtility, que você pode então exportar para um DataFrame. As JsonLayoutOptions controlam como arrays e objetos aninhados são expandidos.
Siga os passos abaixo para converter JSON aninhado em um DataFrame do pandas:
- Crie uma pasta de trabalho e selecione a primeira planilha.
- Defina as propriedades
JsonLayoutOptions
necessárias, comoarrayastable=True
,ignorearraytitle=True
,ignoreobjecttitle=True
ekeptschema=True
. - Importe o JSON aninhado na linha
0
, coluna0
. - Detectar o intervalo utilizado e ler a linha de cabeçalho ao longo de toda a extensão.
- Leia todas as linhas subsequentes ao longo da mesma extensão (largura fixa).
- Construa o DataFrame; opcionalmente altere os tipos de dados (por exemplo,
total
para numérico).
O seguinte exemplo de código mostra como converter JSON aninhado em um DataFrame do pandas em Python:
import pandas as pd
import aspose.cells as ac
# Criar Pasta de Trabalho e obter primeira planilha
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Opções de layout para JSON aninhado
opt = ac.utility.JsonLayoutOptions()
opt.array_as_table = True # Treat 'orders' array as a table (rows)
opt.ignore_array_title = True # Do not place a title row for the 'orders' array
opt.ignore_object_title = True # Do not place extra title rows for nested objects (e.g., 'buyer')
opt.kept_schema = True # Keep a stable set of columns even if some records miss fields
# Passo 3: Seu JSON aninhado
nested = '''
{
"batch": "A1",
"orders": [
{"orderId": "1001", "total": "49.90", "buyer": {"city": "NYC", "zip": "10001"}},
{"orderId": "1002", "total": "79.00", "buyer": {"city": "Boston", "zip": "02108"}}
]
}
'''
# Importar em A1 (linha=0, col=0) usando as opções acima
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# Detect used range
first_row = ws.cells.min_data_row
first_col = ws.cells.min_data_column
last_row = ws.cells.max_data_row
last_col = ws.cells.max_data_column
# Leia a linha do cabeçalho ao longo da plena extensão da coluna utilizada (largura fixa)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# Torne os cabeçalhos seguros: substitua None/vazio por \"Coluna{n}\" e converta para str
columns = [
(str(v) if v is not None and str(v).strip() != "" else f"Column{idx + 1}")
for idx, v in enumerate(raw_columns)
]
# Leia as linhas de dados em toda a mesma extensão (a largura fixa garante o alinhamento)
data = []
for r in range(first_row + 1, last_row + 1):
row_vals = [ws.cells.get(r, c).value for c in range(first_col, last_col + 1)]
data.append(row_vals)
# Construir DataFrame
df = pd.DataFrame(data, columns=columns)
# Opcional: organize os nomes das colunas (por exemplo, substituir espaços)
df.columns = [str(c).strip() for c in df.columns]
# Optional typing:
# - Mantenha os ZIPs como strings (os zeros à esquerda importam)
# - Converter totais para numéricos (forçar não numéricos para NaN)
for col in list(df.columns):
if col.lower().endswith("total"):
df[col] = pd.to_numeric(df[col], errors="coerce")
# Print
print(df)
Output
A1 1001 49.90 NYC 10001
0 None 1002 79.00 Boston 02108
Nota: Se você habilitar
convertnumericordate=True
, strings com aparência numérica (por exemplo, totais) podem ser convertidas em números, mas códigos postais como\"02108\"
podem perder zeros à esquerda. Mantenha comoFalse
se precisar que os códigos postais sejam strings.
Converter Excel para DataFrame do Pandas via JSON
Exporte qualquer intervalo do Excel para JSON com Aspose.Cells, e depois carregue esse JSON no Pandas como um DataFrame. Isso é útil quando você precisa de uma transferência de JSON estruturada para serviços ou pipelines.
Siga os passos abaixo para converter Excel em um DataFrame do pandas via JSON:
- Crie uma nova pasta de trabalho, obtenha a primeira planilha e adicione valores de amostra.
- Criar
JsonSaveOptions
com padrões. - Exporte o intervalo utilizado para uma string JSON com o método
exportrangetojson()
. - Leia a string JSON em um DataFrame usando o método
pd.readjson(io.StringIO(jsontext))
. - Inspecione ou processe o DataFrame conforme necessário.
O seguinte exemplo de código mostra como converter Excel em um DataFrame do pandas via JSON em Python:
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# Crie uma nova pasta de trabalho e acesse a primeira planilha.
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# Obtenha as células da planilha
cells = worksheet.cells
# Populate a small table (headers + rows)
cells.get("A1").value = "Name"
cells.get("B1").value = "Age"
cells.get("C1").value = "City"
cells.get("A2").value = "Alice"
cells.get("B2").value = 25
cells.get("C2").value = "New York"
cells.get("A3").value = "Bob"
cells.get("B3").value = 30
cells.get("C3").value = "San Francisco"
cells.get("A4").value = "Charlie"
cells.get("B4").value = 35
cells.get("C4").value = "Los Angeles"
# Configurar opções de salvamento JSON (os padrões estão bem para uma tabela simples)
json_save_options = JsonSaveOptions()
# Exportar o intervalo utilizado para uma string JSON
# maxdisplayrange pega toda a região retangular que contém os dados
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# Leia a string JSON em um DataFrame do Pandas
# Os Pandas podem analisar uma string JSON diretamente
df = pd.read_json(io.StringIO(json_text))
# Use o DataFrame
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
Obtenha uma Licença Gratuita
Avalie o Aspose.Cells for Python via .NET sem limites de recursos aplicando uma licença temporária gratuita. Visite a página de licença temporária para desbloquear toda a funcionalidade, incluindo importação JSON (JsonUtility
), controle de layout (JsonLayoutOptions
), preservação de esquema e conversão numérica/data.
Recursos Adicionais Gratuitos
Você pode usar os recursos abaixo para se aprofundar na importação de JSON, opções de layout e outras manipulações do Excel com Aspose.Cells for Python.
Conclusão
Converter JSON em DataFrames do Pandas se torna simples com Aspose.Cells for Python. Você obtém um manuseio confiável para estruturas aninhadas, opções para estabilidade de esquema e um caminho fácil para exportação para Excel quando necessário. Combine a flexibilidade do Pandas com o pipeline JSON/Excel no Aspose.Cells para simplificar o processamento de dados e desbloquear análises poderosas em Python.
Se você tiver perguntas, visite nosso free support forum.Estamos felizes em ajudar você.