Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь!
Если вы работаете с данными, то наверняка сталкивались с тем, что информации слишком много, она в разной форме и с ней нужно что-то делать быстро. Я ежедневно использую Pandas для анализа, трансформации и подготовки данных, и за годы работы выделил функции и приёмы, без которых моя жизнь аналитика была бы куда сложнее.
В этой статье я делюсь 10 функциями и методами Pandas, которые помогают мне каждый день. Примеры будут максимально практичные и понятные.
*очень тяжело выделить 10 топ функций, как оказалось (так как их реально много). Но думаю больше 10 расписывать в одной статье будет многовато, думаю сделаю еще вторую часть, если будет полезно кому-то.
1. read_excel и read_csv — быстрый старт
Конечно, базовые функции чтения данных — это первое, что нужно освоить. Но есть нюансы:
import pandas as pd
# Читаем Excel с конкретным листом
df = pd.read_excel('sales.xlsx', sheet_name='Февраль')
# Читаем CSV с кодировкой и нужными колонками
df = pd.read_csv('sales.csv', usecols=['SKU', 'Цена', 'Количество'], encoding='utf-8')
- pd.read_excel() и pd.read_csv() — базовые функции для загрузки данных в Pandas.
- sheet_name='Февраль' — выбирает конкретный лист Excel.
- usecols позволяет загрузить только нужные столбцы, что экономит память.
- encoding='utf-8' задает кодировку файла, полезно для корректного чтения русских символов.
Совет: всегда указывайте usecols, чтобы не тянуть лишние данные и не перегружать память (во всяком случае мне это очень помогает выбирать только нужно из маркетинговых отчетов с 40+ столбцами).
2. info() и describe() — быстрый обзор данных
Когда открываешь новый файл, первое, что я делаю:
df.info() # типы данных, пропуски
df.describe() # базовая статистика по числовым колонкам
С помощью этого легко понять, где есть пропуски, какие колонки числовые, а какие — текстовые, и с чего начать очистку.
3. apply() — мощь кастомных функций
Одна из самых гибких функций. Можно применить любую функцию к колонке:
# Допустим, хотим преобразовать цену в доллары
df['Цена_USD'] = df['Цена'].apply(lambda x: x / 75)
# Или сложная функция
def classify_qty(qty):
if qty < 10:
return 'Мало'
elif qty < 50:
return 'Средне'
else:
return 'Много'
df['Категория_количества'] = df['Количество'].apply(classify_qty)
apply незаменим, когда стандартные методы Pandas не подходят.
4. Распаковка JSON в столбцах
Иногда данные приходят как вложенный JSON в одной колонке. Pandas умеет их распаковывать:
import json
# Пример: колонка 'details' содержит JSON
df['details'] = df['details'].apply(json.loads)
# Превращаем JSON в отдельные колонки
details_df = pd.json_normalize(df['details'])
df = pd.concat([df.drop('details', axis=1), details_df], axis=1)
- json.loads() преобразует строку JSON в словарь Python.
- pd.json_normalize() превращает вложенный JSON в отдельные колонки.
- pd.concat(..., axis=1) объединяет исходную таблицу с распакованными колонками.
После этого можно работать с вложенными полями как с обычными колонками. Просто кайф!
5. merge() — объединение таблиц
Часто приходится соединять данные из разных источников:
df_sales = pd.read_csv('sales.csv')
df_products = pd.read_csv('products.csv')
df_merged = df_sales.merge(df_products, on='SKU', how='left')
Совет: используйте how='left' для сохранения основной таблицы и добавления информации. Смысл такой же как и LEFT JOIN в SQL.
6. groupby() — агрегируем с умом
Для аналитика это must-have:
# Считаем суммарную выручку по каждому SKU
df_grouped = df.groupby('SKU')['Выручка'].sum().reset_index()
# Несколько агрегатных функций сразу
df_grouped = df.groupby('Категория')['Количество'].agg(['sum', 'mean', 'max']).reset_index()
- groupby() объединяет данные по категориям.
- Можно агрегировать с помощью sum, mean, max или нескольких функций сразу через agg().
- reset_index() возвращает результат в привычный DataFrame.
С помощью groupby можно быстро получить статистику по любым срезам.
7. pivot_table() — сводные таблицы
Иногда нужен отчет в формате Excel-сводки прямо в Pandas:
pivot = pd.pivot_table(
df,
values='Выручка',
index='Регион',
columns='Месяц',
aggfunc='sum',
fill_value=0
)
- values — числовые значения для агрегирования.
- index — строки, columns — столбцы.
- aggfunc='sum' — суммируем данные.
- fill_value=0 — заменяем пропуски на 0.
Так удобно строить отчёты по месяцам, категориям и филиалам.
8. sort_values() и rank() — сортируем и ранжируем
Часто нужно найти топовые продукты или клиентов:
# Сортировка по выручке
df_top = df.sort_values('Выручка', ascending=False).head(10)
# Ранжирование внутри группы
df['Ранг'] = df.groupby('Регион')['Выручка'].rank(method='dense', ascending=False)
- sort_values() сортирует DataFrame по выбранной колонке.
- head(10) берет топ-10 значений.
- rank() присваивает ранги внутри групп (например, по региону).
- method='dense' — ранжирование без пропусков в числах.
9. fillna() и dropna() — работа с пропусками
Пропуски бывают всегда, и с ними нужно уметь работать:
# Заполняем пропуски средним значением
df['Цена'] = df['Цена'].fillna(df['Цена'].mean())
# Убираем строки, где нет SKU
df = df.dropna(subset=['SKU'])
- fillna() заполняет пропуски, например средним значением.
- dropna() удаляет строки с пропусками в конкретных колонках.
10. str методы — работа с текстом
Для аналитика данные часто в текстовом виде, и Pandas умеет их обрабатывать:
# Приведение к нижнему регистру
df['Название'] = df['Название'].str.lower()
# Проверка на наличие слова
df['Есть_акция'] = df['Название'].str.contains('акция')
# Разделение текста
df[['Бренд', 'Модель']] = df['Название'].str.split(' ', 1, expand=True)
- str.lower() — приводит текст к нижнему регистру.
- str.contains() — проверяет наличие слова или шаблона.
- str.split() с expand=True превращает текст в несколько колонок.
Итог
Эти 10 функций — мой ежедневный набор (точнее уверенный ежедневный костяк) для работы с данными. Они позволяют:
- Быстро загружать и смотреть данные
- Преобразовывать, очищать и объединять таблицы
- Работать с JSON и текстом
- Агрегировать и строить отчёты
Если освоить их, можно решать достаточно большой объем задач аналитика данных без лишних библиотек. Продолжение следует...
Я не претендую на последнюю инстанцию, я пишу о своём пути и опыте. Спасибо что дочитали до конца. Подпишитесь👇👇👇, ставьте лайки 👍🏽👍🏽👍🏽 впереди много интересных статей про навыки, инструменты, обучение, лайфхаки и пути аналитика.