Хорошо было бы иметь методику анализа поисковых запросов, над ней еще предстоит поразмышлять, а здесь я попробовал не расчитывать, а сразу строить нормировки (на графиках процессов), диаграммы рассеяния и коэффициенты корреляции. Получилась вот такая последовтельность:
Копипастим таблицу "История запрсов" 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)
Рассчитываем коэффициенты корреляции
Работа с временными файлами в Pandas - ну... не нравится мне все это
Пробуем сделать html-парсер из из IPyNotebook по рецептам из статьи "HTML Scraping"
Методы Pandas для работы со столбцами
Вот он, приемлемый вариант для конвертации .astype(int))
Using Pandas for Analyzing Data - Visualization
pandas visualization
matplotlib.org/api
String wildcard in pandas on replace function
example of statsmodels.api using a regression line of prior observations. Actually works surprisingly well..
import os
import pandas as pd
import numpy as np
from cStringIO import StringIO
%matplotlib inline
Переменные posobie_c и btruda_c= определены в приложении в конце поста.
f = pd.read_csv(StringIO(posobie_c),sep=" ", header=0, warn_bad_lines=False, error_bad_lines=False)
f.info(verbose=True, buf=None, max_cols=None, memory_usage=True, null_counts=True)
print(f.nrel.str.replace(',','.').astype('float'))
Как поменять формат вывода серии на печать? Сразу не вспомню. Перепроисвоим столбец и проверим первое значение.
f.nrel = f.nrel.str.replace(',','.').astype('float')
f.nrel[0]
Все, как и должно быть. Вспомним еще одну команду проверки
f.dtypes
f.set_index('Period')
f.set_index('Period').nabs.plot()
f.plot(x='Period', y='nabs', rot=90)
f.Period.str.replace(r'.+ - ','').head()
f.Period.str.split(' ').str[2].head()
f.Period = f.Period.str.split(' ').str[2]
f.plot(kind='scatter', x='nrel', y='nabs')
f2 = pd.read_csv(StringIO(btruda_c),sep=" ", header=0, warn_bad_lines=False, error_bad_lines=False)
f['nabs2'] = f2.nabs
f.tail()
f.plot(kind='scatter', x='nabs2', y='nabs')
f.set_index('Period').nabs.plot(rot=90)
f.set_index('Period').nabs2.plot(secondary_y=True, style='g')
f.corr()
f.nabs.corr(f.nabs2)
Приложения (история запросов в поиске Яндекс "пособие бо безработице", "биржа труда")¶
posobie_c="""
Period nabs nrel
01.06.2013 - 30.06.2013 35178 0,000008156266
01.07.2013 - 31.07.2013 35047 0,000007969618
01.08.2013 - 31.08.2013 36811 0,000008005167
01.09.2013 - 30.09.2013 41856 0,000008064712
01.10.2013 - 31.10.2013 52928 0,000008757891
01.11.2013 - 30.11.2013 54755 0,000009379925
01.12.2013 - 31.12.2013 50836 0,000008467636
01.01.2014 - 31.01.2014 63841 0,000009261577
01.02.2014 - 28.02.2014 56324 0,000009269357
01.03.2014 - 31.03.2014 60949 0,000008659490
01.04.2014 - 30.04.2014 58188 0,000009122421
01.05.2014 - 31.05.2014 48093 0,000007926751
01.07.2014 - 31.07.2014 33497 0,000006679964
01.08.2014 - 31.08.2014 35399 0,000006342492
01.09.2014 - 30.09.2014 46690 0,000007564709
01.10.2014 - 31.10.2014 61267 0,000008948300
01.11.2014 - 30.11.2014 62117 0,000009565381
01.12.2014 - 31.12.2014 72365 0,000010408853
01.01.2015 - 31.01.2015 59457 0,000008672886
01.02.2015 - 28.02.2015 78941 0,000013038985
01.03.2015 - 31.03.2015 84880 0,000012175793
01.04.2015 - 30.04.2015 79680 0,000011531621
01.05.2015 - 31.05.2015 61639 0,000009679184
"""
btruda_c="""
Period nabs nrel
01.06.2013 - 30.06.2013 140799 0,000032645237
01.07.2013 - 31.07.2013 159550 0,000036281352
01.08.2013 - 31.08.2013 153368 0,000033352436
01.09.2013 - 30.09.2013 180925 0,000034860187
01.10.2013 - 31.10.2013 200007 0,000033094761
01.11.2013 - 30.11.2013 190015 0,000032550934
01.12.2013 - 31.12.2013 157296 0,000026200433
01.01.2014 - 31.01.2014 252579 0,000036642279
01.02.2014 - 28.02.2014 246445 0,000040557963
01.03.2014 - 31.03.2014 244505 0,000034738693
01.04.2014 - 30.04.2014 210792 0,000033046905
01.05.2014 - 31.05.2014 176971 0,000029168592
01.06.2014 - 30.06.2014 185315 0,000033568622
01.07.2014 - 31.07.2014 178733 0,000035642892
01.08.2014 - 31.08.2014 194308 0,000034814459
01.09.2014 - 30.09.2014 225552 0,000036543913
01.10.2014 - 31.10.2014 263038 0,000038417795
01.11.2014 - 30.11.2014 259051 0,000039891198
01.12.2014 - 31.12.2014 248715 0,000035774725
01.01.2015 - 31.01.2015 242319 0,000035346637
01.02.2015 - 28.02.2015 357839 0,000059105628
01.03.2015 - 31.03.2015 377665 0,000054174964
01.04.2015 - 30.04.2015 332101 0,000048063039
01.05.2015 - 31.05.2015 254062 0,000039895403
"""
Посты чуть ниже также могут вас заинтересовать
Продвижение магазина под ключ
ОтветитьУдалить