Как прочитать несколько (десятки тысяч) файлов JSON в кадре данных pandas?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как прочитать несколько (десятки тысяч) файлов JSON в кадре данных pandas?

Сообщение Anonymous »

Я новичок в программировании и столкнулся с (вероятно, очень небольшим) препятствием во время работы над проектом. По сути, у меня есть папка, полная отдельных квитанций, преобразованных в файлы .json, и мне нужно выполнить довольно простой анализ данных (т. е. проанализировать общие затраты и общий объем продаж каждого бизнеса, чтобы рассчитать прибыль, простая математика)
Все файлы .json имеют базовый формат с некоторыми различиями в количестве типов оплаты/купленных продуктов/примененных рекламных акций:

Код: Выделить всё

{'Business': {'Business number': '123 45 67', 'Name': 'Business Name'}, 'Cashier': 'Cashier name',
'Date': 'YYYY/MM/DD', 'GST': 0.00, 'Payments': [{'Amount': 0.00, 'Method 1': 'Payment method 1'},
{'Amount': 00.00, 'Method': 'Payment Method 2'}], 'Products': [{'Cost': 00.0, 'Name': 'Product name
1', 'Price': 00.0, 'Quantity': x}, {'Cost': 0.0, 'Name': 'Product name 2', 'Price': 0.0,
'Quantity': x}], 'Promotions': [{'Discount': 0.00, 'Per_Quantity': x, 'Product': 'Product
applicable for promotion'}], 'Reference': '1234567:123456:12345', 'Sequence': 123, 'Terminal': 0,
'Total': 00.0}

Изначально я пытался просто создать CSV-файл со всеми квитанциями, чтобы можно было с ним поиграться, но в итоге получилось довольно неуклюже. Я использовал следующий код:

Код: Выделить всё

import pandas as pd
import json
import pathlib

data_path = pathlib.Path('./receipts-json')
keys = ['Business', 'Cashier', 'Date','GST', 'Payments', 'Products', 'Promotions', 'Reference', 'Sequence', 'Terminal', 'Total']
dat = dict([(k, []) for k in keys])

for jfile in data_path.glob('*.json'):
with jfile.open('r') as ifile:
json_data = json.load(ifile)
for key in keys:
dat[key].append(json_data.get(key, None))

result = pd.DataFrame.from_dict(dat)
result.to_csv('result.csv')
В результате все элементы в разделе «Платежи» (например) будут помещены в один столбец, а не разделены по методу, сумме и т. д. Я знаю, что мог бы просмотреть и разбить все это на отдельные столбцы, но мне кажется, что мне не хватает гораздо более простого способа сделать это, который также позволил бы четко разделить все подгруппы. Любая помощь приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/792 ... -dataframe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»