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

четверг, 3 декабря 2015 г.

Свежие видео о Ipython Notebook JuPyter

Я год не заглядывал в документацию, а зря все развивается очень бурно. Здесь видео с обзорами, а к ним код с nbviewer.ipython.org Интерактивные виджеты, Параллельные вычисления, Кастомизация, использование компонетов в других приложениях...

вторник, 1 декабря 2015 г.

Создаем для JuPyter возможность одновременной работаты c Python 2.7 Python 3.4

Одолели мысли по поводу использования notebook для отладки Javascript. Обнаружил, что с третьим питоном делать это можно очень просто. Здесь научился создавать пространство имен для python 3 conda create -n py3k python=3 anaconda, но долго не получалось запустить notebook так, чтобы в ней появились опции выбора переключения версий ядра между 2-ым и 3-им питоном. Надо было перегрузить компьютер. Здесь видео и с 10-к ссылок... на документацию. Там все просто...

воскресенье, 29 ноября 2015 г.

Копипаст IPython Notebook: Javascript/Python Bi-directional Communication

После беглого прочтения статья показалась мне очень интересной, потому и скопировал к себе в черновики. Потом прочитал о новых возможностях juPyter, и отложил дальнейшее изучение... Однако "...Nevertheless, I thought folks might be interested to hear what I've learned"

This notebook originally appeared as a post on Pythonic Perambulations by Jake Vanderplas.

суббота, 28 ноября 2015 г.

Между делом: надо не забывать про "conda update conda"

Смотрел видео про виджеты в Питоне. Там авторитетные люди начали с того, что обновили версии. Захотел, чтобы и у меня было, как у людей. Обновился, а "ipython notebook" выдает No module named notebook.notebookapp. Пришлось гуглить... Как бы мне научиться планировать инфраструктурные задачи...

воскресенье, 15 ноября 2015 г.

Здесь пытался понять, как лучше использовать Jupyter для отладкт javascript

Надо было подобрать и настроить ява скрипты для сайта. Если делать это в NOtebook, то можно сразу и отладить и записать варианты настройки. Заманчиво... но как это сделать? Как загружать на страницу jypyter кастомные js скрипты и стили? Оказывается, что вариантов несколько, в зависимости от того, что нам надо. Для глобальных задач есть специальная папка .ipython\profile_default\static\custom\custom.js, файл custom.js автоматически вставляется в тег head страницы. Для тетирования фрагментов кода предусмотрены объекты в IPython.display (Display, HTML, Javascript, IFrame ...), а еще есть магики %%html %%javascript В сочетании с возможностью загрузки внешних скриптов $.getScript('/static/custom/util.js'); и обращения к element.append(myvar) (Use the element variable for printing in the cell output area) все это надо осваивать. Здесь примеры и ссылки.

вторник, 23 июня 2015 г.

Выбираем (в Pandas) инструменты для экспресс-анализа истории поисковых запросов

Хорошо было бы иметь методику анализа поисковых запросов, над ней еще предстоит поразмышлять, а здесь я попробовал не расчитывать, а сразу строить нормировки (на графиках процессов), диаграммы рассеяния и коэффициенты корреляции. Получилась вот такая последовтельность:
Копипастим таблицу "История запрсов" Yandex-Direct в ячейку ipython notebook,
Чистим и редактируем содержание ячейки (кириллица, копипастим разделители)
Считываем содержание в DataFrame (Pandas) .read_csv(StringIO(posobie_c),sep=" ", ...)
Заменяем элементы в подстроках и конвертируем строки в числа .str.replace(',','.').astype('float')
Для удаления части подстроки используем регулярные выражения .str.replace(r'.+ - ','')
Или просто разбиваем строку на подстроки и оставляем подстроку f.Period.str.split(' ').str[2]
Назначаем индекс .set_index('Period') (понадобится ось X для диаграмм)`
Строим две зависимости на одной диаграмме f.set_index('Period').nabs2.plot(secondary_y=True, style='g')
Строим диаграммы рассеяния (scatterplot)
Рассчитываем коэффициенты корреляции

вторник, 2 июня 2015 г.

Как легально скачать и установить обновленный Windows 8.1 на VMare и загрузочную флешку

Предстояло иметь дело с сомнительным софтом, и я вспомнил о "простаивающей" виртуальной машине. Поначалу поытался найти способ сделать из моего дистрибутива ISO-образ, но оказалось, что ntgthm можно скачать новенький дистрибутив Windows. Здесь я собрал ссылки на статьи, в которых рассказывается , как
1. Скачать ISO-образ с "Create installation media for Windows 8.1"
2. Узнать свой ключ активации.
3. Установить Windows (с моим ключом активации) на виртуальную машину VMware.
4. Сделать из ISO-образа загрузочную флешку (пусть будет).

воскресенье, 31 мая 2015 г.

Инструкция по подключению дебаггера "Using A Remote Debugger With CasperJS and PhantomJS"

Ну очень понравилось... Особенно после того, как я помучился с node-inspector. Здесь механизм тот же. Используется мощнейший дебаггер браузера (webkit). Запуск PhantomJS скрипта возможен с опцией --remote-debugger-port=9000. Таким образом можно загрузить в любой "внешний" браузер (но только webkit, естественно) не только сам скрипт (из фантома), но и html страницы, и файлы, которые запрашивает Phantomjs.
Похвалюсь, описание настройки дебаггера нагуглил по собственной инициативе... в документации попалась только опция. Здесь же ссылка Description of the V8 debugger JSON based protocol.

суббота, 30 мая 2015 г.

Устанавливаем Casperjs на Debian (Kali) из GitHub и находим способ "phantomjs casperscript.js"

Установка простая, если не считать того, что CasperJS version 1.1.0-beta3 at /usr/local/share/casperjs, using phantomjs version 1.9.8 (Casper пока рабтает только с предыдущей версия Phantom). Кроме того, я решил выполнять скрипты casper из консоли REPL, для этого учусь запускать касперскрипты в командной строке phantomjs.
Хотя, пробовать будем потом, здесь только краткие фрагменты из документации.

Устанавливаем Phantomjs на Debian (Kali) так, чтобы потом установить Casperjs

На моент написания поста последняя версия Casperjs соответствовала предыдущему релизу Phantomjs. Так что мне пришлось искать в репозитории версию phantomjs-1.9.8-linux-i686 и устанавливать ее. Здесь подробный лог установки. Надо запомнить прием создания символической ссылки ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin

пятница, 29 мая 2015 г.

Почему редактор brackets не работает на машине с Kali, буду юзать его под windows

После установки Google Chrome я полагал, что редактор наконец заработает, но не тут-то было. Вот такая ошибочка вышла version 'GLIBC_2.15' not found required by /opt/brackets/lib/libcef.so . У меня хватило ума прервать мои вечерние упражнения с установкой новых программ, и сегодня с утра я сказал себе: "Обновить центровую графическую библиотеку всей сборки? Оно тебе надо?" Как там у классика? Кажется: "Люди потеряли дух авантюризма..." И я тоже... Старею, однако... Но здесь три ссылки с решением для авантюристов и логи моих безрезультатных экзерсисов...

Как установить Google Chrome Stable Version On Kali (Debian, Ubuntu)

Этот тот случай, когда надо бы использовать репозиторий разработчика. Но не везло мне с репозиторием Гугла. Не хотел дистрибутив Chrome устанавливаться без ошибок. Наверное, не очень то мне и хотелось... Но вот приспичило, и установил с помощью волшебного удара в бубен apt-get install -f. Надо его запомнить.

четверг, 28 мая 2015 г.

Размышляем на тему Python + Cron

Пока я не придумал ничего лучше, чем Cron. И, дабы не переписывать расписание, настроенного под Linux на Windows, меня устроила бы обертка того и другого..., например python-crontab.
Всего здесь с десяток ссылок ...для дальнейших размышлений...

среда, 27 мая 2015 г.

Пробуем команды debugger; чтобы исследовать модуль request nodejs

Чтобы вывести в консоль заголовки можно использовать NODE_DEBUG=request node r01.js . Команда выглядит необычно, второй вариант NODE_DEBUG=response ... Эта опция дожна рвботать с любым модулем (?).

вторник, 26 мая 2015 г.

Правим код к видео "Web Scraping in Node.js". Правило: Видео - документация - stakoverflow

Три дня назад я опубликова пост "Посмотрел Web Scraping in Node.js ...". У меня тогда не получилось выполнить код из видео. Оказалось, что синтаксис команды var url = this.attr('href'); теперь такой var url = $(this).attr("href");. Gjlhj. На странице Cheerio все хорошо документированио, на StackOverFlov тоже есть примеры. Здесь не только ссылки, но и записан процесс поиска ошибки, и обоснование правила: видео - документация - stackoverflow, немного о jQuery...

понедельник, 25 мая 2015 г.

Nodejs. Смотрю видео, запоминаю три приема с debugger, а проба node-inspector в комментариях

И все это на машине с Kali (Debian). Очередная попытка установить софт "между делом" не прошла. Дело: смотрю видео (от Кантора) дабы освоить дебаггер, тупо устанавливаю node-inspector, а он сообщает мне, что не находит Chrome, действительно, нет на этой машине ни одного вебкита.
Между делом:Нахожу в инете мануал How to Install Google Chrome in Kali Linux, но оказывается, что дело это хлопотное... Спрашивается, зачем я это сделал? Думать было некогда!

воскресенье, 24 мая 2015 г.

Посмотрел "Web Scraping in Node.js" by Smitha Milli и скопировал сюда код из видео

А как парсить HTML страницы с Nodejs? Это вопрос не давал покоя. Здесь базовые видео Web Scraping in Node.js by Smitha Milli и ссылка на библиотеки. Идея с использованием nodejs + Request + Cheerio зацепила. Особенно после того, как в книге (Бибо, Каца) jQuery я обнаружил тот же код, что и в видео.

четверг, 21 мая 2015 г.

Selenium или PhantomJS для скрапинга LinkedIn. Пример Python кода

Здесь фрагменты и ссылки по трем важным темам: "Что такое Selenium"(статья на Хабре), "Пример Python кода работы с Selenium" (30 минут видео и код), "Scraper для LinkedIn"(код из видео с from selenium import webdriver).
Кроме того, здесь ссылки на 4 статьи Selenium для Python

среда, 20 мая 2015 г.

Возможности ... и десятки библиотек для тестирования и парсинга на основе Nodejs

Здесь около трех десятков ссылок для понимания Nodejs и того, как можно парсить html-страницы... И копипаст перечня "I'm trying to put list of possible solutions for browser automatic tests suits and headless browser platforms capable of scraping"

Selenium и "In this video I explain how to use PhantomJS"

Надо помнить, что Phantomjs использует webdriver from selenium import webdriver. Здесь пример кода из видео. Его надо попробовать, но потом. Пока надо быстро прочитать всю документацию по всем проектам, дабы принять решение, что выбрать для начала (Nodejs, Phantom, Selenium).

вторник, 19 мая 2015 г.

Кто взахлеб читает мой диск c Google Chrome?

Здесь я, замученный наглостью Google Chrome, скопипастил 8 строчек из монитора процессов (w8), дабы пригвоздить к позорному столбу сокет(?) http://go.microsoft.com/fwlink/?LinkID=136333 на (3 814 250 228) 3 гигабайта.
Строчки отсортированы по полю Прочитано байт

понедельник, 18 мая 2015 г.

Последствия просмотра видео "Введение в NPM - менеджер пакетов для Node.JS "

Здесь в начале поста собраны видео (от Кантора), npm help, npm-faq, а потом я задаю поиск в репозиторииnpm s linkedin и распечатываю один из найденных файлов. Им оказался phantom-linkedin
Запомнить: Менеджер пакетов сначала ищет директорию node_modules в текущей, потом в родительских папках, если не находит, то создает...

Семантическое версионирование и структура пакета NPM (nodejs)

Здесь видео (от И.Кантора)... фрагмент описания с semver.org ... и поучитеьный пример загрузки не из репозитория, а с GitHub npm i https://github.com/jeanphix/Ghost.py.git

воскресенье, 17 мая 2015 г.

Постигаем азы с видео "Automation with PhantomJS "

Здесь я набрал код из видео... и решил, что из этого примера надо запомнить приемы if(system.args.length - проверки количества аргументов в строке запуска, document.getElementById("firstname").value ="Joe"; - (пере)присвоения значений полям, setTimeout(function(){phantom.exit()}, 400)

суббота, 16 мая 2015 г.

Ссылки и фрагманты кода ...при чтении статей и документации к Phantomjs, Slimerjs, Casperjs

Решил, что пришла пора прочитать документацию к Phantomjs, Slimerjs, Casperjs. Читать надо было именно в этой последовательности. За этим занятием провел день. Предыдущий мой наскок на Slimerjs был в январе. Я тогда даже установил его..., но плохо помнил об этом. Потому сегодня решил разобраться, как это работает и с чего начинать.
Предварительные выводы: в Phantomjs есть REPL и множество примеров, а в документации Slimerjs есть описание классов. Первый на Webkit, второй на Geko. Без них никуда. А вот на "синатксический подсластитель" Casperjs время тратить не хочется.
Мне пока проще фантомом вырезать в файл один блок (div) с вебстраницы, а потом рапарсить его в (более мощном) Scrapy. Так что Casperjs пока будет стоять в очереди за Nodejs... Здесь еще фргменты кода из статей и видео.

Перечитал статью "Screen Scraping with Node.js" и приготовил видео для изучения import.io

Попалась перепечатка. А в статье (трехлетней давности) разделы Simple Scraping With YQL, Using YQL with NodeJS, Enter PhantomJS, Installing PhantomJS-Node, Using PhantomJS-Node... Поскольку я уже знал, что Phantomjs - это не модуль nodejs, то возникли вопросы: как лучше устанавивать Phantomjs? Отдельно, или интегрировать с Nodejs? Решил сначала прочитаь документацию, а потом уже искать ответ на этот вопрос. Здесь еще ссылки Yahoo dev console, import.io
Беспланый сервис, который работает в связке с Tableau... Хорошая игрушка. Интересно, что он делает с футами и метрами в разных ячейках одного столбца

среда, 13 мая 2015 г.

Устанавливаем RapidMiner Server на Debian в соответсвии с видео

Здесь я потерял час на том, что установил переменные окружения в одной консоли, а установку дистрибутива запустил в другой, в результате у меня все время устанавливалась java 6 вместо 7. Причина невнимательности в том, что я прерывал процесс дня на два (Вспоминал LAMP и наоткрывал консолей... поупражнялся, а потом "вернулся", но не туда...) Пост получился длинным, но последовательным.

вторник, 12 мая 2015 г.

Надеюсь найти здесь рецепты "...grab social data (twitter, facebook, linkedin) using just a person's email address"

Некогда было посмотреть видео с заманчивым описанием. Я уже год, как не смотрел ничего на эту тему, а напрасно. В сети появилось очень много новых видео. Так что далее надо будет изучать Django + grab social data + python Будем считать этот пост декларацией о намерениях.

Как в Linux переключаться между разными версиями java?

Все началось с того, что команда java -version сообщила мне, что у меня в дистрибутиве стоит 6-ая версия, а для установки нового сервера требовалась 7-я. Я года два, как не подходил к java, потому решил не умничать, а найти мануал в инете... Мануалы нашел (ссылки здесь), но оказалось, что у меня уже стоит седьмая версия, чтобы переключиться на нее, нужно было использовать update-alternatives --config java

понедельник, 11 мая 2015 г.

Двухминутное видео "Test and explore the LinkedIn API without OAuth getting in the way"

Нашел я его потому, что пришла пора рабтать с API LinkedIn, Facebook... До вчерашнего дня я не знал, что есть такие чудесные онлайн консоли, как apigee.com. Начал было радоваться и раскатывать губы ..., но тут же прекратил это занятие и решил взгрустнуть, так как именно сегодня linkedIn опубликовал "Changes to our Developer Program", и есть ведь у них программы BIg Data..., но "The LinkedIn Economic Graph Challenge is open to U.S. residents only" Здесь еще две враз осиротевшие ссылки на страницы с python-linkedin 4.0, Authenticating with OAuth 2.0

четверг, 7 мая 2015 г.

Kali (Debian) Исследуем файлы и процесс пользователя www-data с помощью команд ls, ps, pstree, find, lsof , pgrep

Чтобы разобраться, как настраивать права доступа в LAMP (менять права доступа к файлам и папкам), я решил начать с инструментов диагностики процессов и файлов. Здесь примеры команд для поиска файлов, принадлежащих определенным пользователям и группам (www-data), открытых процессом apache2 файлов, процессов, связаных с конкретным файлом, деревья процессов.
В конце распечатки страниц справки.

среда, 6 мая 2015 г.

Устанавливаем MySQL Workbench и смотрим первое обзорное видео на 14 минут

Загрузил MySQL Workbench с сайта. Но перед тем, как устанавливать, решил проверить, и Kali мне подтвердил, что да, все есть в репозитории ... Попробовал залезть в локальный сервер (Kali)? оказалось, что пароль я и не поставил... Первое впечатление: все работает отлично - Python скрипты, немного круче чем MyPHPAdmin (шутка), но где же взять столько времени, чтобы это освоить?

вторник, 5 мая 2015 г.

Вспоминаем установку и работу в MySQL и PhpMyAdmin, и MySQL Workbench

Лет 5 назад последний раз использовал mysql в LAMP (Xampp). И вот настали времена, когда мне снова нужен стек LAMP, нужно все вспомнить, но с командной строкой, ...GUI уже видеть не могу... почему? Полагаю, появилась потребность в средствах диагностики сервера.
Так что здесь немного попрактиковался с оболочкой mysql> help, собрал ссылки на 20 видео и десяток мануалов, распечатки мануалов... mysqladmin --help
Пароль mysql такой же, как и рута в Kali (на моем локальном компьютере). Я его задал при установке phpmyadmin. Еще один жестокий промах: я оставил здесь юзера с именем root (по умолчанию)...

понедельник, 4 мая 2015 г.

Попробовать обязательно: mawk - pattern scanning and text processing language

Ничего не знал об этой команде в Linux, но пробовать некогда. Как бы не забыть. Потому здесь просто длиннющая распечатка man awk

Вспоминаем Apache2 и распечатываем конфигурационные файлы в сборке Kali (Debian)

Конфигурационные файлы apache разные для windows, redhat, debian. И я смирился с тем, что вряд ли когда-нибудь пойму, зачем все эти "дополнительные файлы". Однако, когда читаешь куцые мануалы по установке LAMP на том или ином хостинге, надо бы представлять, куда лучше записывать те или иные директивы.
Здесь я обнаружил поддиректории с их изрядным количеством конфигурационных файлов для отдельных модулей. Разбираться с подробостями пока незачем. Потому здесь распечатал только /etc/apache2/apache2.conf и все файлы из поддиректорий /etc/apache2/ , дабы при случае вспомнить, то помимо php.ini есть еще php5.conf и он здесь. Вообще, возникают ассоциации ... apache2 Include conf.d/ с модулями php. Здесь теперь две папки с модулями (mods-available и mods-enabled) - раньше был один здоровенный конфиг, а теперь - модульные? Надо при случае проверить.

воскресенье, 3 мая 2015 г.

Об установке PHP вместе с php.net Debian installation notes

Мануалов по установке много, но обычно возникают трудности с установкой дополнительных модулей. В руководстве на php.net даются рекомендации по использованию !aptitude -h, apt-get -h, !apt-cache search php5, php --help, , таким образом, используя системный загрузчик можно посмотреть кэш, удаленный репозиторий, а можно обратиться к PHP и просто распечатать php -m (список модулей) и здоровенный php -i phpinfo()

суббота, 2 мая 2015 г.

Устанавливаем Revive Adserver на декстопный Kali (Debian) для тестирования

Здесь устанавливаем Revive Adserver на Kali (Debian). Поскольку у меня обычно подобные процедуры происходили в раздражающей спешке, то я предварительно решил "вспомнить" все проблемы, которые возникали при подобных установках. Вспоминание LAMP было в предыдущих постах, а здесь я решил предварительно вспомнить про контрольные суммы файлов, архиватор tar, назначение владельцев директорий и прав доступа к папкам.
Про права адеялся найти в мануале, но ничего вразумитеьного не нашел. Потому установил все под рутом. Решил сначала запустить сайт, протестировать, а уж потом начать эксперименты с малопонятными владельцами процессов вроде www-data. Зато скрипт установки выполнился почти без проблем. Вот только к заранее созданной БД он не подключился. Но создал новую...
Сайт работает хорошо. Пароль для админки такой же, как и для Kali

среда, 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..., но ...

вторник, 31 марта 2015 г.

Pandas как лучше склеивать файлы... Справочник методов read_csv, to_csv, DataFrame

Это третий пост (подряд) на эту тему. Мы разобрались с методами чистки и конвертации столбцов в DataFrame(). Теперь прежде, чем сделать из всех файлов в папке один, соберем здесь методы и свойства read_csv, to_csv Их несколько десятков, а у объекта DataFrame - несколько сотен. Так что здесь получился справочник

понедельник, 30 марта 2015 г.

Pandas или file.read... Типовая задача: В папке пара десятков сравнительно коротких файлов...

Перебрали файлы в папке, из имени каждого вырезали название месяца, из словаря добавили год и последний день месяца, потом добавили столбец и конвертировали его из строки в дату (object -> datetime64[ns] ) И все это с выписками и ссылками на два мануала и документацию Pandas. Все на фоне рефлексий по поводу алгоритма...

воскресенье, 29 марта 2015 г.

Ищем команды для проверки, чистки и конвертации столбцов в числовой формат

Здесь я попробовал методы для проверки одородности таблиц и чистки столбцов .describe() .str.contains('%') .replace('%','').get .replace('%','').astype(int) .index.value_counts()
Как-то все трудно шло, отчасти потому, что не могу понять принципов построения методов. Например, долго искал, как превести столбец в числовой формат, оказалось все очень просто .astype(int)

воскресенье, 22 марта 2015 г.

Грязные AEBto3tables - осваиваем 10 из 100 опций read_csv Pandas - как читать построчно куски csv файла

Здесь возвращаемся к папкам с "замусоренными" полуфабрикатами после парсинга pdf-файлов с данными продаж автомобилей с сайта AEBrus.ru в 2014г.
Каждый файл надо просмотреть, убрать особенности форматирования в каждом столбце (например, в качестве разделителея разрядов могут испоьзоваться и запятые, и пробелы), добавть столбец даты(месяца)... не говоря уже о такой ерунде, как traling spaces, кавычки, лишние звездочки (*) и прочее... Начал считывать файл в DataFrame и тут же получил ошибку "CParserError: Error tokenizing data. C error: Expected 8 fields in line 38, saw 9", быстро обнаружил, что можно просто не читать эту строку..., а потом и обработчик ошибок нашелся...

пятница, 20 марта 2015 г.

"Brackets" и ссылки для установки новых универсальных текстовых редакторов

Пробуя поиск с nbViewer набрел на документацию "Python for Vision Research", а там классная подборка редакторов кода. Вот "редакторы нового типа": SublimeText, Zed, Atom, Brackets, LightTable Я их посмотрел "между делом"... и что-то даже установил. Очевидно, что их (бесплатные) нужно будет пробовать.
Здесь я пытался переустановить "Brackets", пробовал sudo apt-get -fy install, но не могу сейчас тратить время на исправление ошибки Brackets can't run on Debian 7 (Wheezy) #4816
Вернусь к этой теме позже.

среда, 18 марта 2015 г.

9 - Loading data from SQL databases

Kопипаст из pandas-cookbook.To connect to sqlite3, or MySQL, or PostgreSQL database: import sqlite3, MySQLdb, psycopg2 So far we've only talked about reading data from CSV files. That's a pretty common way to store data, but there are many others! Pandas can read from HTML, JSON, SQL, Excel (!!!), HDF5, Stata, and a few other things. In this chapter we'll talk about reading data from SQL databases.

You can read data from a SQL database using the pd.read_sql function. read_sql will automatically convert SQL column names to DataFrame column names.

read_sql takes 2 arguments: a SELECT statement, and a database connection object. This is great because it means you can read from any kind of SQL database -- it doesn't matter if it's MySQL, SQLite, PostgreSQL, or something else. This example reads from a SQLite database, but any other database would work the same way.

8.1 Parsing Unix timestamps (atime = 1387295797 ctime=1367633260)

Kопипаст из pandas-cookbook. Секунды эпохи переводятся сначала popcon['atime'].astype(int), а потом преобразуем целые в datetime pd.to_datetime(popcon['atime'], unit='s')
It's not obvious how to deal with Unix timestamps in pandas -- it took me quite a while to figure this out. The file we're using here is a popularity-contest file I found on my system at /var/log/popularity-contest. Here's an explanation of how this file works. I'm going to hope that nothing in it is sensitive :)

вторник, 17 марта 2015 г.

7 - Cleaning up messy data (сортировка и фильтрация в строках Zip кодов)

Kопипаст из pandas-cookbook. Чтобы найти "мусор" сначала используем .unique(), для числовых данных можно строить гистограммы. В сводной таблице NYC обращений в службу 311 данные об инцендентах во всех штатах.
Главное, решить, что делать - убирать или изменять (пропущенные данные, дефисы, длинные строки...). Вот пример чистки по содержанию столбца requests['Incident Zip'].str.contains('-').fillna(False), .sort('Incident Zip'), zips.str.startswith('0') | zips.str.startswith('1'), zips.notnull()
One of the main problems with messy data is: how do you know if it's messy or not? We're going to use the NYC 311 service request dataset again here, since it's big and a bit unwieldy.

6 - String Operations- Which month was the snowiest (снег и температура в 2012 году)

Kопипаст из pandas-cookbook. Таблица погоды за 2012 год из предыдущей (пятой), фильтруем по слову в столбце contains('Snow'), строим димграмму снегопадов за год, затем при помощи resample() находим сренемесячные медианы температуры и объединяем в красивые диаграммы снегопады и температутру.
You'll see that the 'Weather' column has a text description of the weather that was going on each hour. We'll assume it's snowing if the text description contains "Snow"... pandas provides vectorized string functions, to make it easy to operate on columns containing text. There are some great examples in the documentation.

понедельник, 16 марта 2015 г.

5 - Combining dataframes and scraping Canadian weather data

Kопипаст из pandas-cookbook. Исследуем погоду в Канаде, дабы потом определить, процент велосипедистов-маньяков, катающихся в дождь. Из таблицы 2012 года вырезаем март, строим график температуры, потом строим таблицу марта с несколькорми прарматрами (влажность, ветер...). Потом убираем оттуда лишние столбцы (день, месяц..., поскольку есть столбец в формате даты). Строим осредненную (за март) дневную диаграмму температуры по часам... Потом собираем все данные за год concat(data_by_month)

By the end of this chapter, we're going to have downloaded all of Canada's weather data for 2012, and saved it to a CSV. We'll do this by downloading it one month at a time, and then combining all the months together. Here's the temperature every hour for 2012!

4.1 Adding a 'weekday' column to our dataframe (Monthreal Berry bikepath table)

Продолжаем копипаст из pandas-cookbook. Возвращаемся к исследованию велодомаршрута на улице Berri. Здесь за день проезжает несколько тысяч велосипедистов. Сгруппируем их по дняям недели weekday_counts, aggregate(sum)
Okay! We're going back to our bike path dataset here. I live in Montreal, and I was curious about whether we're more of a commuter city or a biking-for-fun city -- do people bike more on weekends, or on weekdays?

3.1 Selecting only noise complaints (самый шумный - Манхеттен)

Продолжаем копипаст из pandas-cookbook. Фильтруем шум на тротуарах сначала в Бруклине, а потом во всех районах. Отвлекаемся на то чтобы получить NumPy array...
I'd like to know which borough has the most noise complaints. First, we'll take a look at the data to see what it looks like... huge ugly table :)

2 - Selecting data & finding the most common complaint type (Жалобы NYC Open Data)

Продолжаем копипаст из pandas-cookbook. На что большее всего жалуются в разных районах Нью-Йорка. Используем .value_counts()
We're going to use a new dataset here, to demonstrate how to deal with larger datasets. This is a subset of the of 311 service requests from NYC Open Data.

воскресенье, 15 марта 2015 г.

1.1 Reading data from a csv file (Пример с велосипедистами в Монреале)

Это копипаст из pandas-cookbook, поскольку мне категорически не понравилось форматирование на nbViewer.
You can read data from a CSV file using the read_csv function. By default, it assumes that the fields are comma-separated.
We're going to be looking some cyclist data from Montréal. Here's the original page (in French), but it's already included in this repository.
We're using the data from 2012. This dataset is a list of how many people were on 7 different bike paths in Montreal, each day.

0. Введение к Pandas-cookbook: A quick tour of IPython Notebook (копипаст)

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

суббота, 14 марта 2015 г.

Ссылки для для просмотра в nbviewer подборки GaelVaroquaux/sklearn_pandas_tutorial/tree/master/rendered_notebooks и еще весь EuroSciPy 2014

На EuroScipy 2014 tutorial: Introduction to predictive analytics with pandas and scikit-learn были объединены материалы из мануалов EuroScipy 2013 о Pandas и scikit-learn. Надо понять, как это все развивается. Здесь ссылки на все видео EuroSciPy 2014, сервис ACIS (хороший пример), из репозиториев EuroScipy 2014 tutorial: Introduction to predictive analytics with pandas and scikit-learn, Pandas, Sklearn-pandas

Все ссылки к примерам из Pandas-cookbook

Нет, этот пост не дополнения к "Cookbook" из документации. Здесь ссылки на 9 частей руководства github/jvns/pandas-cookbook для просмотра в nbviewer. При первом прочтении я нашел здесь множество приемов. Сначала хотел все пересмотреть и добавить свои комментарии, но быстро понял, что тогда я этот пост никогда не закончу. Так что здесь только краткие оригинальные комментарии, а мои, надеюсь, появятся в комментариях к посту.

четверг, 12 марта 2015 г.

Я увяз в pandas-cookbook вместо того, чтобы писать свой код. Далее используем GitHub+Nbviewer

Пост, в котором я сначала пытаюсь объединить несколько разных приемов для экспресс-анализа данных (парсинг- обработка таблиц - разведочный анализ данных). Для парсинга я предполагал использовать requests + lxml. Но оказалось, что Pandas загружкет csv из WWW не хуже, чем с локального диска. А для короткого фрагмента (например, оглавления раздела) проще использовать копипаст тегов. Здесь пример того, как я увяз в разнородных мелких вопросах, поскольку начал изучать приемы построения (масштабирования) диаграмм ('figure.figsize')... форматирование таблиц (например, display.max_columns')

Далее будем целенаправленно искать практикумы на GitHub+Nbviewer

В плане марта блистательная SciKit-learn, а текучка заставляет тратить время на занудливого работягу Pandas... не забыть про IBM

Потому здесь хочу обратить внимание на две статьи с ibm.com, одан из них "Использование языка Python, пакета SciKit и средств классификации текста для профилирования поведения клиентов", а во второй описан пример работы с Natural Language Toolkit (NLTK). Посокольку я уже скопировал репозиторий sklearn_scipy2013.git, а там оказалось около 20-ти мануалов..., то полагаю, что могу просто забыть про эти две скромные статьи от IBM. Здесь ссылки на них и... описание репозитория sklearn_scipy2013.git

среда, 11 марта 2015 г.

Pandas - Concatenating Along an Axis. Готовимся сцепить десяток csv-файлов в один

Соответствующий раздел в "Python for data analysis" начинается с примеров из Numpy. Применительно к таблицам (и объектам DataFrame), конкатенция - это добавление к существующей таблице строк или столбцов второй таблицы. Типичная задача, которую я хочу научиться решать: в папке есть однотипные таблицы (котрые я напарсил в разные файлы), как из них сделать одну таблицу? Возможны варианты с формой таблиц, добавлением столбцов-параметров..., но здесь я хочу понять, как лучше осуществлять конкатенцию. Потому начинаю с примера, найденного на nbviewer.ipython.org, а примеры конкатенции в конце поста.

How to use merge DataFrames in Pandas (Python)

Команда merge может быть использована с опциями ключевого поля: left, right, inner, out, ... можно назначать разные ключевые поля в разных таблицах, назначать несколько колючевых полей в каждой таблице, использовать индексы в качестве ключей... Основные примеры взяты из книги "Python for data analysis"

пятница, 6 марта 2015 г.

Linear Algebra and WiKi LaTeX/Mathematics in IPython Notebook

Здесь три вида сылок: 1) справочники по операциям над матрицами, 2) справочник по NUmpy, 3) Справочники по LaTeX/Mathematics. Здесь есть примеры LaTeX
Все они мне понадобятся при кодировании и документировании матричных операций. Здесь еще есть видео со ссылкой на старницу nbviewer.ipython.org, но на ней еще более общие примеры: "Markdown code for IPython Notebook"

четверг, 5 марта 2015 г.

Algorithm cheat-sheet from scikit-learn.org and Intro to scikit-learn (I), SciPy2013 Tutorial, Part 1 - 3

Рядом с видео ссылка на картинку с сайта с бинарной схемой выбора алгоритма, и ссылка на список примеров. Всего три часовых видео (и еще 30) со SciPy2013. ССылка на GitHub репозиторий с примерами, которые я в следующих постах собираюсь опробовать.

среда, 4 марта 2015 г.

Maсhine learning, Data science. Все ссылки на видеокурсы и учебники

Сначала полтора десятка ссылок от меня, вводная лекция Воронцова и весь видеокурс в ШАД и книги на русском по теме "Машинное обучение", Ссылки на великолепные pdf книги "An Introduction to Statistical Learning" "The Elements of Statistical Learning", ...статьи и мануал по Scikit-Learn ... и здесь же отличная подборка сылок от Igor Subbotin

воскресенье, 1 марта 2015 г.

Stochastic model from Pandas и "Statistical Data Modeling" (часть 4-3)

Rather than model the binary outcome explicitly, it makes sense instead to model the probability of death or survival in a stochastic model. Probabilities are measured on a continuous [0,1] scale, which may be more amenable for prediction using a regression line. We need to consider a different probability model for this exerciese however; let's consider the Bernoulli distribution as a generative model for our data:


$$f(y|p) = p^{y} (1-p)^{1-y}$$

Regression models from Pandas и "Statistical Data Modeling" (часть 4-2)

Здесь примеры к видео из предыдущего поста, начиная с темы регрессии..., включая нелинейную... bootstraping...
A general, primary goal of many statistical data analysis tasks is to relate the influence of one variable on another. For example, we may wish to know how different medical interventions influence the incidence or duration of disease, or perhaps a how baseball player's performance varies as a function of age.

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

Pandas и "Statistical Data Modeling" и примеры Latex записи (часть 4-1)

Здесь графики и формулы для "graduate-level statistics courses". Подгонка распределений, принцип максимума правдоподобия, ... Некоторые подходы в примерах распределений сомнительны, вспоминать формулы вряд ли понадобится в ближайшие годы... Но здесь большое количесвто примеров кода для построения диаграмм и примеры (latex) дифференциальных уравнений

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

Третья часть курса Pandas "Plotting and Visualization" (часть 3)

Здесь примеры только с matplotlib. Зато весь классический набор для начинающих: графики серий, диаграммы столбцов, гистограммы, боксы, диаграммы рассеяния... и все это в разных вариантах (например, несколько диаграмм на одном поле и на разных...). Получается бедновато. Но в конце есть ссылки на GofG и примеры Trellis Plots

среда, 25 февраля 2015 г.

Копипаст второй части о подготовке данных "Data Wrangling with Pandas" (часть 2)

Вот заголовки и ключевые слова для поиска: Date/Time, log.histogram, datetime.strptime(segments.st_time.ix[0], '%m/%d/%y %H:%M') Merging, Concatenation( binding or stacking), Reshaping DataFrame objects, Pivoting, Value replacement Inidcator variables (design matrix), Discretization Permutation and sampling, Data aggregation and GroupBy operations, split-apply-combine operation, Apply

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

Видео и примеры к "Introduction to Pandas" (часть 1)

Здесь сотня примеров работы с сериями и фреймами, иерархическая индексация, сортировка, ранжирование, пропуски, считывание\запись из\в файл, суммы, средние, корреляции. Для примеров использовались "таблицы бактерий" и "бейсбола"

воскресенье, 22 февраля 2015 г.

Здесь примеры кода для методов, которые я использую для чистки строк и строк - элементов списка

Вот большая часть примеров: filter(None, infi.split(' ')) map(str.strip, finfi) ' '.join(mystring.split()) mystring.replace('mess','',[n,m]) str.translate(table[, deletechars]) Это только те, которые я использовал. Но есть еще много других возможностей. Их надо искать по ссылкам на документацию... Часть сылок не наверху (как обычно), а ниже в тексте...

суббота, 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...

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

Читам 5 отличных статей про subprocess Python и смотрим три видеоролика

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

среда, 11 февраля 2015 г.

Первый рабочий релиз carmailPrice с результатами парсинга

Спайдер выскреб заготовленые страницы в моем ноутбуке и поместил все в таблицу (3727 строки). Кто бы мог подумать, что у нас продавалось такое количество модификаций автомобилей. Здесь плохоочищеный, но работающий код, и ссылки на итоговые таблицы результатов.

Найти все имена файлов в папке при помощи os.listdir(path)

Взять все (однотипные) файлы в папке, да и конвертировать. Как их перебирать? Можно все (вместе с содержимым файлов) загнать в словарь... А молжно проще... Здесь фрагменты кода с os.listdir(path) и итерации по файлам в папке

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

Слишком "подробно" заданы пути в XPath запросах carmailPrice? Нет! Надо было обработать ошибки

Когда спайдер выдает ошибки при парсинге 2/3 страниц, то начинаются упреки и подозрения. Мне удалось "поймать" паука-халтурщика на странице Daewoo, здесь я сравниваю его поведение на страницах BMW и Daewoo. Трачу на это целый день. Оказалось, что я просто ошибся с "диагнозом". Не на всех страницах модификаций есть ссылки на цены. Спайдер выдавал ошибки, но продолжал работу. Оказалось, что при этом он может пропучкать сразу десятки страниц. Но целый день я искал отличия в коде страниц, здесь фрагменты кода и запросы XPath

воскресенье, 8 февраля 2015 г.

Инсталляция IDE cloud9 в Kali - удачная проба "Git clone" и "npm install"

Мне срочно нужен был редактор для изучения nodejs. Решил, что написанный на nodejs редактор - это двойная выгода. Здесь просто лог моих действий. Все делал по инструкции и скопировал выходной поток консоли. Дабы был пример "правильной" работы npm

Бесплатные редакторы для Nodejs и лог неудачной установки Scripted в Kali (Debian)

Неудачной потому, что это мои первые шаги с nodejs. Поэтому ошибки здесь (полагаю) детские. О них есть записи в логах. В следующем посте я покажу лог удачной установки другого редактора, точнее IDE cloud9. Буду пока пользоваться им. Сегодня мне нужен любой редактор с подсказкам, чтобы повторять примеры из учебного курса.

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

Apt-get -опять "сломана" база приложений, dpkg - снова нужно обновить flashplugin-nonfree...

Я нахожу свой предыдущий пост на эту тему и повторяю здесь те же шаги. Пора, однако, разобраться почему у меня постянно вылетает Apt-get. Потому здесь логи. Но надо пауков дописывать срочно. Так что решение отложим "на потом".

Installing Node.Js and npm in kali linux - со второй попытки успешно

Поначалу попытка установить пакеты "между делом" не удалась. Здесь логи и хорошие ссылки. Есть даже скрипт установки. И есть видео от октября 2014г. Его то я и использовал. И между делом открыл полезный интерфейс apt-get install gdebi

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

Как вырезать таблицы из текстового файла, который получился после pdftotext

Открываем текстовый файл и формируем списки (списков) только из отфильтрованных строк (string-methods). Потом эти lists записываем в csv файл. Для записи в файл используем два вложенных цикла по строкам из столбцам... см. In [71] Поскольку эксперименты с примерами из библиотеки csv не удались. Когда буду собирать рабочий код надо не забыть убрать лишние символы (звездочки и скобку) в названиях. В конце тот самый текстовый файл, из которого все напарсено. А перед ним варианты готовых csv файлов.

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

Справка, ссылки и первая проба конвертера pdf2htmlEX

Здесь я устанавливаю запускаю статический экзешник pdf2htmlEX и получаю красивый html файл, но опять каждая ячейка таблицы - один div и никакой цветовой иерархии штано дивов. Получается, что проще использовать pdftotext (он у меня в наборе Program Files/Xpdf).
In one word, pdf2htmlEX is a tool that Convert PDF to HTML without losing text or format, bases on poppler, FontForge , and jQuery.

Документация к Xpdf (pdffonts.txt pdfinfo.txt и все остальные)

В своих изыскания философского камня для конвертации pdf я сначала нашел xpdf, потом Poppler, потом pdf2htmlEX. В последней используется Poppler, сам Poppler is a PDF rendering library based on the xpdf-3.0 code base...
И все конвертеры в html решают задачи позициирования блоков b сохранения замены\шрифтов, дабы сконвертированная страничка выглядела прилично. И мне оно надо? Нет!
Мне нужно парсить страничку, а не публиковать. Так что изучать надо pdftotext. Потому здесь я распечатал еще pdftotext.txt xpdfrc.txt - это справка по конфигурационному файлу, ... и даже xpdf.txt (xpdf не поддерживается в Windows)

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

Ссылки на конвертеры pdf файлов в текст и html

Как парсить pdf файлы? Здесь ссылки на десктопные конвертеры и библиотеки. Есть даже список List of PDF software, но главные надежды я возлагаю на Xpdf, только что скачал и буду пробовать под Windows. Здесь же и справочники pdftotext.txt pdftohtml.txt

Здесь и первые эксперименты с pdftotext и pdftohtml. И чудный html файл после pdftohtml.

суббота, 31 января 2015 г.

Особенности краулера carMailPrice Scrapy и все ссылки для написания Спайдера

Код для этого краулера я писал урывками. Надо было понять Rule(LinkExtractor... Потом пришлось делать паузы для срочных заказов... Работа прерывалась и для того, чтобы освоить RE, XPath. В целом я доволен тем, наскоько быстро я разобрался с отладкой спайдера, поскольку пришлось использовать разнообразные и новые для меня навыки. В этом посте код паука и мои заметки по поводу итераций внутри функции parse_item(self, response)

вторник, 27 января 2015 г.

Ссылки для изучения CasperJS, PhantomJS and SlimerJS и статья Screen Scraping with Node.js

Стараюсь не забывать про NodeJS, node-webkit... пока времени хватает только на то, чтобы их установить и раз в три месяца пытаться лихорадочно что-то попробовать. Может быть проблема в том, что я не нашел "правильной" книги для того, чтобы быстро освоить азы. Может быть, попробовать освоить не frameworks, а браузер? Но времени все равно нет, потому здесь (пока) только набор ссылок на очень хорошие статьи. CasperJS is a navigation scripting & testing utility for PhantomJS and SlimerJS written in Javascript

Начинаем боевой краулер учебного проекта carmailPrice с освоения Rules

Здесь черновик кода спайдера с разными (закоментированными) вариантами Rules Linkextractor. Регулярные выражения в правилах и все остальное я далее изменил. Здесь записано, как я "вспоминал" свжеполученные навыки двухнедельной давности:
"Две недели назад я написал краулер-полуфабрикат. Потом неделя ушла на упражнения с XPath и RE, потом неожидано "образовалась" другая срочная работа..."

среда, 21 января 2015 г.

Первый вариант шаблона для подбора и проверки XPath запросов и команды для нормализации строк

На примере carmailPrice. Здесь мы пробуем XPath запросы и тут же чистим полученные списки от лишних проблеов и переносов строк. Возвращаемся к задаче парсинга страницы bmw_mail. Сначала "фотографируем" страницу, потом копипастим сюда фрагмент кода, потом подбираем XPath запросы, потом формируем цепочки для чистки текстовых строк ' '.join(), replace(), split(), strip() эту чистку гордо именуем нормализацией. Работа муторная, но пост наглядный... Потому что с lxml html.fromstring(In[2]) ... а вссылках - примеры кода для "remove ALL whitespace from String"

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

Самый краткий справочник по "простейшему" XPath и полсотни примеров

Сделан по двум книгам. "Самоучитель XML" и "XSLT сборник рецептов". Здесь я "адаптировал" почти все примеры для HTML и выполнил их, используя библиотеку lxml. Не хватило терпения на примеры фильтров, я просто скопировал их из книги...

пятница, 16 января 2015 г.

Пробуем сделать html-парсер из из IPyNotebook по рецептам из статьи "HTML Scraping"

Понравилась идея о том, чтобы использовать IPython Notebook для настройки XPath запросов. Это можно делать при помощи объектов lxml, requests. Здесь я успешно опробовал работу связки и распечатал справки по объектам. Нашел ссылки на справочники, после беглого прочтения пришел к выводу, что обе библиотеки не только похожи на объекты Scrapy, но могут быть использованы для экспресс- скрапинга.

четверг, 15 января 2015 г.

Вспоминаем классы из модуля display, HTML, In[], Javascript

После того, как я понял, что IPyNotebook можно использовать, как минипарсер, пришлось вспоминать классы из модуля display и %%html. Здесь тривиальные примеры с распечатками и переменными вида HTML(In[5]). Есть распечатки из документайции вида dir(display)... dir(Javascript)
Однако нет примеров по Javascript

среда, 14 января 2015 г.

Свалка удачных маленьких экспериментов, результаты которых я собираюсь часто использовать

Здесь я хотел подготовить код для краулера bmw_mail, не удержался и опробовал сразу несколько разных идей: import HTML, import HTML, ''.join(tree.xpath('//span[@class="rank"]/i/text()')), codecs, lxml, requests, .replace('\n','').encode('utf8'), print ''.join(this_link).encode('utf8')
Получилось все, но этот пост не тянет даже на черновик. Здесь просто сумбур из фрагманты кода, но зато я здесь изобрел сразу несколько велосипедов.

вторник, 13 января 2015 г.

Делаем Crawler`а из простого (basic) паука carmailPrice Scrapy

Это продолжение поста "Срочно пишем...". Теперь вместо списка спарсенных вручную ссылок настроим краулера при помощи Rule(lLinkExtractor(allow=r'Items/') ... ) и будем следовать по сылкам на странице. Однако, здесь мы вырежем только по три ссылки со страницы. Чтобы вырезать больше надо знать оси XPath. Об этом потом
Нам понадобится знание регулярных выражений. В предыдущем посте краткий справочник по RE.

Regular Expressions Python ... и мой перечень главных команд

Конспект первой части доументации Python по теме "Регулярные выражения" есть перевод на Хабре. На вторую часть терпения не хватило, но надо помнить, что я прочитал HowTo (а есть еще аполный справочник), и то, что я не включил сюда такие мощные функции, как "Splitting Strings", "Search and Replace"

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

Бессонница, Debian Apt-get, dpkg... step by step и стратегия обновлений Linux

Бессоница не способствует сосредоточению. Я включил Kali компьютер в 4 утра... он предложил мне обновить 800mb... и, естественно, произошел сбой... И тут я "вспомнил все"... Если команда apt-get upgrade flashplugin-no не находит пакет flashplugin-no, то она предлагает обновить всё... соглашаться нельзя! Выводы:
1. Обновлять только используемые пакеты поштучно, но каждую неделю!!!
2. Раз в год переустанававливать всю сборку.
3. Все файлы пользователей хранить на отдельном диске\разделе.
4. Посещать askubuntu.com не реже, чем stackoverflow

