Bemind
Учебник Python
Учебник Python
  • Python
    • Python Lists
      • Списковые включения в Python (Полное руководство с примерами)
      • Исправление ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Как добавить строку в список в Python
      • Разница между массивами и списками в Python
      • Python: Различия между списками и кортежами
      • Как проверить, пуст ли список в Python
      • Как Итерировать (Циклически Проходить) По Списку в Python
      • Python List sort(): Подробное руководство по сортировке списков
      • Python List Extend: Как добавить несколько элементов в список
      • Python: Найти Индекс Всех Вхождений Элемента в Списке
      • Конвертация списка словарей в Pandas DataFrame
      • Генерация случайных чисел в Python
      • Поиск Индекса в Списке Python: Найти Первое, Последнее или Все Вхождения
      • Добавить в начало списка в Python (Вставить в начало)
      • Найти дубликаты в списке Python
      • Python: Умножение Списков (6 Различных Способов)
      • Python списки: Полный обзор
      • Python: Выбор случайного элемента из списка
      • 4 Способа Очистить Список в Python
      • Объяснение ошибки IndexError в Python: индекс списка выходит за пределы допустимого диапазона
      • Python: Получение индекса максимального элемента в списке
      • Python: Объединение списков – Слияние списков (8 способов)
      • Python: Проверка наличия элемента в списке
      • Python: Проверка наличия элемента в списке
      • Удаление элемента из списка в Python (pop, remove, del, clear)
      • Как перевернуть список в Python (6 способов)
      • Python: Замена элемента в списке (6 различных способов)
      • Python: Удаление дубликатов из списка (7 способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Перемешать Список (Случайное Распределение Элементов Списка в Python)
      • Python: Пересечение двух списков
      • Python: Вычитание двух списков (4 простых способа!)
      • Длина или Размер Списка в Python: 5 Способов Узнать Длину Списка
      • Python: Транспонирование списка списков (5 простых способов!)
      • Python: Разделение списка (Пополам, на части)
      • Python: Комбинации списка (Получить все комбинации списка)
      • Python: Выравнивание списка списков (4 способа)
      • Разница между списками в Python: Нахождение разницы между двумя списками Python
      • Python: Найти среднее значение списка или списка списков
      • Как добавлять элементы в списки в Python – 4 простых способа!
      • Списковые включения в Python (Полное руководство с примерами)
      • 6 способов преобразовать список Python в строку
    • Python Dictionaries
      • Понимание словаря Python (с примерами)
      • Исправляем ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Преобразование JSON в словарь Python
      • Полное руководство по вложенным словарям в Python
      • Копирование словаря в Python: Полное руководство
      • Конвертация списка словарей в Pandas DataFrame
      • Поиск дубликатов в списке Python
      • Полный обзор словарей в Python
      • Python: Добавление пары Ключ:Значение в Словарь
      • Python: Сортировка словаря по значениям
      • Слияние Словарей в Python – Комбинирование Словарей (7 Способов)
      • Python: Удаление Дубликатов из Списка (7 Способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Красивая Печать Словаря (Dictionary) – 4 Способа
      • Python: Проверка пуст ли словарь (5 способов!)
      • Copy of Python: Проверка пуст ли словарь (5 способов!)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Получение Ключа Словаря с Максимальным Значением (4 Способа)
      • Python: Удаление ключа из словаря (4 разных способа)
      • Как красиво вывести JSON-файл в Python (6 методов)
    • Python Strings
      • Python Капитализация Строк: Руководство по Преобразованию слов в Заглавные
      • Python strip: Как обрезать строку в Python
      • Python Обратная Строка: Руководство по Реверсированию Строк
      • Как Удалить Префикс или Суффикс из Строки в Python
      • Преобразование строки в формат заголовка в Python с помощью str.title()
      • Как добавить строку в список в Python
      • Python String startswith: Проверка, начинается ли строка с подстроки
      • Python String endswith: Проверка того, заканчивается ли строка подстрокой
      • Как удалить первый или последний символ из строки в Python
      • Как исправить: SyntaxError в Python - EOL при сканировании строкового литерала
      • Python String Contains: Проверка Наличия Подстроки в Строке
      • Как проверить, пустая ли строка в Python
      • Python Новая Строка и Как Печатать Без Переноса Строки
      • Как Конкатенировать Строки в Python: Полное Руководство
      • Python: Подсчет слов в строке или файле
      • Как создать список алфавита в Python
      • Python: Конкатенация строки и целого числа (Int)
      • Python: Сортировка строки (4 различных способа)
      • Python zfill и rjust: Добавление нулей в строку в Python
      • Python: Целое в Двоичное (Преобразование целого числа в двоичную строку)
      • Python rfind: Нахождение индекса последней подстроки в строке
      • Python SHA256 хеширование алгоритм: объяснение
      • Python: Усечение числа с плавающей точкой (6 различных способов)
      • Выбор между методами Python isdigit(), isnumeric() и isdecimal()
      • Python: Удаление специальных символов из строки
      • Python Приведение Строки к Нижнему Регистру с помощью .lower(), .casefold(), и .islower()
      • Python программа для проверки, является ли строка палиндромом (6 методов)
      • Python: Найдите все перестановки строки (3 легких способа!)
      • Python: Удаление пунктуации из строки (3 разных способа!)
      • Python: Найти индекс (или все индексы) подстроки в строке
      • Python: Удаление символов новой строки из строки
      • Python: Удаление символа из строки (4 способа)
      • Python: Количество вхождений в строке (4 способа!)
    • Встроенные функции Python
      • abs()
      • ascii()
      • aiter()
      • all()
      • any()
      • anext()
      • bin()
      • bool()
      • breakpoint()
      • bytearray()
      • bytes()
      • callable()
      • chr()
      • classmethod()
      • compile()
      • complex()
      • delattr()
      • dict()
      • dir()
      • divmod()
      • enumerate()
      • eval()
      • exec()
      • filter()
      • float()
      • format()
      • frozenset()
      • getattr()
      • globals()
      • hasattr()
      • hash()
      • help()
      • hex()
      • id()
      • input()
      • int()
      • issubclass()
      • iter()
      • len()
      • list()
      • locals()
      • map()
      • max()
      • memoryview()
      • min()
      • next()
      • object()
      • oct()
      • open()
      • ord()
      • pow()
      • print()
      • property()
      • range()
      • repr()
      • reversed()
      • round()
      • set()
      • setattr()
      • isinstance()
      • slice()
      • zip()
      • type()
      • sorted()
      • staticmethod()
      • str()
      • sum()
      • super()
      • tuple()
      • vars()
      • import()
    • Cобеседования Python. Разбор реальных вопросов.
    • Встроенные методы в Python
  • Учебники по Pandas и Numpy
    • Numpy
      • Функция активации ReLU для глубокого обучения: полное руководство по выпрямленному линейному блоку
      • Как нормализовать массивы NumPy (минимальное-максимальное масштабирование, Z-оценка, L2)
      • NumPy where: Условная обработка элементов массива
      • NumPy linspace: создание равномерно расположенных массивов с помощью np.linspace
      • Как рассчитать векторное произведение в Python
      • Разделение NumPy: Разделение массива NumPy на части
      • NumPy: Лучшие способы применения функции к массиву
      • NumPy full: Создание массивов с заданным значением
      • NumPy clip(): Ограничьте значения массива минимальным и максимальным значениями
      • NumPy cumsum: Расчет кумулятивных сумм массивов NumPy
      • Изучаем функцию np.histogram в NumPy: создаем гистограмму
      • NumPy arange(): Полное руководство (с примерами)
      • Руководство по индексации и срезам массивов NumPy: Полное руководство
      • NumPy argmin(): Получение индекса минимального значения в массивах
      • Выравнивание массива с помощью NumPy flatten
      • Объединение массивов NumPy по различным осям с использованием функции stack
      • Удаление размерности из массивов NumPy с помощью NumPy Squeeze
      • Функция np.repeat() NumPy: Повторение массивов NumPy
      • Использование функции NumPy.exp() для вычисления экспоненты
      • Реализация функции сигмоида на Python
      • NumPy Pad: Использование np.pad() для дополнения массивов и матриц
      • np.argmax(): Как использовать NumPy Argmax
      • NumPy logspace: Понимание функции np.logspace()
      • Использование NumPy Tile для Расположения Массивов
      • NumPy Zeros: Создание массивов и матриц с нулями в NumPy
      • Использование числа Пи в Python (NumPy и Math)
      • Распределение Нормального (Гауссова) Распределения в Numpy (Случайное Нормальное в Numpy)
      • NumPy для Data Science на Python
      • Расчет скалярного произведения с использованием Numpy в Python
      • Расчет натурального логарифма на Python
    • Pandas
      • Python сводные таблицы – Полное руководство
      • Изучение API стиля Pandas
      • Объяснение группировки по нескольким столбцам в Pandas с примерами
      • Удаление индексной колонки DataFrame в Pandas: Руководство с примерами
      • Pandas Quantile: Расчет процентилей в DataFrame
      • Как рассчитать скользящее среднее (среднее арифметическое) в Pandas
      • Руководство по использованию метода fillna в Pandas для работы с отсутствующими данными в DataFrame
      • Pandas unique(): Получение уникальных значений в DataFrame
      • Распакуйте Ваши Данные с Помощью Функции Melt в Pandas
      • Pandas date_range: Как Создать Диапазон Дат в Pandas
      • Сброс индекса в Pandas: как сбросить индекс в Pandas
      • Pandas replace() – Замена значений в DataFrame Pandas
      • Перемещение столбца DataFrame Pandas на позицию (В начало и в конец)
      • Учебное пособие по Python Pandas: полное руководство
      • Pandas: Замена NaN на нули
      • Преобразование DataFrame Pandas в файл Pickle
      • Конвертация Pandas DataFrame в JSON
      • Преобразование DataFrame Pandas в Словарь
      • Преобразование Pandas DataFrame в Список
      • Чтение файлов Parquet в Pandas с помощью pd.read_parquet
      • Pandas dropna(): Удаление отсутствующих записей и столбцов в DataFrame
      • Как Добавить Новый Столбец в DataFrame Pandas
      • Подсчёт уникальных значений в Pandas
      • Отображение всех столбцов и строк в DataFrame Pandas
      • Pandas to_excel: Запись DataFrames в файлы Excel
      • Как использовать Pandas для чтения файлов Excel в Python
      • Преобразование списка словарей в Pandas DataFrame
      • Как добавить/вставить строку в DataFrame Pandas
      • Диаграмма рассеяния в Pandas: Как создать диаграмму рассеяния в Pandas
      • Pandas to_datetime: Преобразование строки Pandas в дату и время
      • Введение в Pandas для Data Science
      • Индексация, Выборка и Присваивание Данных в Pandas
      • Суммирование и Анализ Pandas DataFrame
      • Преобразование столбцов Pandas с помощью map и apply
      • Группировка данных в Pandas с использованием cut и qcut
      • Дата и время в Pandas и Python
      • Очистка и подготовка данных в Pandas и Python
      • Pandas GroupBy: группировка, суммирование и агрегация данных в Python
      • Pandas Дата и Время в Части Даты (месяц, год и т.д.)
      • Pandas: Получение номера строки из DataFrame
      • Вычисление Взвешенного Среднего в Pandas и Python
      • Как перемешать строки Pandas Dataframe в Python
      • Pandas: количество столбцов (подсчет столбцов в DataFrame)
      • Pandas Sum: сложение столбцов и строк DataFrame
      • Pandas Diff: Вычисление Разницы Между Строками Pandas
      • Нормализация столбца или датафрейма Pandas (с использованием Pandas или sklearn)
      • Функция Rank в Pandas: Ранжирование данных в Dataframe (Эквивалент SQL row_number)
      • Pandas Describe: Описательная статистика вашего Dataframe
      • Pandas Shift: Перемещение столбца DataFrame вверх или вниз
      • 7 Способов Выполнения Выборки Данных в Pandas
      • Экспорт DataFrame Pandas в CSV файл – Использование .to_csv()
      • Pandas: Итерация по строкам DataFrame в Pandas
      • Pandas: Преобразование значений столбца в строки
      • Дисперсия в Pandas: Вычисление дисперсии столбца в Pandas Dataframe
      • Pandas: Создание DataFrame из списков (5 способов!)
      • Pandas Rename Index: Как переименовать индекс DataFrame в Pandas
      • Pandas: Подсчёт уникальных значений в объекте GroupBy
      • Pandas: Добавить дни к колонке с датами
      • Среднее в Pandas: Как рассчитать среднее для одной или нескольких колонок
      • Pandas Column to List – Конвертируйте колонку Pandas в список
      • Транспонирование Dataframe в Pandas
      • Python: Разделение DataFrame Pandas
  • Учебники Matplotlib и Seaborn
    • Seaborn
      • Регрессионные графики в Seaborn с использованием regplot и lmplot
      • Seaborn residplot – Построение остатков линейной регрессии
      • Seaborn jointplot() – Создание совместных графиков в Seaborn
      • Seaborn displot – Распределенческие графики в Python
      • Seaborn ecdfplot – Эмпирические функции накопленного распределения
      • Seaborn rugplot – Визуализация маргинальных распределений
      • Seaborn kdeplot – Создание графиков оценки плотности ядра
      • Seaborn histplot – Создание Гистограмм в Seaborn
      • Seaborn catplot – Визуализация категориальных данных в Python
      • Средняя тенденция для категориальных данных в Seaborn Pointplot
      • Seaborn stripplot: Jitter Plots для распределений категориальных данных
      • Seaborn Countplot – Подсчет категориальных данных в Python
      • Seaborn swarmplot: Bee Swarm Plots для распределения категориальных данных
      • Скрипичные графики Seaborn в Python: Полное руководство
      • Настройка расположения легенд Seaborn, меток, текста и т.д.
      • Тепловая карта Seaborn: Полное руководство
      • Создание многосекционных сеток в Seaborn с помощью FacetGrid
      • Удаление рамки в Seaborn: Как работать с рамкой
      • Заголовки и метки осей в Seaborn: добавление и настройка
      • Как установить Seaborn в Python (Исправление: no module named seaborn)
      • Seaborn relplot – Создание точечных и линейных графиков
    • Matplotlib
      • Режим Retina в Matplotlib: Улучшение Качества Графиков
      • Как построить функцию в Python с использованием Matplotlib
      • Как создать 3D-диаграммы рассеяния в Matplotlib
      • Как изменить размер шрифта в графике Matplotlib
      • Установка размера маркера в точечных диаграммах Matplotlib
      • Как изменить размер графика и фигуры в Matplotlib
      • Как добавить названия в Matplotlib: Заголовок, Подзаголовок, Названия Осей
      • Pandas Scatter Plot: Как создать диаграмму рассеяния в Pandas
      • Построение графиков в Python с помощью Matplotlib
      • Диаграммы рассеяния Matplotlib – Все, что вам нужно знать
      • Диаграммы с столбцами в Matplotlib – Узнайте все, что вам нужно знать
      • Линейные диаграммы Matplotlib – Всё, что вам нужно знать
      • Построение гистограммы в Python с Matplotlib и Pandas
  • Алгоритмы
    • Алгоритм поиска в ширину (BFS) в Python
    • Алгоритм поиска в глубину (DFS) на Python
  • AI создает хедж-фонд для анализа акций на Python
Powered by GitBook
On this page
  • Загрузка примера DataFrame
  • Разделение DataFrame Pandas по значению столбца
  • Получение всех групп DataFrame по значению
  • Разделение DataFrame Pandas по позиции
  • Разделение DataFrame Pandas на случайные строки
  • Заключение
  1. Учебники по Pandas и Numpy
  2. Pandas

Python: Разделение DataFrame Pandas

PreviousТранспонирование Dataframe в PandasNextУчебники Matplotlib и Seaborn

Last updated 15 hours ago

В этой статье вы узнаете, как разделить DataFrame Pandas разными способами. Вы научитесь разделять DataFrame по значению столбца, по позиции и по случайным значениям.

Умение разделять DataFrame Pandas является полезным навыком во многих приложениях: в машинном обучении для выбора случайных значений, при разделении данных на определённые группы для автоматизации отчётов и т. д.

Оглавление

Загрузка примера DataFrame

Если вы хотите следовать материалу урока, загрузите приведённый ниже образец DataFrame. Если у вас есть собственные данные, вы можете использовать их, хотя некоторые примеры могут потребовать дополнительной адаптации под ваш контекст.

Давайте начнём и загрузим данные!

import pandas as pd
df = pd.DataFrame.from_dict(
    {
        'Name': ['Jenny', 'Matt', 'Kristen', 'Jenny', 'Matt', 'Kristen', 'Jenny', 'Matt', 'Kristen', 'Jenny', 'Matt', 'Kristen'],
        'Year': [2020, 2021, 2022, 2020, 2021, 2022, 2020, 2021, 2022, 2020, 2021, 2022],
        'Income': [10000, 11000, 9000, 12000, 13000, 11000, 14000, 15000, 13000, 12000, 14000, 13000],
        'Gender': ['F', 'M', 'F', 'F', 'M', 'F', 'F', 'M', 'F', 'F', 'M', 'F']
    }
)
print(df)
       Name  Year  Income Gender
0     Jenny  2020   10000      F
1      Matt  2021   11000      M
2   Kristen  2022    9000      F
3     Jenny  2020   12000      F
4      Matt  2021   13000      M
5   Kristen  2022   11000      F
6     Jenny  2020   14000      F
7      Matt  2021   15000      M
8   Kristen  2022   13000      F
9     Jenny  2020   12000      F
10     Matt  2021   14000      M

Мы можем видеть, что у нас есть четыре столбца: Name (Имя), Year (Год), Income (Доход) и Gender (Пол). У нас есть данные о доходах трёх человек за три года, а также их пол. Давайте посмотрим, как мы можем разделить этот DataFrame!

Разделение DataFrame Pandas по значению столбца

Разделение DataFrame по значению столбца — это очень полезный навык. Он может пригодиться при автоматизации отчётов или при работе с различными категориями данных внутри DataFrame.

Вы научитесь разделять DataFrame по значениям столбцов с помощью метода .groupby().

Давайте посмотрим, как можно разделить DataFrame по столбцу Name (Имя):

grouped = df.groupby(df['Name'])
print(grouped.get_group('Jenny'))

Что мы сделали здесь:

  1. Создали объект группировки grouped, разделив DataFrame по столбцу Name (Имя),

  2. Использовали метод .get_group(), чтобы получить строки DataFrame, содержащие значение 'Jenny'.

Получение всех групп DataFrame по значению

Метод, который вы изучили выше, полезен, если вы заранее знаете, какую группу хотите получить.

Теперь вы узнаете, как разделить DataFrame на все возможные группы.

Начнём с того, что получим все уникальные значения в столбце. Для этого воспользуемся методом Pandas .unique(), о котором вы можете подробнее узнать в моей статье по этой ссылке. Если вы предпочитаете видеоформат, посмотрите мой ролик ниже:

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

grouped = df.groupby(df['Name'])

path_to_directory = '/Users/datagy/'
for name in df['Name'].unique():
    temporary_df = grouped.get_group(name)
    temporary_df.to_excel(f'{path_to_directory}name.xlsx')

Что мы сделали здесь — это пройтись циклом по уникальным значениям столбца Name в DataFrame, получить соответствующую группу для каждого имени и сохранить её в отдельный файл Excel.

Разделение DataFrame Pandas по позиции

В этом разделе вы узнаете, как разделить DataFrame Pandas по определённой позиции внутри данных. Например, как разделить DataFrame пополам или на трети.

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

Важно правильно определить те строки, которые вы хотите выбрать. Для этого можно использовать встроенную функцию len(), чтобы узнать длину DataFrame. Если вы хотите узнать больше о способах определения количества строк в DataFrame, прочитайте мой урок по этой ссылке.

Предположим, что мы хотим разделить DataFrame пополам — то есть разрезать данные по строкам в середине.

Чтобы найти середину DataFrame, нужно определить его длину и разделить на два. После этого мы можем использовать акцессор .iloc для разделения данных:

>>> half_df = len(df) // 2
>>> first_half = df.iloc[:half_df,]

>>> print(first_half)

      Name  Year  Income Gender
0    Jenny  2020   10000      F
1     Matt  2021   11000      M
2  Kristen  2022    9000      F
3    Jenny  2020   12000      F
4     Matt  2021   13000      M
5  Kristen  2022   11000      F

Мы можем видеть, что DataFrame вернул первую половину значений. Теперь давайте посмотрим, как превратить это в функцию, которая разделит DataFrame на несколько частей:

def split_dataframe_by_position(df, splits):
    """
    Разбивает dataframe на указанное количество частей по позиции.

    Аргументы:
        df: Pandas DataFrame, который нужно разбить.
        splits: Целое число, количество частей, на которые нужно разбить DataFrame.

    Возвращает:
        Список Pandas DataFrames.
    """
    dataframes = []
    index_to_split = len(df) // splits
    start = 0
    end = index_to_split
    for split in range(splits):
        temporary_df = df.iloc[start:end, :]
        dataframes.append(temporary_df)
        start += index_to_split
        end += index_to_split
    return dataframes

# Пример использования (предполагается, что DataFrame 'df' уже определен)
# split_dataframes = split_dataframe_by_position(df, 3)
# print(split_dataframes[1])
      Name  Year  Income Gender
4     Matt  2021   13000      M
5  Kristen  2022   11000      F
6    Jenny  2020   14000      F
7     Matt  2021   15000      M

Давайте разберём, что делает эта функция:

  1. Создаётся список dataframes, в который будут добавляться результирующие части DataFrame.

  2. Определяется количество строк, которое должна содержать каждая часть, и это значение присваивается переменной index_to_split.

  3. Задаются начальные значения: start = 0 и end = index_to_split.

  4. Далее происходит цикл по количеству частей, на которые мы хотим разделить DataFrame. На каждом шаге выбираются данные от start до end.

  5. Полученная часть DataFrame добавляется в список dataframes, после чего значения start и end увеличиваются для следующей итерации.

  6. В конце функция возвращает список разделённых DataFrame, к которым можно получить доступ по индексу.

Поскольку списки в Python индексируются с нуля, первую часть можно получить как dataframes[0].

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

Разделение DataFrame Pandas на случайные строки

Также можно выбрать случайные строки из DataFrame. Для этого Pandas предоставляет удобный метод .sample(), который позволяет выбрать либо определённое количество строк, либо долю от всех строк. Это особенно полезно, если вам нужно произвольное разделение данных.

Давайте посмотрим, как разделить DataFrame пополам с помощью метода .sample() в Pandas:

>>> half_df = df.sample(frac=0.5)
>>> print(half_df)

      Name  Year  Income Gender
9    Jenny  2020   12000      F
0    Jenny  2020   10000      F
7     Matt  2021   15000      M
1     Matt  2021   11000      M
6    Jenny  2020   14000      F
2  Kristen  2022    9000      F

Мы можем видеть, что DataFrame вернул случайный набор строк.

Теперь давайте посмотрим, как выбрать определённое количество строк с помощью метода .sample() в Pandas:

>>> df_3 = df.sample(n=3)
>>> print(df_3)

       Name  Year  Income Gender
9     Jenny  2020   12000      F
11  Kristen  2022   13000      F
0     Jenny  2020   10000      F

Здесь мы использовали параметр n= для указания количества возвращаемых строк.

Заключение

В этой статье вы узнали, как разделить DataFrame в Pandas. В частности, вы научились разделять DataFrame по значению столбца, по позиции и по случайным значениям.

Чтобы узнать больше о методе .sample() в Pandas, ознакомьтесь с официальной документацией по .

этой ссылке
Загрузка примера dataframe
Разделение DataFrame Pandas по значению столбца
Получение всех групп DataFrame по значению
Разделение DataFrame Pandas по позиции
Разделение DataFrame Pandas на случайные строки
Заключение