Стратегия SEO

Основные функции для анализа данных SEO

Обучение кодированию на Python, JavaScript или другом языке программирования имеет целый ряд преимуществ, включая возможность работать с большими наборами данных и автоматизировать повторяющиеся задачи.

Но, несмотря на преимущества, многие SEO-специалисты еще не совершили переход — и я полностью понимаю, почему! Это не обязательный навык для SEO, а мы все занятые люди.

Если у вас мало времени, и вы уже знаете, как выполнить задачу в Excel или Google Таблицах, то изменение тактики может показаться вам изобретением велосипеда.

Когда я впервые начал программировать, я изначально использовал Python только для задач, которые не мог выполнить в Excel, и потребовалось несколько лет, чтобы дойти до того, что он фактически стал моим выбором для обработки данных.

Оглядываясь назад, я невероятно рад, что упорствовал, но временами это был разочаровывающий опыт, когда я потратил много часов на сканирование потоков в Stack Overflow.

Этот пост предназначен для того, чтобы избавить других SEO-специалистов от той же участи.



В нем мы рассмотрим эквиваленты Python наиболее часто используемых формул и функций Excel для анализа данных SEO — все они доступны в записной книжке Google Colab, ссылка на которую приведена в сводке.

В частности, вы узнаете эквиваленты:

  • ПРОСТО.
  • Удаление дубликатов.
  • Текст в столбцы.
  • ПОИСК/НАЙТИ.
  • ОБЪЕДИНИТЬ.
  • Найти и заменить.
  • ЛЕВЫЙ/СРЕДНИЙ/ПРАВЫЙ.
  • ЕСЛИ.
  • ИФС.
  • ВПР.
  • СЧЁТЕСЛИ/СУММЕСЛИ/СРЕДНЕСЛИ.
  • Сводные таблицы.

Удивительно, но для выполнения всего этого мы в первую очередь будем использовать единственную библиотеку — Pandas — с небольшой помощью местами от ее старшего брата, NumPy.

Предпосылки

Для краткости, есть несколько вещей, которые мы не будем сегодня освещать, в том числе:

  • Установка Питона.
  • Основные Pandas, такие как импорт CSV, фильтрация и предварительный просмотр кадров данных.

Если вы не уверены в чем-либо из этого, то руководство Гамлета по анализу данных Python для SEO является идеальным учебником для начинающих.

А теперь, без лишних слов, приступим.

ПРОСТО

LEN обеспечивает подсчет количества символов в текстовой строке.

В частности, для SEO распространенным вариантом использования является измерение длины тегов заголовков или метаописаний, чтобы определить, будут ли они усечены в результатах поиска.

В Excel, если мы хотим подсчитать вторую ячейку столбца A, мы должны ввести:

= ТОЛЬКО (A2) 
Формула LEN excelСкриншот из Microsoft Excel, ноябрь 2022 г.

Python не слишком отличается, так как мы можем полагаться на встроенную функцию len, которую можно комбинировать с loc[] Pandas для доступа к определенной строке данных в столбце:

len(df['Название'].loc[0]) 

В этом примере мы получаем длину первой строки в столбце «Заголовок» нашего фрейма данных.

len функция python
Скриншот VS Code, ноябрь 2022 г.

Однако определение длины ячейки не так уж полезно для SEO. Обычно мы хотим применить функцию ко всему столбцу!

В Excel это можно сделать, выбрав ячейку формулы в правом нижнем углу и либо перетащив ее вниз, либо дважды щелкнув.

При работе с кадром данных Pandas мы можем использовать str.len для вычисления длины строк в серии, а затем сохранять результаты в новом столбце:

df['Длина'] = df['Название'].str.len() 

Str.len — это «векторизованная» операция, предназначенная для одновременного применения к ряду значений. Мы будем широко использовать эти операции в этой статье, так как почти всегда они оказываются быстрее, чем цикл.

Другим распространенным применением LEN является его сочетание с SUBSTITUTE для подсчета количества слов в ячейке:

=ДЛСТР(ОТРЕЗАТЬ(A2))-ДЛСТР(ПОДСТАВИТЬ(A2," ",""))+1 

