7 Способов Выполнения Выборки Данных в Pandas
Last updated
Last updated
В этом посте вы узнаете о различных способах выборки данных в Pandas. Получение выборки данных может быть чрезвычайно полезным, когда вы работаете с большими наборами данных, чтобы ваш анализ проходил более быстро. Если вы репрезентативно выбираете данные, вы можете работать с гораздо меньшим набором данных, что позволит провести анализ быстрее и при этом получить адекватные результаты.
В этом посте мы рассмотрим различные способы получения выборок из вашего DataFrame в Pandas. Вы узнаете, как использовать Pandas для выборки из вашего DataFrame, создания воспроизводимых выборок, взвешенных выборок и выборок с заменой. Вы также научитесь делать выборку с постоянной скоростью и выбирать элементы по условиям. В заключение, вы узнаете, как выбирать только случайные столбцы
Быстрый ответ: используйте Pandas .sample()
Оглавление
Это возвращает следующий датафрей
В приведенном выше коде мы сначала загружаем Pandas как pd
, а затем импортируем функцию load_dataset()
из библиотеки Seaborn. Затем мы загружаем датасет penguins
в наш датафрейм.
Pandas предоставляет очень полезный метод для выборки данных. Метод вызывается с помощью .sample()
и включает ряд полезных параметров, которые мы можем применить. Прежде чем перейти к примерам, давайте более подробно рассмотрим этот метод:
Параметры дают нам следующие варианты:
n
– количество элементов для выбор
frac
– доля (из 1) элементов, которые возвращаются
replace
– нужно ли выполнять выборку с заменой (т.е. элементы могут быть выбраны более одного раза
вес
– по умолчанию образцы имеют равные веса. Можно применить серию, указывающую веса. Если они не суммируются до 1, они будут нормализованы до 1.
random_state
– номер, используемый в качестве начального значения для получения воспроизвод
ось
– ось для выбор
ignore_index
– учитывать ли индекс при переименовании или нет
Давайте рассмотрим пример. Мы выберем 5% наших записей, указав frac=0.05
в качестве аргумента:
Мы видим, что 5% данных фрейма выборочно. Первый столбец представляет собой индекс исходного фрейма данных. Мы можем видеть, что значения индекса выбираются случайным образом.
Совет: Если вы не хотите включать старый индекс, просто передайте аргумент ignore_index=True
, который сбросит индекс с исходных значений.
В следующем разделе вы узнаете, как использовать Pandas для создания воспроизводимой выборки ваших данных.
На пути освоения науки о данных вы часто столкнетесь с ситуациями, в которых потребуется воспроизвести результаты вашего анализа. Поэтому при выборке данных с использованием Pandas очень полезно знать, как добиваться воспроизводимых результатов.
Во многих библиотеках для науки о данных вы найдете либо аргумент seed
, либо random_state
. В случае метода .sample()
аргумент, который позволяет создавать воспроизводимые результаты, это аргумент
Чтобы это сработало, передайте целое число, чтобы сделать результат воспроизводимым. Давайте попробуем это с помощью Python:
Мы можем видеть здесь, что, передавая одно и то же значение в аргумент random_state=
, возвращается один и тот же результат.
Это позволяет нам создать образец в один день и получить те же результаты в другой день, что делает наши результаты и анализ гораздо более воспроизводимыми.
В следующем разделе вы узнаете, как применять веса к образцам в вашем DataFrame Pandas.
Одной из весьма мощных возможностей метода .sample()
в Pandas является возможность применять различные веса к определённым строкам, что позволяет увеличивать вероятность выбора некоторых строк по сравнению с другими.
Чтобы начать с этого примера, давайте рассмотрим типы пингвинов, которые имеются в нашем наборе данных:
Здесь мы видим, что вид Chinstrap выбирается гораздо чаще, чем другие виды.
Давайте разберем, что мы сделали здесь:
Мы сопоставили в словаре веса со столбцом видов, используя метод map Pandas
Затем мы передали наш новый столбец в аргумент weights как: weights='weights'
, что позволило Pandas использовать столбец для присвоения весов.
Некоторые важные вещи, которые нужно понимать об аргументе weights=
Значения весов должны суммироваться до 1.
Если значения не составляют 1, то Pandas нормализует их так, чтобы они составили.
В следующем разделе вы узнаете, как выбирать элементы из DataFrame с возвратом, что означает, что элементы могут быть выбраны более одного раза.
Еще одной полезной функцией метода .sample()
в Pandas является возможность выборки с возвращением, что означает, что элемент может быть выбран более одного раза.
Для этого мы можем использовать булевый аргумент replace=
. По умолчанию он установлен в False
, что означает, что элементы нельзя выбирать более одного раза. Однако, установив его в True
, элементы возвращаются обратно в кучку для выбора, что позволяет нам выбирать их снова.
Чтобы продемонстрировать это, давайте работать с гораздо меньшим датафреймом. Мы отфильтруем наш датафрейм, чтобы он содержал только пять строк, чтобы увидеть, как часто выбирается каждая строка.
Давайте разберём, что мы здесь сделали:
Сначала мы вернули small_df
, который содержал только пять строк из нашей оригинальной таблицы.
Затем мы повторно выбрали пять записей из нашего датафрейма. Обычно это возвращает все пять записей. Однако, поскольку мы указали replace=True
, Pandas смог выбрать каждую запись более одного раза.
Из-за этого, запись 162
была возвращена дважды.
Интересно отметить, что можно вернуть выборку, превышающую исходный набор данных. Например, если мы установим аргумент frac=
равным 1.2, нам нужно будет установить replace=True
, так как мы получим 120% от исходных записей.
В следующем разделе вы узнаете, как проводить выборку с постоянной скоростью.
Популярная техника выборки заключается в отборе каждого n-го элемента, что означает, что вы выполняете выборку с постоянной частотой.
Чтобы сделать это, мы можем использовать невероятно полезный метод .iloc
из Pandas, который позволяет нам получать доступ к элементам, используя синтаксис среза. Чтобы узнать больше о .iloc
для выбора данных.
В Python мы можем нарезать данные различными способами, используя нотацию срезов, которая следует следующему шаблону:
[start : end : step]
Если бы мы хотели выбрать каждую пятую запись, мы могли бы оставить параметры начала и конца пустыми (значит, они будут вырезать с начала до конца) и пропустить каждые 5 записей.
Давайте посмотрим, как это будет выглядеть.
Взглянув на индексы нашего датафрейма sample
, мы можем увидеть, что он возвращает каждую пятую строку. Мы можем установить шаг для счетчика на любое желаемое значение.
В следующем разделе вы узнаете, как использовать Pandas для выборки элементов по заданному условию
Также вы можете выбрать строки из DataFrame Pandas с использованием условия, что позволяет возвратить все строки, которые соответствуют (или не соответствуют) определенному требованию. Для фильтрации DataFrame по условиям мы используем метод индексации []
, где в квадратных скобках указывается требуемое условие.
Если мы хотим отфильтровать наш dataframe, чтобы выбрать только строки, где bill_length_mm
меньше 35.
Мы можем написать:
Здесь мы можем видеть, что возвращены только те строки, где длина клюва была меньше 35.
Вместо того чтобы выделять условие на отдельную строку, мы могли бы просто объединить его и записать как sample = df[df['bill_length_mm'] < 35]
, чтобы сделать наш код более лаконичным.
Pandas также содержит унарный оператор ~
, который инвертирует операцию. Мы можем использовать его, **чтобы выбирать только строки, не соответствующие нашему условию.
Давайте посмотрим, как это будет выглядеть:
Здесь мы видим, что возвращаются только строки, где длина счета больше 35
В следующем разделе вы узнаете, как выбрать случайные столбцы из DataFrame в Pandas
В этом заключительном разделе вы узнаете, как использовать Pandas для выборки случайных столбцов вашего датафрейма. Это можно сделать с помощью метода Pandas .sample()
, изменив параметр axis=
на 1 вместо значения по умолчанию 0.
Давайте посмотрим, как мы можем сделать это с помощью Pandas и Python:
Здесь мы использовали Pandas, чтобы выбрать 3 случайных столбца из нашего датафрейма. В данном случае возвращаются все строки, но количество столбцов, которые мы выбираем, ограничено.
В этом посте вы узнали все различные способы выборки из Pandas Dataframe. Вы узнали, как использовать метод Pandas .sample()
, включая возвращение заданного количества строк или доли вашего датафрейма. Вы также узнали, как применять веса к вашим выборкам и как выбирать строки итеративно с постоянной частотой. Вы узнали, как выбирать строки, удовлетворяющие условию, и как выбирать случайные столбцы.
Для этого руководства мы загрузим набор данных, который предварительно загружен в Seaborn. Если хотите узнать больше о загрузке данных в Seaborn, посмотрите мое . Если вы просто хотите следовать инструкциям здесь, выполните код ниже:
Нужно проверить, существует ли ключ в словаре Python? Ознакомьтесь с , которое научит вас пяти разным способам проверки существования ключа в словаре Python, включая способ возвращения значения по умолчанию.
Хотите узнать больше о циклах for в Python? Ознакомьтесь с , которое позволит вам перейти от начинающего до продвинутого пользователя циклов for! Предпочитаете видео? Посмотрите .
Хотите узнать, как использовать функцию Python zip()
для итерации по двум спискам? подробно объясняет, что делает функция zip()
, и показывает несколько креативных способов её использования.
Если мы хотим увеличить вероятность выбора вида Chinstrap, можно применить веса к этим видам в другом столбце, используя метод Pandas .map()
. Чтобы узнать больше о методе .map()
, ознакомьтесь с .
Хотите узнать, как получить расширение файла в Python? научит вас использовать библиотеки os и pathlib, чтобы сделать именно это!
Чтобы узнать больше о выборке, ознакомьтесь с этой публикацией от .
Чтобы узнать больше о методе sample в Pandas, .