Познакомиться с различными способами представления табличных данных в файлах, овладеть навыками чтения данных из внешних файлов с помощью библиотеки Pandas, приобрести навыки выгрузки структурированных данных в различные форматы.
Ознакомиться с форматами данных предложенных по варианту файлов.
Изучить и описать выявленные особенности каждого файла.
Построить модель данных источника в нотации "Воронья лапа".
Выбрать способ загрузки для каждого файла и загрузить данные в Python в виде Pandas DataFrame.
Выполнить очистку данных от лишних символов, приведение связанных между собой колонок к единому типу данных, строки с датами и временем, числовые показатели - преобразовать к соответствующим типам данных.
Экспортировать все наборы данных из DataFrame в файлы по таблицам формата по варианту.
Подготовить отчет о выполнении лабораторной работы.
Данный шаг предполагает знакомство обучаемого с принципами организации данных в предоставленных вариантом форматах как входных, так и выходных файлов:
Текстовые
С иерархией
С разделителем
С полями фиксированной ширины
Бинарные
Псевдоформаты
Некоторые из них общеупотребимы, некоторые - специализированные. Но данные можно достать из каждого. Общий список форматов, включенных в данную лабораторную работу следующий:
XLSX
XLS
CSV
TSV
JSON
XML
Parquet
Avro
Yaml
Arrow
NPZ
Feather
Данные с фиксированной шириной колонок:
Приведённая иллюстрация демонстрирует файл данных, открытый с помощью программы EmEditor, который организован в формате фиксированной ширины столбцов (Fixed Width Format), где каждая строка представляет собой отдельную запись о железнодорожной грузоперевозке. Общая длина каждой строки строго фиксирована и составляет 100 символов, не считая символа переноса строки. Первая строка файла является заголовочной: она содержит наименования полей, которые отформатированы в соответствии с теми же правилами ширины и выравнивания, что и основные данные, чтобы обеспечить корректное считывание структуры.
Строка данных начинается с номера накладной, который занимает первые 10 символов и выравнивается по левому краю. Сразу за ним, с 11-го по 20-й символ, располагается дата отправки в формате YYYY-MM-DD. Далее следует блок информации о маршруте: название станции отправления занимает 25 символов (с 21-го по 45-й), а название станции назначения — следующие 25 символов (с 46-го по 70-й). Текстовые названия станций выравниваются по левому краю, а свободное пространство заполняется пробелами.
После указания станций начинается блок числовых и идентифицирующих данных. С 71-го по 80-й символ отведено под вес брутто в тоннах; это поле имеет длину 10 символов, выравнивается по правому краю и содержит два знака после десятичной точки. За весом следует номер вагона, занимающий 8 символов (с 81-го по 88-й). Финальное поле — статус груза — расположено с 89-го по 100-й символ, имеет длину 12 символов и выравнивается по левому краю. Все текстовые поля, включая заголовки, кодируются в UTF-8 для корректного отображения кириллицы, а недостающая длина строк добивается пробелами до фиксированного значения.
Допустим, в нашем распоряжении имеются два файла: risk.json и инциденты-2022-05-13.xlsx.
Файл risk.json выглядит следующим образом:
Характеристики файла "risk.json":
Файл является текстовым
12 строк
Кодировка UTF-8
Данные организованы в формате Json
Массив содержит два объекта
Каждый объект характеризуется тремя атрибутами: risk_id, category_name, description
В данном файле хранится справочник видов рисков с категориями.
Файл инциденты-2022-05-13.xlsx - является файлом офисного пакета Ms Excel и позволяет организовать данные в табличном виде, разбивая значения на столбы, строки и ячейки.
Характеристики файла "инциденты-2022-05-13.xlsx":
Наименование файла содержит дату, к которой относятся содержащиеся в нём сведения - 13 мая 2022.
Файл содержит два листа: "События" и "Ущерб".
Лист "События" выглядит следующим образом:
Характеристики листа "События":
Таблица содержит 4 строки
Данные в таблице организованы 5 колонками
Наименования колонок в файле отсутствуют
Значения в колонке 1 представляют собой идентификаторы формата UUID и являются уникальными
В колонке 2 размещены числовые неуникальные значения, совпадающие с множеством значений атрибута risk_id из файла risk.json, и скорее всего являются идентификаторами типов рисков.
В колонке 3 хранятся текстовые значения произвольного формата. Вероятнее всего, они являются описанием произошедшего события.
Колонка 4 содержит текстовые значения с номерами и адресами - предположительно это обозначения филиалов (отделений) организации.
Колонка 5 содержит дату и точное время. Т к все значения отличаются от даты из заголовка файла, то, вероятнее всего, они обозначают момент регистрации события в системе
...
Модель данных источника для приведенного в п.2 набора файлов будет выглядеть следующим образом:
Символом * помечены предполагаемые имена атрибутов, которые явно отсутствуют в исходном файле.
Для импорта каждого формата - существует свой собственный механизм. Для большинства представленных файлов будет достаточно функций библиотеки Pandas, однако, есть и исключения.
Обработка Avro, статья с примером экспорта, библиотека fastavro
Данный этап подразумевает:
очистку данных от лишних символов и мусорных значений;
приведение дат, времени, числовых показателей и строковых значений к соответствующим типам данных;
приведение связанных между собой колонок к единому типу данных;
объединение фрагментов в один набор данных;
добавление корректных наименований всех колонок.
Функция pandas.DataFrame.to_excel
Функция pandas.DataFrame.to_csv
Функция pandas.DataFrame.to_json
Функция pandas.DataFrame.to_xml
Функция pandas.DataFrame.to_parquet
Обработка Avro, статья с примером экспорта, библиотека fastavro
Отчет следует оформлять в формате docx-документа в соответствии с ГОСТ 7.32-2017. Он должен содержать:
Титульный лист;
Текст цели лабораторной работы, общего задания и задания по варианту;
Снимки экрана с изображением содержимого исходных и результирующих файлов, их описание;
Логическую схему источника;
Комментарии к выбору библиотек, функций и параметров для импорта данных;
Исходный код программы;
Вывод о проделанной работе.
Направлять вложением в приличное письмо на электронную почту преподавателя сразу по готовности.
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные:
Исходные данные:
Экспортированные данные: