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

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