Python: Разделение DataFrame Pandas
Last updated
Last updated
В этой статье вы узнаете, как разделить DataFrame Pandas разными способами. Вы научитесь разделять DataFrame по значению столбца, по позиции и по случайным значениям.
Умение разделять DataFrame Pandas является полезным навыком во многих приложениях: в машинном обучении для выбора случайных значений, при разделении данных на определённые группы для автоматизации отчётов и т. д.
Оглавление
Если вы хотите следовать материалу урока, загрузите приведённый ниже образец DataFrame. Если у вас есть собственные данные, вы можете использовать их, хотя некоторые примеры могут потребовать дополнительной адаптации под ваш контекст.
Давайте начнём и загрузим данные!
Мы можем видеть, что у нас есть четыре столбца: Name (Имя), Year (Год), Income (Доход) и Gender (Пол). У нас есть данные о доходах трёх человек за три года, а также их пол. Давайте посмотрим, как мы можем разделить этот DataFrame!
Разделение DataFrame по значению столбца — это очень полезный навык. Он может пригодиться при автоматизации отчётов или при работе с различными категориями данных внутри DataFrame.
Вы научитесь разделять DataFrame по значениям столбцов с помощью метода .groupby()
.
Давайте посмотрим, как можно разделить DataFrame по столбцу Name
(Имя):
Что мы сделали здесь:
Создали объект группировки grouped
, разделив DataFrame по столбцу Name
(Имя),
Использовали метод .get_group()
, чтобы получить строки DataFrame, содержащие значение 'Jenny'
.
Метод, который вы изучили выше, полезен, если вы заранее знаете, какую группу хотите получить.
Теперь вы узнаете, как разделить DataFrame на все возможные группы.
Начнём с того, что получим все уникальные значения в столбце. Для этого воспользуемся методом Pandas .unique()
, о котором вы можете подробнее узнать в моей статье по этой ссылке. Если вы предпочитаете видеоформат, посмотрите мой ролик ниже:
В следующем примере мы пройдемся циклом по DataFrame и сохраним каждую группу в отдельный файл Excel:
Что мы сделали здесь — это пройтись циклом по уникальным значениям столбца Name
в DataFrame, получить соответствующую группу для каждого имени и сохранить её в отдельный файл Excel.
В этом разделе вы узнаете, как разделить DataFrame Pandas по определённой позиции внутри данных. Например, как разделить DataFrame пополам или на трети.
Это можно сделать очень легко с помощью акцессора .iloc
из библиотеки Pandas. Этот мощный инструмент позволяет удобно обращаться к данным по их позиции.
Важно правильно определить те строки, которые вы хотите выбрать. Для этого можно использовать встроенную функцию len()
, чтобы узнать длину DataFrame. Если вы хотите узнать больше о способах определения количества строк в DataFrame, прочитайте мой урок по этой ссылке.
Предположим, что мы хотим разделить DataFrame пополам — то есть разрезать данные по строкам в середине.
Чтобы найти середину DataFrame, нужно определить его длину и разделить на два. После этого мы можем использовать акцессор .iloc
для разделения данных:
Мы можем видеть, что DataFrame вернул первую половину значений. Теперь давайте посмотрим, как превратить это в функцию, которая разделит DataFrame на несколько частей:
Давайте разберём, что делает эта функция:
Создаётся список dataframes
, в который будут добавляться результирующие части DataFrame.
Определяется количество строк, которое должна содержать каждая часть, и это значение присваивается переменной index_to_split
.
Задаются начальные значения: start = 0
и end = index_to_split
.
Далее происходит цикл по количеству частей, на которые мы хотим разделить DataFrame. На каждом шаге выбираются данные от start
до end
.
Полученная часть DataFrame добавляется в список dataframes
, после чего значения start
и end
увеличиваются для следующей итерации.
В конце функция возвращает список разделённых DataFrame, к которым можно получить доступ по индексу.
Поскольку списки в Python индексируются с нуля, первую часть можно получить как dataframes[0]
.
В качестве финального примера посмотрим, как разделить DataFrame на случайные строки.
Также можно выбрать случайные строки из DataFrame. Для этого Pandas предоставляет удобный метод .sample()
, который позволяет выбрать либо определённое количество строк, либо долю от всех строк. Это особенно полезно, если вам нужно произвольное разделение данных.
Давайте посмотрим, как разделить DataFrame пополам с помощью метода .sample()
в Pandas:
Мы можем видеть, что DataFrame вернул случайный набор строк.
Теперь давайте посмотрим, как выбрать определённое количество строк с помощью метода .sample()
в Pandas:
Здесь мы использовали параметр n=
для указания количества возвращаемых строк.
В этой статье вы узнали, как разделить DataFrame в Pandas. В частности, вы научились разделять DataFrame по значению столбца, по позиции и по случайным значениям.
Чтобы узнать больше о методе .sample()
в Pandas, ознакомьтесь с официальной документацией по .