Top.Mail.Ru
Новости Urban University

Передовые методы Pandas.

Статьи Преподавателей
Pandas — библиотека Python для анализа данных, используемая для обработки и преобразования больших наборов данных. Освоение передовых методов Pandas может повысить эффективность и качество анализа. В этой статье мы рассмотрим обработку пропущенных данных, работу с многоиндексными DataFrame и способы оптимизации производительности.

🔷Обработка пропущенных данных

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

1. Идентификация пропусков

Используйте методы isnull() и notnull() для обнаружения пропущенных значений:

import pandas as pd

df = pd.read_csv('data.csv')

missing_data = df.isnull()

2. Удаление пропущенных данных

Метод dropna() удаляет строки или столбцы с пропусками:

- Удаление строк с пропусками:

df_clean = df.dropna(axis=0)

- Удаление столбцов с пропусками:

df_clean = df.dropna(axis=1)

3. Заполнение пропусков

Используйте fillna() для замены пропусков:

- Заполнение нулями:

df_filled = df.fillna(0)

- Заполнение средним значением столбца:

df['column'] = df['column'].fillna(df['column'].mean())

4. Интерполяция данных

Метод interpolate() заполняет пропуски на основе соседних значений:

df_interpolated = df.interpolate(method='linear')

🔷Работа с многоиндексными DataFrame

Многоиндексные DataFrame позволяют работать с данными, имеющими сложную иерархическую структуру.

1. Создание многоиндекса

- Из существующих столбцов:

df_multi = df.set_index(['Level1', 'Level2'])

- С использованием `MultiIndex`:

index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1)])

df_multi = pd.DataFrame(data, index=index)

2. Навигация по многоиндексу

- Доступ к данным:

df_multi.loc['A']

df_multi.loc[('A', 1)]

- Выборка по уровню:

df_multi.xs('A', level='Level1')

3. Агрегация данных

- Группировка по уровню индекса:

df_grouped = df_multi.groupby(level='Level1').sum()

🔷Оптимизация производительности

При работе с большими наборами данных важно оптимизировать код для повышения скорости выполнения.

1. Эффективные типы данных

Преобразование столбцов в категориальные типы снижает использование памяти:

df['category_column'] = df['category_column'].astype('category')

2. Векторизация операций

Избегайте циклов for, используя векторизированные операции:

df['total'] = df['quantity'] * df['price']

3. Методы `eval()` и `query()`

Эти методы ускоряют вычисления:

- `query()`:

df_filtered = df.query('quantity > 10')

- `eval()`:

df.eval('total = quantity * price', inplace=True)

4. Обработка данных по частям

Для больших файлов используйте chunksize в read_csv():

for chunk in pd.read_csv('large_data.csv', chunksize=100000):

process(chunk)