Привет! Pandas — это сердце анализа данных в Python. Без неё невозможно представить Data Science, аналитику и работу с табличными данными. Сегодня мы начнём знакомство с этой библиотекой и изучим её базовый строительный блок — Series.
В этой статье мы разберём:
- Установку Pandas
- Что такое Series
- Создание Series из разных источников
- Индексы и доступ к данным
- Базовые операции и атрибуты
- Что нужно знать перед началом
- Основная часть
- Установка Pandas
- Что такое Series
- Создание Series
- Доступ к данным
- Атрибуты Series
- Базовые операции
- Индексы и позиции
- Полный пример
- Задачи для закрепления
- Нюансы и подводные камни
- Индекс может быть не уникальным
- Индексы и позиции — разное
- Пустые значения
- Частые ошибки и как их избежать
- Ошибка 1: Путаница между loc и iloc
- Ошибка 2: Неправильный индекс
- Ошибка 3: Забыл импортировать pandas
- Шпаргалка
- Заключение
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python
- Базовое понимание списков и словарей
Совет: Pandas построен на NumPy, поэтому для работы с большими данными он очень быстрый.
Основная часть
Установка Pandas
pip install pandasПроверка установки:
import pandas as pd
print(pd.__version__) # 2.2.xСовет: Рекомендуется устанавливать в виртуальное окружение.
Что такое Series
Series — это одномерный массив данных с индексами (как колонка в Excel или таблице).
import pandas as pd
# Создаём Series из списка
s = pd.Series([10, 20, 30, 40, 50])
print(s)Результат:
0 10
1 20
2 30
3 40
4 50
dtype: int64Совет: Слева — индексы, справа — значения.
Создание Series
Из списка:
# Без индексов (автоматические)
s1 = pd.Series([1, 2, 3, 4, 5])
print(s1)
# С произвольными индексами
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s2)Из словаря:
# Ключи словаря становятся индексами
data = {'a': 10, 'b': 20, 'c': 30}
s = pd.Series(data)
print(s)
# a 10
# b 20
# c 30Из скаляра:
# Повторяет значение для всех индексов
s = pd.Series(5, index=['x', 'y', 'z'])
print(s)
# x 5
# y 5
# z 5Доступ к данным
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
# По индексу
print(s['b']) # 20
print(s[2]) # 30 (по позиции)
# Срез
print(s['b':'d'])
# b 20
# c 30
# d 40
# Список индексов
print(s[['a', 'c', 'e']])
# a 10
# c 30
# e 50
# Условие
print(s[s > 30])
# d 40
# e 50Совет:
s['b':'d']включает последний индекс, в отличие от списков.
Атрибуты Series
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s.values) # [1 2 3 4 5] (массив NumPy)
print(s.index) # Index(['a', 'b', 'c', 'd', 'e'])
print(s.dtype) # int64
print(s.size) # 5
print(s.shape) # (5,)
print(s.empty) # False
print(s.nbytes) # 40 (байт)Совет:
valuesвозвращает массив NumPy — это быстро и удобно.
Базовые операции
s = pd.Series([1, 2, 3, 4, 5])
# Арифметика
print(s + 10) # [11, 12, 13, 14, 15]
print(s * 2) # [2, 4, 6, 8, 10]
print(s ** 2) # [1, 4, 9, 16, 25]
# Агрегация
print(s.sum()) # 15
print(s.mean()) # 3.0
print(s.min()) # 1
print(s.max()) # 5
print(s.std()) # 1.58
print(s.describe()) # полная статистикаСовет:
describe()даёт быстрый обзор данных.
Индексы и позиции
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
# По индексу
print(s['c']) # 30
print(s.loc['c']) # 30 (явное использование)
# По позиции
print(s[2]) # 30
print(s.iloc[2]) # 30 (явное использование)
# Первые три
print(s.head(3))
# a 10
# b 20
# c 30
# Последние два
print(s.tail(2))
# d 40
# e 50Важно:
loc— по индексу,iloc— по позиции. Это важно для избежания путаницы.
Полный пример
import pandas as pd
# Создаём Series с данными о продажах
sales = pd.Series(
[150, 200, 250, 180, 320],
index=['Пн', 'Вт', 'Ср', 'Чт', 'Пт']
)
print("Продажи по дням:")
print(sales)
print("\nСтатистика:")
print(f"Сумма: {sales.sum()}")
print(f"Среднее: {sales.mean():.2f}")
print(f"Максимум: {sales.max()} ({sales.idxmax()})")
print(f"Минимум: {sales.min()} ({sales.idxmin()})")
print("\nДни с продажами > 200:")
print(sales[sales > 200])Результат:
Продажи по дням:
Пн 150
Вт 200
Ср 250
Чт 180
Пт 320
dtype: int64
Статистика:
Сумма: 1100
Среднее: 220.00
Максимум: 320 (Пт)
Минимум: 150 (Пн)
Дни с продажами > 200:
Ср 250
Пт 320
dtype: int64Задачи для закрепления
Задача 1. Создай Series из списка [5, 10, 15, 20, 25].
Задача 2. Создай Series из словаря {'a': 1, 'b': 2, 'c': 3}.
Задача 3. Получи элемент с индексом 'b'.
Задача 4. Получи элементы больше 10.
Задача 5. Вычисли сумму и среднее Series.
Ответы:
import pandas as pdЗадача 1.
s = pd.Series([5, 10, 15, 20, 25])
print(s)Задача 2.
s = pd.Series({'a': 1, 'b': 2, 'c': 3})
print(s)Задача 3.
print(s['b']) # 2Задача 4.
print(s[s > 10]) # 15, 20, 25Задача 5.
print(s.sum()) # 75
print(s.mean()) # 15.0Нюансы и подводные камни
Индекс может быть не уникальным
s = pd.Series([1, 2, 3], index=['a', 'a', 'b'])
print(s['a']) # [1, 2] — два значения!Индексы и позиции — разное
loc — по индексу, iloc — по позиции. Не путай их.
Пустые значения
Pandas использует NaN для пропусков.
Частые ошибки и как их избежать
Ошибка 1: Путаница между loc и iloc
Используй loc для индексов, iloc для позиций.
Ошибка 2: Неправильный индекс
Проверяй индексы через s.index.
Ошибка 3: Забыл импортировать pandas
Всегда: import pandas as pd
Шпаргалка
| Что нужно | Как пишется |
|---|---|
| Импорт | import pandas as pd |
| Создать Series | pd.Series([1, 2, 3]) |
| С индексами | pd.Series([1, 2, 3], index=['a', 'b', 'c']) |
| Доступ по индексу | s['a'] |
| Доступ по позиции | s[0] |
| Первые N | s.head(N) |
| Последние N | s.tail(N) |
| Статистика | s.describe() |
Заключение
Сегодня мы:
- Установили Pandas
- Познакомились с Series
- Научились создавать и работать с Series
- Разобрали атрибуты и операции







![Выбор колонок и строк: [] vs loc vs iloc](https://imi-ds.ru/wp-content/uploads/2026/08/vybor-kolonok-i-strok-vs-loc-vs-iloc-335x220.webp)
