Pandas: быстрый и надежный двоичный парсер - PullRequest
0 голосов
/ 24 декабря 2018

Я хочу проанализировать большие двоичные файлы (5 ГБ) в кадрах Python.Файл содержит разные пакеты, которые должны входить в разные фреймы данных.Каждый пакет содержит переменные типа c.Файлы содержат поврежденные данные, поэтому синтаксический анализ должен быть надежным.

Я успешно написал анализатор, но он идет медленно.Я анализирую пакет за пакетом с struct.unpack и добавляю данные в список для каждого типа пакета.Как только я закончу синтаксический анализ, я создаю кадры данных из списков.По мере увеличения размера файла преобразование списков в кадры данных занимает все больше и больше времени.

Кажется настолько неэффективным сначала размещать данные в списках, а затем помещать их в кадры данных.Кроме того, кажется неуместным позволять пандам обрабатывать типы, когда я точно знаю, какой тип c имеет каждый столбец.

Имеет ли смысл предварительно выделить большой массив данных с правильным типом для каждого столбца и заполнить его?при разборе?Стоит ли выделять и заполнять массивы в c, а затем как-то оборачивать массив данных?Или есть элегантный способ передать итератор пандам и позволить ему обрабатывать все?Я изучил функции разбора панд, такие как read_csv, но он кажется настолько сложным, что я полностью потерялся.

Любая помощь будет принята с благодарностью

Подробнее о двоичных файлах:

Данные упакованы следующим образом: h0 h1 id size data checksum

, где h0 и h1 - заголовокбайт, id - это идентификатор пакета, который решает, в какой кадр данных отправлять данные, size - размер данных, data - данные, состоящие из различных типов c (uint8, float и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...