В Pandas мы можем добиться этого, объединив функции str.split и str.len вместе:

df['Нет.  Слова'] = df['Заголовок'].str.split().str.len() 

Позже мы рассмотрим str.split более подробно, но, по сути, мы разбиваем наши данные на основе пробелов в строке, а затем подсчитываем количество составных частей.

подсчет слов Python подсчетСкриншот из VS Code, ноябрь 2022 г.

Удаление дубликатов

Функция Excel «Удалить дубликаты» предоставляет простой способ удаления повторяющихся значений в наборе данных либо путем удаления полностью повторяющихся строк (когда выбраны все столбцы), либо путем удаления строк с одинаковыми значениями в определенных столбцах.

Excel удаляет дубликатыСкриншот из Microsoft Excel, ноябрь 2022 г.

В Pandas эту функциональность предоставляет drop_duplicates.

Чтобы удалить повторяющиеся строки в типе фрейма данных:

df.drop_duplicates (на месте = Истина) 

Чтобы удалить строки на основе дубликатов в единственном столбце, включите параметр подмножества:

df.drop_duplicates (подмножество = "столбец", inplace = True) 

Или укажите несколько столбцов в списке:

df.drop_duplicates (подмножество = ['столбец', 'столбец2'], inplace = True) 

Одно добавление выше, о котором стоит упомянуть, — это наличие параметра inplace. Включение inplace=True позволяет нам перезаписать существующий фрейм данных без необходимости создавать новый.

Конечно, бывают случаи, когда мы хотим сохранить необработанные данные. В этом случае мы можем назначить наш дедуплицированный фрейм данных другой переменной:

df2 = df.drop_duplicates (подмножество = "столбец") 

Текст в столбцы

Еще одна повседневная необходимость — функция «текст в столбцы», которую можно использовать для разделения текстовой строки на основе разделителя, такого как косая черта, запятая или пробел.

Например, разделение URL-адреса на его домен и отдельные подпапки.

Excel удаляет дубликатыСкриншот из Microsoft Excel, ноябрь 2022 г.

При работе с кадром данных мы можем использовать функцию str.split, которая создает список для каждой записи в серии. Это можно преобразовать в несколько столбцов, установив для параметра расширения значение True:

df['URL'].str.split(pat="/", expand=True) 
ул разделить PythonСкриншот из VS Code, ноябрь 2022 г.

Как это часто бывает, наши URL-адреса на изображении выше были разбиты на несогласованные столбцы, потому что они не содержат одинаковое количество папок.

Это может усложнить задачу, когда мы хотим сохранить наши данные в существующем фрейме данных.

Указание параметра n ограничивает количество разбиений, позволяя нам создать определенное количество столбцов:

df[['Домен', 'Папка1', 'Папка2', 'Папка3']] = df['URL'].str.split(pat="/", expand=True, n=3) 

Другой вариант — использовать pop для удаления вашего столбца из фрейма данных, выполнить разделение, а затем повторно добавить его с помощью функции соединения:

df = df.join(df.pop('Split').str.split(pat="/", expand=True)) 

Дублирование URL-адреса в новый столбец перед разделением позволяет нам сохранить полный URL-адрес. Затем мы можем переименовать новые столбцы: ?

df['Разделить'] = df['URL']

 df = df.join(df.pop('Split').str.split(pat="/", expand=True))

 df.rename (столбцы = {0: «Домен», 1: «Папка1», 2: «Папка2», 3: «Папка3», 4: «Параметр»}, inplace = True) 
Функции разделения всплывающих окон PythonСкриншот из VS Code, ноябрь 2022 г.

СЦЕПИТЬ

Функция CONCAT позволяет пользователям объединять несколько строк текста, например, при создании списка ключевых слов путем добавления различных модификаторов.

В этом случае мы добавляем «мужские» и пробелы в список типов продуктов в столбце А:

=СЦЕП($F$1," ",A2) 
 concat Excel
Скриншот из Microsoft Excel, ноябрь 2022 г.

