Особенности фильтров — 30, Over Optimization, Duplicate Content, Panda, Penguin
Для улучшения качества поисковой выдачи Google создал несколько десятков алгоритмов для пессимизации или полного удаления из выдачи некачественных или нерелевантных ресурсов. Под действие одного или сразу нескольких фильтров может попасть практически любой сайт или страница, в работе с которыми используются незаконные методы продвижения или не уделяется должного внимания качеству ресурса.
Фильтр -30
Фильтр применяется в отношении откровенно спамных ресурсов, а также использующих скрытые JavaScript-редиректы, дорвеи и клоакинг. В результате наложения санкций позиции сайта снижается на 30 пунктов в поисковой выдаче. Важно, что фильтр полностью не убирает сайт из поиска, а скорее намекает владельцу ресурса о недопустимости незаконных методов продвижения. Если нарушения не устранить, то сайт вовсе вылетит из поиска.
Снять санкции можно только полностью избавившись от вышеуказанных методов продвижения и не используя их в дальнейшем. Важно также, чтобы содержание страницы полностью соответствовало продвигаемым ключам.
Фильтр Over Optimization
Под фильтр попадают веб-ресурсы с переизбытком ключевых слов и фраз в тексте страницы, тегах и метатегах. Подобные тексты поисковые боты воспринимают как написанные не для людей, а для поисковых роботов. Соответственно, веб-ресурс считается бесполезным для пользователя и на него накладывается фильтр. Вывести сайт из-под фильтра можно переписав контент и правильно его оптимизировав, удалив лишние слова и теги. Оптимальное количество ключевых слов на странице не должно превышать 5-7% от общего объема текста. Важно также, чтобы все ключевые слова были написаны лексически и грамматически правильно и органично размещались в тексте.
Фильтр Duplicate Content
Неуникальные тексты в интернете – это довольно распространенная практика, которая совершенно не устраивает пользователей, а, следовательно, и поисковую систему. Она делает сайты похожими друг на друга, не представляя пользователям всей широты информации, поэтому подобная практика строго наказывается. Индексируя страницу с неуникальным контентом Google отмечает его вторичность и сразу пессимизирует сайт в поисковой выдаче, даже несмотря на ее отличную оптимизацию. В самом плохом варианте страница полностью исчезает из поисковой выдачи.
Что можно сделать, чтобы снять фильтр?
- Убрать с сайта неуникальный контент, заменив полностью уникальными текстами.
- Защитить сайт от воровства контента конкурентами. Подобная практика также не редкость, когда уникальный контент с сайта может быть украден и размещен на другом ресурсе. Если он первым проходит индексацию для поисковой системы он будет первоисточником. Для этого можно запретить копирование статей с сайта или указывать напоминание о необходимости ссылки на источник материалов.
Фильтр Penguin
«Пингвин» – это один из важных комплексных фильтров, накладывающийся на ресурсы, которые поисковая система считает неестественными. Иначе говоря, созданными не для нужд реальных людей, а для поисковых ботов. Благодаря сложным алгоритмам проверки роботы быстро обнаруживают некачественные ресурсы и применяют санкции. Чаще всего Пингвин действует точечно на страницы с некачественными ссылками и не затрагивает сайт целиком.
Попасть под санкции можно за целый ряд нарушений: скрытые ссылки, переоптимизация ключевых слов в текстах, мета-тегах, анкорах, неестественный рост ссылочной массы (даже если для внешних ссылок использовались трастовые ресурсы), низкое качество ссылок вследствие размещения их на неавторитетных сайтах-донорах.
Что нужно сделать, чтобы снять санкции?
- Переработать контент, убрав неестественные вхождения ключевых слов.
- Развивать ссылочный профиль сайта только при помощи трастовых, схожих по тематике ресурсов.
- Удалить дубли, битые ссылки.
- Сделать грамотную перелинковку.
Различные манипуляции со ссылочным профилем строго наказываются поисковой системой. Попасть под санкции очень легко, а вот вывести сайт на прежние позиции сложно и требует много времени.
Фильтр Panda
Большое количество сайтов копируют материалы друг друга, усложняя работу поисковой системы. Для отслеживания некачественного контента создан фильтр Панда. Санкции накладываются на страницы-дубли, с чрезмерным вхождением ключевых слов, с неработающими или некачественными ссылками, с большим количеством рекламы на странице, неуникальными текстами. Под санкции также попадают страницы, где размещено слишком мало информации, что не позволяет полностью ответить на запрос пользователя.
Фильтр снижает позицию ресурса или отдельных страниц в поиске, новые страницы долго индексируются, что приводит к снижению трафика.
Чтобы снять действие фильтра, нужно провести качественную работу с сайтом:
- определить и проанализировать страницы, которые попали под санкции;
- разместить на сайте уникальный контент;
- провести проверку и удалить некорректные и нетематические ссылки;
- удалить все страницы-дубли;
- улучшать поведенческие факторы;
- убрать нетематическую рекламу и сообщения;
- проверить корректность отображение страниц на различных устройствах;
- устранить технические недочеты в работе сайта.
Один из самых тяжелых фильтров, избавиться от которого сложнее всего. Чтобы выйти из-под фильтра нужно тщательно проработать содержание сайта (иногда полностью удалить или заменить статьи), а даже после этого ждать снятия санкции придется долго.
Алгоритмы Google постоянно совершенствуются и становятся сложнее. Для попадания в ТОП поисковой выдачи нужно, чтобы сайт был релевантным запросу и полезным для пользователя. Вывести сайт из-под фильтра часто бывает сложным и трудозатратным процессом, который требует знаний принципов работы алгоритмов поиска и определения истинных причин снижения позиций сайта в выдаче. Более эффективной практикой является качественная работа с сайтом по продвижению законными способами. Остались вопросы? Обращайтесь к специалистам «VisualTeam».
Продолжая использовать данный сайт, Вы соглашаетесь с условиями пользовательского соглашения, выражаете своё согласие на использование cookie-файлов и на обработку своих персональных данных в соответствии с политикой в отношении обработки персональных данных на сайте visualteam. ru
Pandas Filter Methods to Know
Pandas — это популярная библиотека анализа и обработки данных для Python. Основной структурой данных Pandas является DataFrame, который хранит данные в табличной форме с помеченными строками и столбцами.
8 Pandas Filter Methods to Know
- Логические операторы.
- Исин.
- Несколько логических операторов.
- Ул.
- Тильда (~).
- Запрос.
- Самый большой и самый маленький.
- Место и место.
Обычной операцией при анализе данных является фильтрация значений на основе условия или нескольких условий. Pandas предоставляет различные способы фильтрации точек данных (то есть строк). В этой статье мы рассмотрим восемь различных способов фильтрации DataFrame.
Как фильтровать Pandas DataFrame
Начнем с импорта библиотек.
импортировать numpy как np импортировать панд как pd
Давайте создадим образец DataFrame для наших примеров.
df = pd.DataFrame({ имя':['Джейн','Джон','Эшли','Майк','Эмили','Джек','Кэтлин'], 'ctg':['A','A','C','B','B','C','B'], 'val':np.random.random(7).round(2), 'val2': np.random.randint (1,10, размер = 7) })Образ DataFrame. | Снимок экрана: Soner Yildirim Подробнее о Pandas: руководство по сводной таблице Pandas
1. Логические операторы
Мы можем использовать логические операторы для значений столбцов для фильтрации строк.
дф[дф.знач > 0,5] имя ctg val val2 ------------------------------------------- 1 Джон A 0,67 1 3 Майк B 0,91 5 4 Эмили Б 0,99 8 6 Кэтлин Б 1,00 3
Теперь мы выбрали строки, в которых значение в столбце «val» больше 0,5.
Функция логических операторов также работает со строками.
f[df.name > 'Джейн'] имя ctg val val2 ------------------------------------------- 1 Джон А 0,67 1 3 Mike B 0,91 5
Выбираются только имена, идущие после «Jane» в алфавитном порядке.
2. Несколько логических операторов
Pandas позволяет комбинировать несколько логических операторов. Например, мы можем применять условия как к столбцам val, так и к столбцам val2.
df[(df.val > 0,5) & (df.val2 == 1)] имя ctg val val2 ------------------------------------------- 1 John A 0,67 1
Знак «&» означает «и», «|» означает «или».
df[(df.val < 0,5) | (df.val2 == 7)] имя ctg val val2 ------------------------------------------- 0 Джейн A 0,43 1 2 Эшли C 0,40 7 5 Джек C 0,02 7
3. Isin
Метод isin
— это еще один способ применения нескольких условий для фильтрации. Например, мы можем отфильтровать имена, существующие в заданном списке.
имен = ['Джон', 'Кэтлин', 'Майк'] df[df.name.isin(имена)] имя ctg val val2 ------------------------------------------- 1 Джон А 0,67 1 3 Майк Б 0,91 5 6 Кэтлин Б 1,00 3
4.
Str accessor Pandas также является высокоэффективной библиотекой для текстовых данных. Функции и методы в методе доступа str
предоставляют гибкие способы фильтрации строк на основе строк.
Например, мы можем выбрать имена, начинающиеся с буквы «J».
df[df.name.str.startswith('J')] имя ctg val val2 ------------------------------------------- 0 Джейн А 0,43 1 1 Джон А 0,67 1 5 Джек С 0,02 7
Функция содержит
под аксессором str возвращает значения, которые содержат заданный набор символов.
df[df.name.str.contains('y')] имя ctg val val2 ------------------------------------------- 2 Эшли К 0.40 7 4 Emily B 0.99 8
Мы можем передать более длинный набор символов в функцию contains в зависимости от строк в данных.
5. Тильда (~)
Оператор тильда используется для логики «не» в фильтрации. Если мы добавим оператор тильды перед выражением фильтра, будут возвращены строки, не соответствующие условию.
df[df.name.str.contains('y')] имя ctg val val2 ------------------------------------------- 2 Эшли К 0.40 7 4 Emily B 0,99 8
Получаем имена, которые не начинаются с буквы «J».
6. Запрос
Функция query
предлагает немного больше гибкости при записи условий фильтрации. Мы можем передать условия в виде строки.
Например, следующий код возвращает строки, принадлежащие к категории B и имеющие значение выше 0,5 в столбце val.
df.query('ctg == "B" и значение > 0,5') имя ctg val val2 ------------------------------------------- 3 Майк Б 0,91 5 4 Эмили Б 0,99 8 6 Catlin B 1,00 3
7. Самый большой или самый маленький
В некоторых случаях у нас нет определенного диапазона для фильтрации, а нужны только самые большие или самые маленькие значения. Функции nlargest
и nsmalest
позволяют выбирать строки с наибольшими или наименьшими значениями в столбце соответственно.
df.nlargest(3, 'значение') имя ctg val val2 ------------------------------------------- 6 Кэтлин Б 1,00 3 4 Эмили Б 0,99 8 3 Mike B 0,91 5
Мы также можем указать количество самых больших или самых маленьких выбираемых значений и имя столбца.
df.nsmallest(2, 'значение2') имя ctg val val2 ------------------------------------------- 0 Джейн А 0,43 1 1 John A 0.67 1Учебник по фильтрации в Pandas. | Видео: Кори Шафер
Подробнее о Pandas: остерегайтесь фиктивной ловушки переменных в Pandas
8. Loc и Iloc
loc
и iloc
используются для выбора строк или столбцов на основе индекса или метки.- Loc : Выбрать строки или столбцы с помощью меток
- Iloc : Выбрать строки или столбцы с помощью индексов
Таким образом, их можно использовать для фильтрации. Однако мы можем выбрать только определенную часть DataFrame без указания условия.
df.iloc[3:5, :] #строки 3 и 4, все столбцы имя ctg val val2 ------------------------------------------- 3 Майк Б 0,91 5 4 Эмили Б 0,99 8
Если DataFrame имеет целочисленный индекс, индексы и метки строк совпадают. Таким образом, и loc
, и iloc
выполняли одно и то же в строках.
df.loc[3:5, :] #строки 3 и 4, все столбцы имя ctg val val2 ------------------------------------------- 3 Майк Б 0,91 5 4 Emily B 0,99 8
Давайте обновим индекс DataFrame, чтобы лучше продемонстрировать разницу между loc и iloc.
df.index = ['a','b','c','d','e','f','g']Изображение DataFrame. | Скриншот: Soner Yildirim
Сейчас мы не можем передавать целые числа в метод loc, потому что метки индексов — буквы.
df.loc['b':'d', :] имя ctg val val2 ------------------------------------------- б Джон А 0,67 1 в Эшли К 0,40 7 г Майк Б 0,91 5
Мы рассмотрели восемь различных способов фильтрации строк в DataFrame. Все они полезны и пригодятся в разных ситуациях.
Pandas — мощная библиотека как для анализа данных, так и для обработки. Он предоставляет множество функций и методов для обработки данных в табличной форме. Как и в случае с любым другим инструментом, лучший способ изучить Pandas — это практика.
10 способов фильтрации Pandas DataFrame
В этой статье мы рассмотрим различные методы фильтрации фрейма данных pandas в Python. Фильтрация данных — одна из наиболее частых операций по обработке данных. Это похоже на предложение WHERE в SQL, или вы должны были использовать фильтр в MS Excel для выбора определенных строк на основе некоторых условий. С точки зрения скорости, у python есть эффективный способ фильтрации и агрегации. У него есть отличный пакет под названием pandas для задач обработки данных. Pandas был построен поверх пакета numpy, который был написан на языке C, который является языком низкого уровня. Следовательно, манипулирование данными с использованием пакета pandas — это быстрый и умный способ обработки наборов данных большого размера.
Примеры фильтрации данных
Это один из самых начальных шагов подготовки данных для прогнозного моделирования или любого проекта отчетности. Это также называется «Подмножество данных». См. некоторые примеры фильтрации данных ниже.
- Выберите всех активных клиентов, чьи счета были открыты после 1 января 2019 года
- Извлечение сведений обо всех клиентах, совершивших более 3 транзакций за последние 6 месяцев
- Получить информацию о сотрудниках, проработавших в организации более 3 лет и получивших наивысший рейтинг за последние 2 года
- Анализ данных о жалобах и выявление клиентов, подавших более 5 жалоб за последний год
- Извлечение подробной информации о мегаполисах, где доход на душу населения превышает 40 тысяч долларов
Импорт данных
Перед отправкой следующего кода убедитесь, что пакет pandas уже установлен. Вы можете проверить это, запустив оператор !pip show pandas
в консоли Ipython. Если он не установлен, вы можете установить его с помощью команды !pip install pandas
.
Мы собираемся использовать набор данных, содержащий информацию о рейсах, вылетающих из Нью-Йорка в 2013 году. Этот набор данных имеет 336776 строк и 16 столбцов. См. названия столбцов ниже. Для импорта набора данных мы используем функцию read_csv()
из пакета pandas.
['год', 'месяц', 'день', 'время_задержки', 'время_задержки', 'время_прибытия', 'arr_delay', 'carrier', 'tailnum', 'рейс', 'отправление', 'пункт назначения', 'air_time', 'расстояние', 'час', 'минута']
импортировать панд как pd df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))
Фильтр данных pandas по значению столбца
Выберите информацию о рейсах JetBlue Airways с двухбуквенным кодом перевозчика B6
, отправляющимся из JFK
, аэропорт
Метод 1: DataFrame Way
newdf = df[(df. origin == "JFK") & (df.carrier == "В6")]
newdf.head() Вышли[23]: год месяц день dep_time ... air_time расстояние час минута 3 2013 1 1 544,0 ... 183,0 1576 5,0 44,0 8 2013 1 1 557,0 ... 140,0 944 5,0 57,0 10 2013 1 1 558,0 ... 149,0 1028 5,0 58,0 11 2013 1 1 558,0 ... 158,0 1005 5,0 58,0 15 2013 1 1 559,0 ... 44,0 187 5,0 59,0 [5 строк х 16 столбцов]
- Отфильтрованные данные (после подмножества) сохраняются в новом кадре данных с именем
newdf
. - Символ
и
относится к состояниюИ
, что означает соответствие обоим критериям. - Эта часть кода
(df.origin == "JFK") & (df.carrier == "B6")
возвращает True/False. True, если условие соответствует, и False, если условие не выполняется. Позже он передается внутри df и возвращает все строки, соответствующие True . Он возвращает 4166 строк.
Метод 2: Функция запроса
В пакете pandas есть несколько способов фильтрации. Вышеупомянутый код также может быть написан как код, показанный ниже. Этот метод элегантен и более удобен для чтения, и вам не нужно каждый раз упоминать имя фрейма данных при указании столбцов (переменных).
newdf = df.query('происхождение == "JFK" & перевозчик == "B6"')
Как передать переменные в функцию запроса
Способ 3: функция loc
loc является аббревиатурой местоположения термина. Все эти 3 метода возвращают один и тот же результат. Это просто разные способы фильтрации строк.
newdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")]
Фильтр данных Pandas по положению строки и столбца
Предположим, вы хотите выбрать определенные строки по их положению (скажем, со второй по пятую строку). Мы можем использовать df.iloc[ ]
функция для того же.
Индексация в питоне начинается с нуля. df.iloc[0:5,] относится к строке с первой по пятую (исключая здесь конечную точку 6-й строки). df.iloc[0:5,] эквивалентно df.iloc[:5,]
df.iloc[:5,] # Первые 5 строк df.iloc[1:5,] #Со второй по пятую строку df.iloc[5,0] #Шестая строка и 1-й столбец df.iloc[1:5,0] #Со второй по пятую строку, первый столбец df.iloc[1:5,:5] #Со второй по пятую строку, первые 5 столбцов df.iloc[2:7,1:3] #С третьей по седьмую строку, 2-й и 3-й столбцы
Разница между функциями loc и iloc
loc рассматривает строки на основе меток индекса. В то время как iloc рассматривает строки на основе позиции в индексе, поэтому принимает только целые числа. Давайте создадим образец данных для иллюстрации
импортировать numpy как np x = pd.DataFrame({"col1": np.arange(1,20,2)}, index=[9,8,7,6,0, 1, 2, 3, 4, 5])
столбец 1 9 1 8 3 7 5 6 7 0 9 1 11 2 13 3 15 4 17 5 19
iloc - Позиция индекса
x. iloc[0:5] Выход столбец1 9 1 8 3 7 5 6 7 0 9
Выбор строк на основе индекса или позиции строки
loc — Метка индекса
x.loc[0:5] Выход столбец1 0 9 1 11 2 13 3 15 4 17 5 19
Выбор строк на основе меток индекса
Как x.loc[0:5]
возвращает 6 строк (включая 5, которые являются 6-м элементом)?
Это связано с тем, что loc
не производит вывод на основе позиции индекса. Он рассматривает только метки индекса, которые также могут быть алфавитными и включают как начальную, так и конечную точку. См. пример ниже.
x = pd.DataFrame({"col1" : диапазон(1,5)}, index=['a','b','c','d']) x.loc['a':'c'] # эквивалентно x.iloc[0:3] столбец1 1 Би 2 с 3
Фильтр данных pandas по положению строк и именам столбцов
Здесь мы выбираем первые пять строк двух столбцов с именами origin и dest.
df.loc[df.index[0:5],["источник","назначение"]]
df.index
возвращает метки индекса. df.index[0:5] требуется вместо 0:5 (без df.index), потому что метки индекса не всегда идут последовательно и начинаются с 0. Он может начинаться с любого числа или даже может иметь буквы алфавита. Обратитесь к примеру, где мы показали сравнение iloc и loc.
Выбор нескольких значений столбца
Предположим, вы хотите включить все сведения о рейсе, отправной точкой которого является JFK или LGA.
# Долгий Путь newdf = df.loc[(df.origin == "JFK") | (df.origin == "LGA")] # Умный способ newdf = df[df.origin.isin(["JFK", "LGA"])]
|
подразумевает условие ИЛИ, что означает, что любое из условий выполняется. isin()
аналогичен оператору IN в SAS и R, который может принимать много значений и применять условие ИЛИ. Убедитесь, что вы указали значения в списке [ ].
Выберите строки, значение столбца которых не равно определенному значению
В этом примере мы удаляем все сведения о рейсе, отправляющимся из JFK. !=
подразумевает НЕ РАВНО.
newdf = df.loc[(df.origin != "JFK") & (df.carrier == "B6")]
Давайте проверим, нормально ли работает приведенная выше строка кода, просмотрев уникальные значения источника столбца в newdf.
pd.unique(newdf.origin) ['LGA', 'EWR']
Как отменить все условие
Тильда ~
используется для отмены условия. Это эквивалентно оператору НЕ в SAS и R.
newdf = df[~((df.origin == "JFK") & (df.carrier == "B6"))]
Выберите неотсутствующие данные в Pandas Dataframe
С помощью функции notnull()
вы можете исключить или удалить значения NA и NAN. В приведенном ниже примере мы удаляем пропущенные значения из исходного столбца. Поскольку этот кадр данных не содержит пустых значений, вы найдете такое же количество строк в newdf.
newdf = df[df.origin.notnull()]
Строка фильтрации в Pandas Dataframe
Обычно считается сложным обрабатывать текстовые данные. Но python упрощает работу с символьными или строковыми столбцами. Давайте подготовим поддельные данные, например.
импортировать панд как pd df = pd.DataFrame({"var1": ["AA_2", "B_1", "C_2", "A_2"]}) переменная1 0 АА_2 1 Б_1 2 С_2 3 А_2
Выберите строки со значениями, начинающимися с буквы «А»
Используя .str
, вы можете включить строковые функции и применить их к кадру данных pandas. str[0] означает первую букву.
df[df['var1'].str[0] == 'A']
Фильтрация строк, длина строки которых превышает 3
len( )
Функция вычисляет длину итерируемого объекта.
df[df['var1'].str.len()>3]
Выберите строку, содержащую буквы A или B
contains( )
Функция аналогична оператору LIKE в SQL и SAS. Вы можете подмножество данных, упомянув шаблон в функции contains().
df[df['var1'].str.contains('A|B')] Выход переменная1 0 АА_2 1 Б_1 3 А_2
Обработка пробела в имени столбца при фильтрации
Давайте переименуем столбец var1 с пробелом между var 1 Мы можем переименовать его с помощью функции rename .
df.rename(columns={'var1':'var 1'}, inplace = True)
Используя обратные кавычки ` `
, мы можем включить столбец с пробелом. См. пример кода ниже.
newdf = df.query("`var 1` == 'AA_2'")
Обратные кавычки поддерживаются начиная с версии 0.25 пакета pandas. Запустите эту команду в консоли, чтобы проверить версию pandas !pip show pandas
Если у вас версия до версии 0. 25 вы можете обновить его с помощью этой команды !pip install --upgrade pandas --user
Как фильтровать данные без использования пакета pandas
Вы можете выполнять фильтрацию, используя чистые методы Python, независимо от пакета pandas.
Предупреждение. Показанные ниже методы фильтрации неэффективны. Основная цель демонстрации следующих методов — показать, как выполнять подмножество без использования пакета pandas. В вашем реальном проекте вы должны использовать встроенные функции pandas (query(), loc[ ], iloc[ ]), которые объяснялись выше.
Нам не нужно создавать фрейм данных для хранения данных. Мы можем хранить его в структуре данных списка. lst_df
содержит данные о полетах, которые были импортированы из файла CSV.
импорт CSV запросы на импорт ответ = запросы.получить('https://dyurovsky.github.io/psyc201/data/lab2/nycflights.csv').текст линии = ответ. splitlines() d = csv.DictReader(строки) lst_df = список (г)
Лямбда-метод фильтрации
Лямбда — это альтернативный способ определения определяемой пользователем функции. С помощью лямбда вы можете определить функцию в одной строке кода. Вы можете проверить это ссылка , чтобы узнать больше об этом.
l1 = list(filter(lambda x: x["origin"] == 'JFK' и x["перевозчик"] == 'B6', lst_df))
Если вам интересно, как использовать эту лямбда-функцию в фрейме данных, вы можете отправить код ниже.
newdf = df[df.apply(лямбда x: x["происхождение"] == 'JFK' и x["перевозчик"] == 'B6', ось = 1)]
Метод понимания списка для фильтрации
Понимание списков является альтернативой лямбда-функциям и делает код более читабельным. Подробное руководство: понимание списка
l2 = list(x вместо x в lst_df if x["origin"] == 'JFK' and x["carrier"] == 'B6')
Вы можете использовать понимание списка в кадре данных, как показано ниже.