Освоение мультииндексных запросов в Pandas: подробное руководство с примерами кода

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

Содержание:

  1. Создание мультииндексного фрейма данных

  2. Выбор строк и столбцов
    2.1. Использование loc[]
    2.2. Использование xs()
    2.3. Использование срезов

  3. Фильтрация с помощью логического индексирования
    3.1. Фильтрация по одному условию
    3.2. Фильтрация по нескольким условиям

  4. Расширенные методы индексирования
    4.1. Использование get_level_values()
    4.2. Использование stack() и unstack()
    4.3. Использование reset_index() и set_index()

  5. Агрегирование данных
    5.1. Использование groupby() и sum()
    5.2. Использование Pivot_table()

  6. Объединение уровней индекса
    6.1. Использование swaplevel()
    6.2. Использование reorder_levels()

  7. Оптимизация производительности
    7.1. Использование категориального индексирования
    7.2. Использование отсортированных индексов

  8. Создание MultiIndex DataFrame:
    Мы начнем с создания образца MultiIndex DataFrame, с которым будем работать в примерах. Мы можем создать MultiIndex с помощью функций pd.MultiIndex.from_arrays()или pd.MultiIndex.from_tuples().

import pandas as pd
# Creating a MultiIndex DataFrame
index = pd.MultiIndex.from_arrays([['A', 'A', 'B', 'B'], [1, 2, 1, 2]], names=['Letter', 'Number'])
data = {'Value': [10, 20, 30, 40]}
df = pd.DataFrame(data, index=index)
  1. Выбор строк и столбцов.
    Мы рассмотрим различные методы выбора строк и столбцов из многоиндексного фрейма данных.

2.1. Использование loc[]:
Аксессор loc[]позволяет нам выбирать данные на основе меток.

# Selecting rows with loc[]
df.loc[('A', 1)]

2.2. Использование xs():
Функция xs()позволяет нам анализировать данные на основе определенного уровня индекса.

# Selecting rows with xs()
df.xs('A', level='Letter')

2.3. Использование срезов.
Срезы предоставляют более продвинутый способ одновременного выбора данных из нескольких уровней индекса.

# Selecting rows with slicers
idx = pd.IndexSlice
df.loc[idx['A':'B', 1], :]
  1. Фильтрация с помощью логического индексирования.
    Мы можем фильтровать MultiIndex DataFrame с использованием логического индексирования на основе определенных условий.

3.1. Фильтрация по одному условию:

# Filtering with a single condition
df[df['Value'] > 20]

3.2. Фильтрация по нескольким условиям:

# Filtering with multiple conditions
df[(df['Value'] > 20) & (df.index.get_level_values('Letter') == 'A')]
  1. Расширенные методы индексирования.
    Мы рассмотрим передовые методы индексирования для управления многоиндексными кадрами данных.

4.1. Использование get_level_values():

# Using get_level_values()
df[df.index.get_level_values('Number') == 2]

4.2. Использование stack() и unstack():

# Using stack() and unstack()
df.unstack()

4.3. Использование reset_index() и set_index():

# Using reset_index() and set_index()
df.reset_index(level='Number')
  1. Агрегирование данных.
    Мы можем выполнять агрегирование многоиндексных фреймов данных с помощью groupby() и Pivot_table().

5.1. Использование groupby() и sum():

# Using groupby() and sum()
df.groupby('Letter').sum()

5.2. Использование Pivot_table():

# Using pivot_table()
df.pivot_table(values='Value', index='Letter', columns='Number', aggfunc='sum')
  1. Объединение уровней индекса.
    Мы рассмотрим методы объединения уровней индекса в многоиндексном фрейме данных.

6.1. Использование swaplevel():

# Using swaplevel()
df.swaplevel('Letter', 'Number')

6.2. Использование reorder_levels():

# Using reorder_levels()
df.reorder_levels(['Number', 'Letter'])
  1. Оптимизация производительности.
    Мы обсудим методы оптимизации производительности запросов MultiIndex.

7.1. Использование категориального индексирования:

# Using Categorical Indexingdf['Letter'] = df['Letter'].astype('category')
df['Number'] = df['Number'].astype('category')

7.2. Использование отсортированных индексов:

# Using sorted indexes
df.sort_index()

В этой статье мы рассмотрели различные методы выполнения многоиндексных запросов в кадрах данных Pandas. Мы узнали, как создавать MultiIndex DataFrame, выбирать строки и столбцы с помощью loc[], xs() и срезов, фильтровать данные с помощью логического индексирования, использовать расширенные методы индексации, агрегировать данные с помощью groupby() и Pivot_table(), объединять уровни индекса. используя swaplevel() и reorder_levels(), и оптимизируйте производительность с помощью категориальной индексации и отсортированных индексов. С помощью этих методов вы можете эффективно анализировать и манипулировать иерархическими или структурированными данными в своих задачах анализа данных.

Не забудьте обратиться к официальной документации Pandas для получения более подробной информации и изучения возможностей запросов MultiIndex в ваших собственных проектах.