Предполагая, что мы имеем дело со строками, того же можно добиться в Python с помощью арифметического оператора:

df['Combined] = 'mens' + ' ' + df['Keyword'] 

Или укажите несколько столбцов данных:

df['Combined'] = df['Subdomain'] + df['URL'] 
concat PythonСкриншот из VS Code, ноябрь 2022 г.

В Pandas есть специальная функция concat, но она более полезна при попытке объединить несколько фреймов данных с одними и теми же столбцами.

Например, если бы у нас было несколько экспортов из нашего любимого инструмента анализа ссылок:

df = pd.read_csv('data.csv')
 df2 = pd.read_csv('data2.csv')
 df3 = pd.read_csv('data3.csv')

 дфлист = [дф, дф2, дф3]

 df = pd.concat (dflist, ignore_index = True) 

ПОИСК/НАЙТИ

Формулы ПОИСК и НАЙТИ позволяют найти подстроку в текстовой строке.

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

=ISNUMBER(ПОИСК("искать это",A2) 
поиск по номеру ExcelСкриншот из Microsoft Excel, ноябрь 2022 г.

Разница между SEARCH и FIND заключается в том, что поиск чувствителен к регистру.

Эквивалентная функция Pandas, str.contains, по умолчанию чувствительна к регистру:

df['Journal'] = df['URL'].str.contains('engine', na=False) 

Нечувствительность к регистру можно включить, установив для параметра case значение False:

df['Journal'] = df['URL'].str.contains('engine', case=False, na=False) 

В любом случае включение na=False предотвратит возврат нулевых значений в логическом столбце.

Одним из огромных преимуществ использования Pandas здесь является то, что, в отличие от Excel, регулярное выражение изначально поддерживается этой функцией — как в таблицах Google через REGEXMATCH.

Объедините несколько подстрок в цепочку, используя символ вертикальной черты, также известный как оператор ИЛИ:

df['Журнал'] = df['URL'].str.contains('двигатель|поиск', na=False) 

Найти и заменить

Функция Excel «Найти и заменить» предоставляет простой способ индивидуальной или массовой замены одной подстроки на другую.

найти заменить ExcelСкриншот из Microsoft Excel, ноябрь 2022 г.

При обработке данных для SEO мы, скорее всего, выберем весь столбец и «Заменить все».

Формула ПОДСТАВИТЬ предоставляет здесь еще один вариант и полезна, если вы не хотите перезаписывать существующий столбец.

Например, мы можем изменить протокол URL-адреса с HTTP на HTTPS или удалить его, заменив ничем.

При работе с фреймами данных в Python мы можем использовать str.replace:

df['URL'] = df['URL'].str.replace(' ' 

Или же:

df['URL'] = df['URL'].str.replace(' '') # заменить ничем 

Опять же, в отличие от Excel, можно использовать регулярное выражение — например, REGEXREPLACE Google Sheets:

df['URL'] = df['URL'].str.replace(' '') 

В качестве альтернативы, если вы хотите заменить несколько подстрок разными значениями, вы можете использовать метод замены Python и предоставить список.

Это избавляет вас от необходимости связывать несколько функций str.replace:

df['URL'] = df['URL'].replace([' ' [' ' регулярное выражение = True) 

ЛЕВЫЙ/СРЕДНИЙ/ПРАВЫЙ

Для извлечения подстроки в Excel требуется использование функций ЛЕВАЯ, СРЕДНЯЯ или ПРАВАЯ, в зависимости от того, где находится подстрока в ячейке.

Допустим, мы хотим извлечь корневой домен и субдомен из URL-адреса:

=СРЕДН(A2,НАЙТИ(":",A2,4)+3,НАЙТИ("/",A2,9)-НАЙТИ(":",A2,4)-3) 
слева посередине справа ExcelСкриншот из Microsoft Excel, ноябрь 2022 г.

Используя комбинацию функций MID и нескольких функций FIND, эта формула, мягко говоря, уродлива, и все становится намного хуже для более сложных извлечений.

Опять же, Google Таблицы делают это лучше, чем Excel, потому что в нем есть REGEXEXTRACT.

Какой позор, что когда вы кормите его большими наборами данных, он тает быстрее, чем Babybel на горячем радиаторе.

К счастью, Pandas предлагает str.extract, который работает аналогичным образом:

df['Домен'] = df['URL'].str.extract('.*\://?([^\/]+)') 
извлечение строки PythonСкриншот из VS Code, ноябрь 2022 г.

Объедините с fillna, чтобы предотвратить нулевые значения, как в Excel с ЕСЛИОШИБКА:

df['Домен'] = df['URL'].str.extract('.*\://?([^\/]+)').fillna('-') 

Если

Операторы IF позволяют вам возвращать разные значения в зависимости от того, выполняется условие или нет.

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

Excel ЕСЛИСкриншот из Microsoft Excel, ноябрь 2022 г.

Вместо того, чтобы использовать Pandas в этом случае, мы можем опираться на NumPy и функцию where (не забудьте импортировать NumPy, если вы еще этого не сделали):

df['Top 3'] = np.where(df['Position'] <= 3, 'Top 3', 'Not Top 3') 

Для одной и той же оценки можно использовать несколько условий, используя операторы И/ИЛИ и заключая отдельные критерии в круглые скобки:

df['Top 3'] = np.where((df['Position'] <= 3) & (df['Position'] != 0), 'Top 3', 'Not Top 3') 

В приведенном выше примере мы возвращаем «Топ-3» для любых ключевых слов с рейтингом меньше или равным трем, исключая любые ключевые слова с нулевым рейтингом.

ИФС

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

В этом случае лучшим решением является использование IFS:

=IFS(B2<=3,"Верхние 3",B2<=10,"Верхние 10",B2<=20,"Верхние 20") 
ИФС ExcelСкриншот из Microsoft Excel, ноябрь 2022 г.

Опять же, NumPy предоставляет нам лучшее решение при работе с фреймами данных благодаря функции выбора.

С помощью select мы можем создать список условий, вариантов выбора и необязательное значение, когда все условия ложны:

условия = [df['Позиция'] <= 3, df['Позиция'] <= 10, df['Позиция'] <= 20]

 варианты = ['Топ 3', 'Топ 10', 'Топ 20']

 df['Rank'] = np.select(условия, выбор, 'Не топ-20') 

Также возможно иметь несколько условий для каждой из оценок.

Допустим, мы работаем с розничным продавцом электронной коммерции со страницами со списком продуктов (PLP) и страницами отображения продуктов (PDP), и мы хотим пометить тип фирменных страниц, ранжирующихся в 10 лучших результатах.

Самое простое решение здесь — искать определенные шаблоны URL, такие как вложенная папка или расширение, но что, если у конкурентов есть похожие шаблоны?

В этом сценарии мы могли бы сделать что-то вроде этого:

условия = [(df['URL'].str.contains('/category/')) & (df['Brand Rank'] > 0),
 (df['URL'].str.contains('/product/')) & (df['Brand Rank'] > 0),
 (~df['URL'].str.contains('/product/')) & (~df['URL'].str.contains('/category/')) & (df['Рейтинг бренда'] > 0)]

 варианты = ['PLP', 'PDP', 'Другое']

 df['Тип страницы бренда'] = np.select(условия, выбор, нет) 

Выше мы использовали str.contains, чтобы оценить, соответствует ли URL-адрес из топ-10 шаблону нашего бренда, а затем использовали столбец «Рейтинг бренда», чтобы исключить любых конкурентов.

В этом примере знак тильды (~) указывает на отрицательное совпадение. Другими словами, мы говорим, что хотим, чтобы каждый URL-адрес бренда, который не соответствует шаблону для «PDP» или «PLP», соответствовал критерию «Другое».

Наконец, None включен, потому что мы хотим, чтобы результаты, не относящиеся к бренду, возвращали нулевое значение.

np выбрать PythonСкриншот из VS Code, ноябрь 2022 г.

ВПР

ВПР — важный инструмент для объединения двух разных наборов данных в общий столбец.

В этом случае добавление URL-адресов в столбце N к данным ключевого слова, позиции и объема поиска в столбцах AC с использованием общего столбца «Ключевое слово»:

=ВПР(A2,M:N,2,ЛОЖЬ) 
просмотр ExcelСкриншот из Microsoft Excel, ноябрь 2022 г.

Чтобы сделать что-то подобное с Pandas, мы можем использовать слияние.

Дублируя функциональность соединения SQL, слияние — невероятно мощная функция, поддерживающая различные типы соединений.

Для наших целей мы хотим использовать левое соединение, которое будет поддерживать наш первый фрейм данных и объединять только совпадающие значения из нашего второго фрейма данных:

mergeddf = df.merge(df2, как='left', on='ключевое слово') 

Еще одно преимущество выполнения слияния по сравнению с ВПР заключается в том, что вам не нужно иметь общие данные в первом столбце второго набора данных, как в более новом XLOOKUP.

Он также будет извлекать несколько строк данных, а не первое совпадение в результатах поиска.

Одной из распространенных проблем при использовании этой функции является дублирование нежелательных столбцов. Это происходит, когда существует несколько общих столбцов, но вы пытаетесь сопоставить их, используя один из них.

Чтобы предотвратить это — и повысить точность ваших совпадений — вы можете указать список столбцов:

mergeddf = df.merge(df2, как='left', on=['Ключевое слово', 'Объем поиска']) 

В некоторых сценариях вы можете захотеть включить эти столбцы. Например, при попытке объединить несколько ежемесячных отчетов о ранжировании:

mergeddf = df.merge(df2, on='Ключевое слово', как='left', suffixes=('', '_october'))\
     .merge(df3, on='ключевое слово', как='left', suffixes=('', '_september')) 

Приведенный выше фрагмент кода выполняет два слияния, чтобы объединить три фрейма данных с одинаковыми столбцами — это наши рейтинги за ноябрь, октябрь и сентябрь.

Обозначая месяцы в параметрах суффикса, мы получаем гораздо более чистый фрейм данных, который четко отображает месяц, в отличие от значений по умолчанию _x и _y, показанных в предыдущем примере.

множественное слияние PythonСкриншот из VS Code, ноябрь 2022 г.

СЧЁТЕСЛИ/СУММЕСЛИ/СРЕДНЕСЛИ

В Excel, если вы хотите выполнить статистическую функцию на основе условия, вы, вероятно, будете использовать СЧЁТЕСЛИ, СУММЕСЛИ или СРЗНАЧЕСЛИ.

Обычно COUNTIF используется для определения того, сколько раз конкретная строка появляется в наборе данных, например URL-адресе.

Мы можем добиться этого, объявив столбец «URL» в качестве нашего диапазона, а затем URL-адрес в отдельной ячейке в качестве наших критериев:

=СЧЁТЕСЛИ(D:D,D2) 
 Excel countifСкриншот из Microsoft Excel, ноябрь 2022 г.

В Pandas мы можем добиться того же результата, используя функцию groupby:

df.groupby('URL')('URL').count() 
Python groupbyСкриншот из VS Code, ноябрь 2022 г.

Здесь столбец, объявленный в круглых скобках, указывает на отдельные группы, а столбец, указанный в квадратных скобках, указывает место, где выполняется агрегирование (т. е. подсчет).

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

Как правило, при использовании Excel количество URL-адресов будет встроено в наш набор данных. Затем мы можем использовать его для фильтрации наиболее часто отображаемых URL-адресов.

Для этого используйте преобразование и сохраните вывод в столбце:

df['URL-счетчик'] = df.groupby('URL')['URL'].transform('count') 
Групповое преобразованиеСкриншот из VS Code, ноябрь 2022 г.

Вы также можете применять пользовательские функции к группам данных с помощью лямбда-функции (анонимной):

df['Google Count'] = df.groupby(['URL'])['URL'].transform(lambda x: x[x.str.contains('google')].count()) 

В наших примерах до сих пор мы использовали один и тот же столбец для нашей группировки и агрегации, но нам это не нужно. Подобно СЧЁТЕСЛИМН/СУММЕСЛИМН/СРЗНАЧСЛИМН в Excel, можно выполнить группировку с использованием одного столбца, а затем применить нашу статистическую функцию к другому.

Возвращаясь к более раннему примеру страницы результатов поисковой системы (SERP), мы можем захотеть подсчитать все ранжирующие PDP для каждого ключевого слова и вернуть это число вместе с нашими существующими данными:

df['PDP Count'] = df.groupby(['Keyword'])['URL'].transform(lambda x: x[x.str.contains('/product/|/prd/|/pd/' )].считать()) 
Группировка Python по счетчикам ГруппировкаСкриншот из VS Code, ноябрь 2022 г.

Что на языке Excel будет выглядеть примерно так:

=СУММ(СЧЁТЕСЛИМН(A:A,[@Keyword],D:D,{"*/product/*","*/prd/*","*/pd/*"}))
 

Сводные таблицы

И последнее, но не менее важное: пришло время поговорить о сводных таблицах.

В Excel сводная таблица, вероятно, будет нашим первым портом захода, если мы хотим обобщить большой набор данных.

Например, при работе с данными ранжирования нам может понадобиться определить, какие URL-адреса появляются чаще всего, и их среднюю позицию в рейтинге.

сводная таблица эксельСкриншот из Microsoft Excel, ноябрь 2022 г.

Опять же, у Pandas есть свои собственные эквиваленты сводных таблиц, но если все, что вам нужно, это подсчет уникальных значений в столбце, это можно сделать с помощью функции value_counts:

count = df['URL'].value_counts() 

Использование groupby также является вариантом.

Ранее в статье выполнение группировки, объединяющей наши данные, было не тем, что мы хотели, но здесь это именно то, что требуется:

сгруппировано = df.groupby('URL').agg(
      url_frequency=('Ключевое слово', 'Количество'),
      avg_position=('Позиция', 'среднее'),
      )

 grouped.reset_index(inplace=True) 
групповая сводка PythonСкриншот из VS Code, ноябрь 2022 г.

В приведенном выше примере были применены две агрегатные функции, но их можно легко расширить, и доступно 13 различных типов.

Конечно, бывают случаи, когда мы хотим использовать сводную_таблицу, например, при выполнении многомерных операций.

Чтобы проиллюстрировать, что это значит, давайте повторно используем группы ранжирования, которые мы создали с помощью условных операторов, и попытаемся отобразить, сколько раз URL ранжируется в каждой группе.

rating_groupings = df.groupby(['URL', 'Группировка']).agg(
      url_frequency=('Ключевое слово', 'Количество'),
      ) 
python groupпоСкриншот из VS Code, ноябрь 2022 г.

Это не лучший формат для использования, поскольку для каждого URL-адреса создается несколько строк.

Вместо этого мы можем использовать сводную_таблицу, которая будет отображать данные в разных столбцах:

пивот = pd.pivot_table (df,
 индекс=['URL'],
 столбцы = ['Группировка'],
 aggfunc="размер",
 значение_заполнения=0,
 ) 
сводная таблица PythonСкриншот из VS Code, ноябрь 2022 г.

Последние мысли

Если вы ищете вдохновение, чтобы начать изучать Python, или уже используете его в своих рабочих процессах SEO, я надеюсь, что приведенные выше примеры помогут вам в вашем путешествии.

Как и было обещано, здесь вы можете найти блокнот Google Colab со всеми фрагментами кода.

По правде говоря, мы едва коснулись того, что возможно, но понимание основ анализа данных Python даст вам прочную основу для построения.

Дополнительные ресурсы:


Рекомендуемое изображение: mapo_japan/Shutterstock


Подборка статей по SEO оптимизации сайта. Выбора стратегии продвижения. Продвижение сайта в поисковых системах и социальных сетях. Обучение востребованным профессиям в сфере IT. Настройка рекламных кампаний в интернет. Маркетинг. Анализ рынка. Полезные секреты проведения рекламных кампаний. Все для PR — менеджера.

Информация для Вас была полезна?
0
0
0
0
0
0
0

Похожие статьи

Кнопка «Наверх»