Поиск по блогу

Показаны сообщения с ярлыком AEBto3tables. Показать все сообщения
Показаны сообщения с ярлыком AEBto3tables. Показать все сообщения

вторник, 28 апреля 2015 г.

Пытаемся упростить обработку файлов pdf AEB, но находим новые ошибки

Если скачивать отчеты AEB о продажах автомобилей каждый месяц, то как лучше вытаскивать 3 таблицы из pdf-файла? Сначала вызвать конвертер pdftotext при помощи subprocss, конвертировать и сохранить в текстовый файл, потом из него скопипастить все таблицы в отдельные ячейки. Исправить ручками все ошибки в таблицах, и только после этого привести таблицы к единому формату с помощью Pandas. И я все сделал для первой таблицы февраля 2015г., но вторая и третья таблицы пришли с ошибками, чтобы их понять пришлось их сравнивать со скриншотами оригинальных таблиц и вариантом копипаста прямо из pdf-файла. Итак, я здесь начал со ссылок на subprocss, потом "вспомнил" .str.

вторник, 7 апреля 2015 г.

Первый рабочий пример конкатенции таблиц с преобразованием форматов столбцов object -> float

Файлы таблиц "Brandt 2014y 2013y 1413y 2014m 2013m 1413m Datem" Визуальный тест pandasd.read_csv - как распечатать все файлы из папки при помощи PDB. Считать данные в кавычках, с разделителями разрядов, привести все пропуски данных к единому виду - Nan, перевести строку в число...
Не уверен, что это лучший варинат, но пока не знаю, как поступить иначе при таком уровне неопределенности. Формат исходных (ежемесячные данные) файлов менялся за год несколько раз. Там то появлялись запятые вместо пробелов - разделителей разрядов, то менялось количество столбцов... Пришлось парсеры перенастраивать и менять... Файлы короткие, распечатаю ка я их все за год и дело с концом... Нет, не так все просто, надо куда-то сохранить полученный файл...

понедельник, 6 апреля 2015 г.

Проект соглашения с самим собой об обработки файлов таблиц AEBto3tables

Пример того, как я пришел к простым правилам обработки спарсенных таблиц. Техника определяет тактику (мое теннисное убеждение), и правила также нельяз написать без учета инструментов, которые используются для обработки.
Я недавно "запал" на Pandas. И только вчера подобрал и попробовал методы для чистки таблиц. Т.е., я еще не освоил "технику" настолько, чтобы не думать о ней, но сосредоточиться на последовательности процессаов и "тактике" перебора файлов...
Наверное, поэтому мне так трудно. Очевидно, что я совершаю методическую ошибку. Я пытаюсь одновременно "ехать на автомобиле и ремонтировать его" (еще одна метафора... только для того, чтобы оправдать собственную глупость.
Здесь я попытался было проверить все чистящие операторы в одном методе в цикле, но влетел в непонятные ошибки, подключил дебаггер... оказалось, что один из файлов (апрель) в папке с заголовком, а остальные - нет... Начал пробовать все подряд, а потом написал-таки правила...

воскресенье, 5 апреля 2015 г.

Пример моей глупости: В папке пара десятков ... файлов... пишем класс For1aug2_csv

Это пример моего неправильного мышления. После практикумов с удачным наследованием собственного класса AEBto3tables я возгордился и решил "побыстрому" написат класс для конкатенции и чистки таблиц. Работу пришлось бросить...
Но пост публикую. Здесь все же записан процесс моей работы (а исправления ошибок в следующих постах). Вот неправильное начало поста:
Этот класс будет построен по тому же принципу, что и AEBto3tables - метод с итератором по файлам в папке вызывает последовтельно методы проверки однородности таблиц, чистки столбцов, конвертации форматов, добавления столбцов, конкатенции таблиц. Пишу все в Spyder на компьютере "Kali"

суббота, 21 февраля 2015 г.

Переопределние класса AEBto3tables для таблиц января 2015 и запись результатов

Как и год назад, в Январе таблицы не включают столбцы с предыдущими месяцами. Но, кроме того, в таблицах 2 и 3 убрали столбцы. Так что пришлось выполнить очередную перенастройку.

Переопределние класса AEBto3tables для таблиц января (они отличаются от всех остальных). Потом записываем только три файла в старые папки *aug2.

В Январе таблицы не включают столбцы с предыдущими месяцами. Пробуем просто поменять параметры в настройках метощдов класса

пятница, 20 февраля 2015 г.

Вторая таблица в AEBto3tables для августа с filter(None, line.split(' '))

Используем наше "изобретение" filter(None, line.split(' ')) для того, чтобы парсить таблицы файлов типа "август"

Запускаем из IPyNotebook парсер AEBto3tables, настраиваемся по февральскому файлу и... умнеем

Здесь изобретаем вот такой велосипед filter(None, line.split(' ')), редактируем методы класса, и парсим в новые подпапки (1feb). Новый "ввелосиед" оказался почти идеальным. В конце поста это видно по размерам файлов в папках.

четверг, 19 февраля 2015 г.

Методика перенастройки и отладки pdf парсера AEBto3tables с использован ем IPyNotebook

Формат таблиц в pdf файлах за год несколько раз менялся. После того, как я понял, что надо каждый раз перестраивать парсеры строк, то понял, что даже, если у меня будет десяток разных парсеров для этого сайта, то я определенно в них запутаюсь. Надо записывать все в одном месте - и результаты, и код, и процесс отладки. Здесь я записал процесс перенастройки по файлу августа 2014 и научился наследовать собственный класс.

вторник, 17 февраля 2015 г.

Как парсить текстовые строки переменной длины (после отравления блинами)?

Таблица продаж автомобилей после конвертации из PDF файла представляет собой набор строк. Но каждая строка может начинаться с одного или нескольких слов названия марки (фирмы). Получается, что в строках может быть от 7 до 11 слов. Как загнать их в 7 столбцов? Задачка детская, надо просто знать мат.часть, вот ответ iii.partition(' ')[2].split(), len(iii.partition(' ')[2].split()) Но я никак не мог догадаться и перерепробовал RE... Здесь примеры моих тупых поисков и текстовый файл

пятница, 13 февраля 2015 г.

Фрагменты кода для парсере PDF (AEBto3tables)

Здесь я начал раздумывать о том, как сделать парсер pdf и попробовал осмыслить последовательность обработки папки с pdf файлами. Собрал сюда фрагманты работающего кода с os.listdir(path) subprocess.Popen(...) pdftotext , потом фильтры для трех таблиц (код фильтров надо переделать, не учел что в названии может быть несколько слов), потом великие открытия с sys.path.append(...) и прехватом сообщений дебаггера из консоли прямо в notebook...