воскресенье, 11 января 2015 г.

Подборка примеров Scrapy LinkExtractor, Rules для последующих практикумов

Здесь скопированы десятка полтора фрагментов кода с примерами Scrapy LinkExtractor, Rules Больше двух правил в одном примере мне найти не удалось. Однако, надеюсь, что примеры регулярных выражений здесь на все случай паучьей жизни.

суббота, 10 января 2015 г.

Пожарное обновление Scrapy с Conda и PIP

Зубы надо чистить два раза в день, а проверять обновления раз в неделю. К такому выводу я пришел после очередного вынужденного обновления модуля SCrаpy.
Решил записать эти рутинные действия, чтобы научиться выполнять эти операции "на автомате". Пока я еще не понимаю, как лучше организовать процесс "ухода" за "инфраструктурой" (Windows,Linux, Python...

четверг, 8 января 2015 г.

Как подключить системный прокси. In Windows 7 proxycfg.exe has been replaced with the netsh command

Почему "не хочет" работать команда set http_proxy. Именно поэтому. Здесь ссылки, инструкции и примеры для netsh.exe winhttp import proxy source=ie (начинать надо с show proxy). Прокси в Windows можно настроить через WinINET, WinHTTP, использовать WAP - протокол автоматической настройки прокси, или тупо изменить запись в реестре (скриптом).
Здесь ссылки на все случаи проксижизни... и ghbvths команд netsh.

вторник, 6 января 2015 г.

Python webbrowser - можно ли скачивать файлы в дефолтный браузер, а потом сохранять?

Это паллиативный вариант? Пока не освоен jsnode? Надо ли ожидать, что появится новая библиотека с браузером Python+Javascript.Поэтому здесь есть еще ссылка на CEF Python. А начинается все с примера кода для открытия браузера и распечатки документации dir(),help()
Первое впечатление разочаровывающее..., но оно же и поверхностное

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

Пример использования Python subprocess для выполнения команд консоли Windows

Набрел на этот модуль когда задался вопросом: "Хорошо бы перехватывать значения констант из пространтства имен экземпляра консоли"... На эту библиотеку надо обратить внимание, потому что:
This module allows you to spawn processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several other, older modules and functions, like: os.system os.spawn os.popen popen2. commands.

Фрагменты документации из OS (Python)

Здесь можно посмотреть распечатки dir() help() модуля os, os.sys, os.system, os.path ... Библиотека разветвленная, а времени на нее никогда не хватает. Так что просматривать этот пост надо бы при каждом удобном сучае.

воскресенье, 4 января 2015 г.

Работна над ошибкой http_proxy="http://127.0.0.1:8118" довела до реестра Windows Registry

Глупости мы делаем, когда спешим или думаем о другом. Когда неопытный кодер обнаруживает в "продакшене" ошибку, то надо сначала хладнокровно следовать правилу: НЕ ДУМАЙ, а тупо проверь, подключено ли питание к твоему компьютеру.

Копипаст примеров и фрагментов из документации urllib Python

Снова читаю urllib, снова не хватает времени, потому делаю заготовки для последующего воспроизведения примеров из документации. Здесь же и ссылки на каждый раздел и пример из документации

суббота, 3 января 2015 г.

Cтроковыe и встроенные функций Python. Ссылки и примеры для чистки спарсенных фрагментов. Регулярные выражения - ссылки на хороший мануал

После парсинга html-страниц появляется и мусор. Например, как убрать ненужные переносы строк, объединить текстовые фрагменты списков..., сначала надо пробовать "простейших" (быстрые встроенные функции и ...типы...) join(),map(), replace(),str.rstrip()... а уж потом пускаться во все тяжкие с regexp. Поэтому здесь примеры с простейшими и только ссылки для изучения regexp.
Две части пособия с Хабра, два онлайн сервиса отладки, Справочник Python, ходовые примеры от Гугла
Some people, when confronted with a problem, think «I know, I'll use regular expressions.» Now they have two problems.

Срочно пишем простого паука carmailPrice со scrapy genspider для того, чтобы увековечить цены на все автомобили

Здесь я повторяю процессы startproject, genspider, ... потом пишем паука со списком начальных URI, добавляем в него def parse(...) с итератором по ссылкам на html-странице. здесь и список ссылок. Вариант работающий на локальном компьютере, но промежуточный. Понадобится, как учебный пример...

пятница, 2 января 2015 г.

Готовим Xpath Запросы для страницы cars.mail.ru/catalog/bmw/ с помощью Xpath helper chrome

Здесь запросы для трех полей текста ссылок BMW X6 кроссовер (37 значений), значения @href /catalog/bmw/m3/f30/sedan/(37 значений), и поля цены 4121000 (34 значения)... Две красивых картинки и фрагменты кода страницы.
Этот пост использовался для подбора и тестирования XPath запросов.