← Назад к вопросам

Расскажите о библиотеке Pandas в Python. Какие основные структуры данных она предоставляет?

1.6 Junior🔥 191 комментариев
#Python и инструменты

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Pandas: главная библиотека для анализа данных в Python

Pandas — это библиотека с открытым исходным кодом для обработки и анализа данных на Python. Она предоставляет мощные структуры данных и инструменты для работы с табличными данными, временными рядами и матричными операциями.

Основные структуры данных

1. Series Одномерный массив с метками (индексами). Как столбец в таблице.

import pandas as pd

# Создание Series
ages = pd.Series([25, 30, 35, 40], index=['Alice', 'Bob', 'Charlie', 'David'])
print(ages)
# Вывод:
# Alice     25
# Bob       30
# Charlie   35
# David     40

# Доступ к элементам
print(ages['Alice'])  # 25
print(ages[0])        # 25 (по позиции)
print(ages[ages > 30])  # фильтрация

Ключевые операции:

  • Индексация и срезы
  • Фильтрация по условиям
  • Арифметические операции
  • Применение функций (map, apply)

2. DataFrame Двумерная таблица с метками для строк и столбцов. Как Excel таблица.

# Создание DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'Salary': [50000, 60000, 75000]
}
df = pd.DataFrame(data)

# Вывод первых 2 строк
print(df.head(2))

# Доступ к столбцам
print(df['Name'])           # целый столбец
print(df[['Name', 'Age']])  # несколько столбцов

# Доступ к строкам
print(df.loc[0])            # по метке индекса
print(df.iloc[0])           # по позиции

# Фильтрация
print(df[df['Age'] > 25])
print(df[(df['Age'] > 25) & (df['Salary'] > 55000)])

3. Index Метки для строк и столбцов. Обеспечивает быстрый доступ к данным.

# Установка индекса
df.set_index('Name', inplace=True)
print(df.loc['Alice'])  # быстрый доступ по имени

# Multiindex (иерархический индекс)
arrays = [['A', 'A', 'B', 'B'], [1, 2, 1, 2]]
index = pd.MultiIndex.from_arrays(arrays)
df_multi = pd.DataFrame({'value': [10, 20, 30, 40]}, index=index)

Основные операции

Чтение и запись данных

# Чтение из CSV
df = pd.read_csv('data.csv')

# Чтение из SQL
import sqlalchemy
conn = sqlalchemy.create_engine('postgresql://user:pass@localhost/db')
df = pd.read_sql('SELECT * FROM users', conn)

# Запись в CSV
df.to_csv('output.csv', index=False)

# Запись в SQL
df.to_sql('users', conn, if_exists='append')

Очистка и трансформация данных

# Пропущенные значения
print(df.isnull())          # проверка
print(df.dropna())          # удаление
print(df.fillna(0))         # заполнение

# Дублирующиеся строки
print(df.duplicated())      # проверка
df.drop_duplicates(inplace=True)  # удаление

# Переименование столбцов
df.rename(columns={'Age': 'years_old'}, inplace=True)

# Изменение типов данных
df['Age'] = df['Age'].astype(int)
df['Date'] = pd.to_datetime(df['Date'])

Агрегация и группировка

# Базовые статистики
print(df.describe())           # сводка по числовым столбцам
print(df['Salary'].mean())     # среднее значение
print(df['Salary'].std())      # стандартное отклонение
print(df.corr())               # корреляция между столбцами

# GroupBy (как SQL GROUP BY)
grouped = df.groupby('Department')['Salary'].agg(['mean', 'sum', 'count'])
print(grouped)

# Множественная агрегация
agg_dict = {
    'Salary': ['mean', 'sum'],
    'Age': ['min', 'max']
}
result = df.groupby('Department').agg(agg_dict)

# Pivot таблицы
pivot = df.pivot_table(
    values='Salary',
    index='Department',
    columns='Gender',
    aggfunc='mean'
)

Объединение данных

# Merge (как SQL JOIN)
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'val1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'val2': [10, 20, 30]})

result = pd.merge(df1, df2, on='key', how='inner')  # inner join
result = pd.merge(df1, df2, on='key', how='left')   # left join

# Concat (объединение по строкам)
df3 = pd.concat([df1, df2], ignore_index=True)

# Append (добавление строк)
df1.append(df2, ignore_index=True)

Практический пример: анализ продаж

import pandas as pd

# Загрузка данных
sales = pd.read_csv('sales.csv')

# Проверка качества
print(sales.head())
print(sales.info())
print(sales.isnull().sum())

# Очистка
sales = sales.dropna()
sales['date'] = pd.to_datetime(sales['date'])

# Анализ по периодам
sales['month'] = sales['date'].dt.to_period('M')
monthly_sales = sales.groupby('month').agg({
    'amount': 'sum',
    'customer_id': 'count'
}).rename(columns={'customer_id': 'transactions'})

# Анализ по категориям
category_analysis = sales.groupby('category').agg({
    'amount': ['sum', 'mean', 'std'],
    'customer_id': 'count'
})

# RFM анализ (как я говорил ранее)
rfm = sales.groupby('customer_id').agg({
    'date': lambda x: (sales['date'].max() - x.max()).days,
    'order_id': 'count',
    'amount': 'sum'
})
rfm.columns = ['Recency', 'Frequency', 'Monetary']
print(rfm.describe())

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

# Для больших данных используй chunking
chunks = pd.read_csv('huge_file.csv', chunksize=10000)
for chunk in chunks:
    process_chunk(chunk)

# Типы данных экономят память
df['category'] = df['category'].astype('category')
df['id'] = df['id'].astype('uint32')  # вместо int64

# Использование query для фильтрации
df.query('Age > 25 and Salary > 50000')  # быстрее чем []

Почему Pandas незаменим для Product Analysts

  • Быстрая работа с данными — загрузить CSV, обработать, выгрузить в Excel за минуты
  • Интеграция — работает с SQL, JSON, Excel, API
  • Статистика — встроены describe(), corr(), rolling(), expanding()
  • Временные ряды — удобная работа с датами и периодами
  • Визуализация — интеграция с Matplotlib и Plotly
  • Масштабируемость — от 1Mb до 100Gb (с оптимизацией)

Практический совет: Для анализа начни с df.head(), df.info(), df.describe(). Это даст 80 процентов информации о данных.

Расскажите о библиотеке Pandas в Python. Какие основные структуры данных она предоставляет? | PrepBro