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

среда, 29 апреля 2015 г.

Шаблон Pandas для очистки второй таблицы после копипаста из текстового AEB

Копипастим в последнюю ячейку одну из трех таблиц из текстового файла, редактируем таблицу вручную. Потом загружаем содержание ячейки в DataFrame, добавляем столбец даты, убираем из столбцов символы '%" , заменяем '(' на '-'сохраняем все в 'eng_car_sales_in_feubrary_2015.csv'.
.isin .str.contains .str.replace('[().]', '')

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

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

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

пятница, 24 апреля 2015 г.

Ручная сборка tab3 aerbu за 2014г..., штопаем носки с разными формами дырок

Порядок сборкм апрель+(май-июнь)+(июль-декабрь)+(февраль-март)+январь. Каждая группа файлов отличается от остальных количеством или порядком столбцов. Алгоритм действий: есть датафрейм pdall, в который по очереди добавляются датафреймы pdtemp или pdtemp_app (для группы файлов).
Каждый временный pdtemp_app сначала собирается из подобных файлов, а потом туда добавляются (при необходимости) дополнительные столбцы, переименовываются, изменяется порядок столбцов в соответствии с pdall.
В итоге получаем датафрейм за 2014г. и декабрь 2013, в котором потеряно 4 строки, а некоторые столбцы еще предстоит почистить и привести к числовым форматам. В конце поста распечатан итоговый csv файл.

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

Работа с временными файлами в Pandas - ну... не нравится мне все это

Сначала я решил попрактиковаться с методом pd.to_csv. Это часть типовой задачки: открывать разные файлы в pd.read_table, потом приводить их к одному формату и добавлять в один сборный файл. Но в процессе работы решил освоить tempfile.TemporaryFile() - впечатление двойственное..., наверное из-за необходимости использовать .seek(0). Кроме того, в процессе поисков я обнаружил чудесную документацию к Beautiful Soup, зря я не снисходел до нее ранее. А начинается с пост с раууждений о неправильной "постановке задачи".

суббота, 18 апреля 2015 г.

Учимся фильтровать строки DataFrame (pandas) .str.contains()

Чтобы научиться фильтровать строки по условиям вида [pd1[column1] > 100], [pd1['col2'].isin(model_list)], [pd1['Datem'].str.contains('^3.+')], pd1.dropna(subset = ['n1_y', 'Brandt', 'Model'])[10:15] нужно знать форматы столбцов и помнить, что .str.contains() выдает ошибку, если в столбце есть пропущенные значения (NaN) Здесь я сначал хотел попрактиковать регулярные врважения, но оказалось, что подводные камни .str.contains заняли почти весь пост...

пятница, 17 апреля 2015 г.

Попытка доисследовать, чем же отличаются файлы в aerbu_2014_all_csv/3aug2/ приостановлена

Здесь я начал было вручную импортировать файлы в объекты DataFrame (Pandas), но пост разросся из-за того, что пришлось пробовать все подряд: последовательность обработки файлов (начнем с апреля-мая), анализ содержания файлов (структура столбцов), опции для метода pd.read_csv, регулярные выражения. Слишком много разных тем для одного поста. Потому решил остановиться, чтобы в следующих постах освоить простые методы для работы со столбцами. Здесь же неплохой вариант подготовки к пофайловой обработке csv-таблиц. Так что вернемся к этому посту позже.

четверг, 16 апреля 2015 г.

Пойди туда не знаю - куда... pandas.dtypes[0].name - страдания "чайника"

Здесь я начал с процесса сравнения файлов в папке (обнаружил, что их два вида), потом я попытался найти методы для того, чтобы рассортировать файлы по (сочетанию) типам столбцов. Обнаружил еще один "подвид" (отрицательные числа в скобках). В процессе поиска я пришел к выводу, что надо фильтровать не по типам, а по регулярным выражениям ... но этот черновик получился довольно длинным, потому экзерсисы с регулярными выражениями в следующим файле. Много времени ущло на поиск команд. Найдены всего лишь: (pdtemp.dtypes[0].name == 'int64'), pdtemp.columns = colnames_3_0-12, ** А начинается пост с констатации методических ошибок...

среда, 15 апреля 2015 г.

Методы Pandas для работы со столбцами

Когда начинаешь использовать DataFrame, то возникают десятки "мелких вопросов. Как переименовать столбцы? Как изменить порядок столбцов (чтобы склеить таблицы)? Как фильтровать строки по содержанию ячеек? Как использовать для этого регулярные выражения? Типы столбцов? Вот пример команды для извлечения списка столбцов: "cols = list(df.columns.values) StringIO
Здесь есть и такие фишки, как команды считывание в DataFrame из буфера обмена, из ячейки Ipython ... И это приводит к размышлениям о том, что иногда проще скопипастить фрагмент прямо сюда в Notebook

суббота, 11 апреля 2015 г.

Сводим все три промежуточных файла в один 2014_all.csv

Здесь перехожу в папку с тремя файлами (2014.csv, 2014_2_3.txt, 2014_1.txt) /media/MYLINUXLIVE/Documents/Xpdf/aerbu_2014_all_csv_new/ и пытаюсь все собрать в один файл.

Неудачный шаблон (3) конкатенции... поскольку влетаем в чересполосицу "третьих" таблиц из файлов aerbu

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

пятница, 10 апреля 2015 г.

Подгоняем таблицу_1 за январь 2014 к формату шаблона и сохраняем с новым порядком столбцов

В процессе работы выяснилось, что шаблон слишком громоздкий. Здесь я попробовал не копировать предыдущий вариант шаблона, а копипастить отдельный ячейки. Здесь при считывании файла пришлось пропускать первую строку, а при записи менять порядок столбцов. Кроме того, здесь столбцы "нарастающим итогом с начала года" изначально отсутствовали, при вставке нулей, три столбца '2014y', '2013y', '1413y' записались в формате Int, посмотрим в следующих постах, как они "concatent" c float

Продолжаем пробовать шаблон (1) конкатенции таблиц (Pandas) с данными aerbu февраля и марта 2014

В предыдущем посте мы создали файл, в котором склеены только девять месяцев 2014 года. А первых трех другой формат. Здесь я попробовал тот же шаблон для февраля и марта.
Объект DataFrame (pdall) сформировался с ошибкамии -в столбцы попали данные разных форматов из-за ошибки парсера в строке *"Mercedes-Benz Vans","771","473","63%","459","279","65%", ** Потому этот подход показался неудобным, как и сам шаблон.
Сначала "ставим задачу", потом последовательно выполняем в итераторе импорт файлов со столбцами "Brandt 2014y 2013y 1413y 2014m 2013m 1413m Datem", добавляем столбец, читстим и преобразуем два столбца object в Float64, преобразуем строки в даты... Сохраняем все на диск и в инфо-файл.

четверг, 9 апреля 2015 г.

Первый вариант методики очистки и шаблона(1) конкатенции таблиц с Pandas

Файлы таблиц могут иметь разное число столбцов, столбцы разное форматирование, если использовать DataFrame Pandas, то эти задачки решаются очень просто. Здеся я попытался использовать возможности Notebook, PDB, чтобы совместить выполнение кода, тестирование, документирование, логирование...
Сначала "ставим задачу", потом последовательно выполняем в итераторе импорт файлов со столбцами "Brandt 2014y 2013y 1413y 2014m 2013m 1413m Datem", добавляем столбец, читстим и преобразуем два столбца object в Float64, преобразуем строки в даты... Сохраняем все на диск и в инфо-файл.

среда, 8 апреля 2015 г.

Продолжаем разбираться с прожорливым кэшем Chromium -> disk_cache.h -> WebKit -> MemoryCache class

Как работает кэш броузера Chrome? Эта навязчивая идея заставляет меня раз в два месяца копаться в настройках браузера. Вчера вечером я так увлекся, что сегодня потратил еще полдня на конспектирование документации chromium.org/developers, trac.webkit.org/wiki/MemoryCache. Здесь более десятка ссылок, схема файлов кэша, сэема класса MemoryCache... Начал с перевода с китайского, который слегка сбил с толку... но надеюсь что найду все в "сырцах" описанияй классов ... Defines the public interface of the disk cache.

вторник, 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"

пятница, 3 апреля 2015 г.

Проблемы с поддельным планшетом Samsung Galaxy Note N8000 - как я постигаю Android

Планшет постоянно "сбрасывает" WiFi подключение. А у меня нет ни знаний, ни времени, чтобы разобраться в чем же дело. Наконец, вчера угрохал целый день на то, чтобы понять, как быть.
Вот результаты: на обычном linux стоят библиотеки и дополнения, которые разруливает (java) Dalvik Virtual Machine. Пользователя система пускает только в пользовательские папки. Нужно получить права root, чтобы удалить "системные" файлы с вирусами, которые нашел DrWeb, которого я с большим трудом установил через Play Market. Администрировать планшет лучше с ноутбука, для этого намерен использовать ADB, которую не стал устанавливать отдельно, поскольку просчитал, что это чатсть Android-SDK. С разными вариантами SDK не разобрался, потому тупо залил Android Studio на w8 (у меня фобия к Eclipse) .
Здесь винегрет из ссылок на документацию Android, статьи про все упомянутые инструменты и библиотеки, а также и на Samsung Kies..., вирусы

четверг, 2 апреля 2015 г.

Байда с иероглифами - это Baidu... или техника "пьяный кулак" при охоте на вирусы в заповеднике Windows XP

Польза от поста: попробовал Baidu antivirus, и он мне очень понравился. Теперь лирика: приятель принес ноутбук Toshiba с Windows XP без батареи и с выломанным CD-Rom. При первом знакомстве с замызганым аппаратом, на котором (якобы) переустановили Widows, я быстро нашел (гениальное) решение: установить на него Linux Debian.
Но приятель заявил, что он слов таких не знает, сидит пьет старку и всего ботся..., и с работы его (матерого инженера теплосетей) уволили, так что компьютер нужен срочно для печатания резюме и просмотра порно-роликов. Ему бы только звук включить, да Word поставить...
Дело было вечером, мне очень не хотелось пускаться во все тяжкие с... год, как не поддерживаемой XP..., но ...