В этой статье блога мы рассмотрим различные методы выполнения многоиндексных запросов в кадрах данных Pandas. MultiIndex — это мощная функция Pandas, которая позволяет эффективно работать с иерархическими или структурированными данными. Мы рассмотрим различные методы и предоставим примеры кода для иллюстрации каждого метода.
Содержание:
-
Создание мультииндексного фрейма данных
-
Выбор строк и столбцов
2.1. Использование loc[]
2.2. Использование xs()
2.3. Использование срезов -
Фильтрация с помощью логического индексирования
3.1. Фильтрация по одному условию
3.2. Фильтрация по нескольким условиям -
Расширенные методы индексирования
4.1. Использование get_level_values()
4.2. Использование stack() и unstack()
4.3. Использование reset_index() и set_index() -
Агрегирование данных
5.1. Использование groupby() и sum()
5.2. Использование Pivot_table() -
Объединение уровней индекса
6.1. Использование swaplevel()
6.2. Использование reorder_levels() -
Оптимизация производительности
7.1. Использование категориального индексирования
7.2. Использование отсортированных индексов -
Создание 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)
- Выбор строк и столбцов.
Мы рассмотрим различные методы выбора строк и столбцов из многоиндексного фрейма данных.
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], :]
- Фильтрация с помощью логического индексирования.
Мы можем фильтровать 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')]
- Расширенные методы индексирования.
Мы рассмотрим передовые методы индексирования для управления многоиндексными кадрами данных.
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')
- Агрегирование данных.
Мы можем выполнять агрегирование многоиндексных фреймов данных с помощью 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')
- Объединение уровней индекса.
Мы рассмотрим методы объединения уровней индекса в многоиндексном фрейме данных.
6.1. Использование swaplevel():
# Using swaplevel()
df.swaplevel('Letter', 'Number')
6.2. Использование reorder_levels():
# Using reorder_levels()
df.reorder_levels(['Number', 'Letter'])
- Оптимизация производительности.
Мы обсудим методы оптимизации производительности запросов 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 в ваших собственных проектах.