Pandas и NumPy: основа анализа данных в Python — informatik-m.ru

Pandas и NumPy: основа анализа данных в Python

Данные на октябрь 2026, Python 3.13, NumPy 2.5.3, pandas 3.0.6Опубликовано 5 ноября 2025Обновлено 17 сентября 20268 мин чтения
Стеллаж-таблица с кубиками и сканирующей рукой вдоль строки
Коротко
  • NumPy хранит числа в массивах и считает над всем массивом сразу, pandas работает с таблицами.
  • Столбец таблицы pandas опирается на массив NumPy, поэтому библиотеки обычно используют вместе.
  • Пропуски в данных обозначаются NaN: среднее по столбцу считается без них, но их нужно заметить.
  • Для небольших таблиц хватит обычного Python; библиотеки окупаются, когда данных много или операций много.
Содержание10 разделов ▾
  1. Зачем нужны NumPy и pandas
  2. Установка и проверка
  3. NumPy: массивы и операции
  4. pandas: Series и DataFrame
  5. Сводка и группировка
  6. Как связаны NumPy и pandas
  7. Когда хватает обычного Python
  8. Условия и ограничения
  9. Частые ошибки
  10. Короткий вывод

NumPy — библиотека Python для вычислений над массивами чисел, а pandas — библиотека для работы с таблицами; pandas построен на NumPy, поэтому их обычно используют вместе. Статья для тех, кто знает в Python списки, словари и циклы. Вы посчитаете сводку по небольшой таблице тремя способами: обычным Python, NumPy и pandas.

Определения взяты из документации NumPy и pandas. Код проверен запуском в чистом виртуальном окружении: Python 3.13.12, NumPy 2.5.3, pandas 3.0.6. Данные на октябрь 2026 года.

Зачем нужны NumPy и pandas

Возьмём учебную задачу: в таблице десять оценок пяти учеников по двум предметам, у одной оценки пропуск. Нужно найти среднее и максимум по предметам. Обычным Python это пишется так:

Python
import statistics

оценки = [
    ("Анна", "математика", 5), ("Анна", "физика", 4),
    ("Борис", "математика", 3), ("Борис", "физика", 4),
    ("Вера", "математика", 5), ("Вера", "физика", 5),
    ("Глеб", "математика", 4), ("Глеб", "физика", 2),
    ("Дарья", "математика", 4), ("Дарья", "физика", None),
]

по_предметам = {}
for имя, предмет, балл in оценки:
    if балл is not None:                      # пропуск приходится обрабатывать вручную
        по_предметам.setdefault(предмет, []).append(балл)

for предмет, баллы in по_предметам.items():
    print(предмет, "среднее:", statistics.mean(баллы), "максимум:", max(баллы), "оценок:", len(баллы))
Текст
математика среднее: 4.2 максимум: 5 оценок: 5
физика среднее: 4 максимум: 5 оценок: 4

Данные в этом примере придуманы для обучения, это не результаты реальных учеников. Код работает, но для каждой новой операции придётся писать свой цикл. Библиотеки берут это на себя.

Установка и проверка

Документация pandas описывает установку через pip из PyPI: pip install pandas. Для NumPy на странице установки перечислены несколько способов, в том числе pip. Обычно ставят оба пакета одной командой, лучше внутри виртуального окружения:

Текст
pip install numpy pandas

Проверка, что всё работает:

Python
import numpy as np
import pandas as pd

print(np.__version__, pd.__version__)
Текст
2.5.3 3.0.6

У вас версии могут быть другими. По данным PyPI, pandas 3.0.6 требует Python 3.11 или новее (на октябрь 2026 года).

NumPy: массивы и операции

Документация NumPy описывает ndarray как однородный многомерный массив. Однородный значит, что все элементы одного типа.

Python
import numpy as np

цены = [120, 80, 45, 200]
а = np.array(цены)
print(а, а.dtype, а.shape)
print(а * 2)
print(а * 1.2)
print(а.mean(), а.max(), а.sum())
print(а[а > 100])
Текст
[120  80  45 200] int64 (4,)
[240 160  90 400]
[144.  96.  54. 240.]
111.25 200 445
[120 200]

Что здесь видно. Умножение массива на число применяется ко всем элементам сразу: это векторная операция. Документация NumPy называет отсутствие явных циклов векторизацией и отмечает, что такой код короче и ближе к математической записи. Запись а[а > 100] — фильтр: в массив попадают только элементы, для которых условие истинно.

Двумерный массив и операции по осям:

Python
m = np.array([[1, 2, 3], [4, 5, 6]])
print(m.shape, m[1, 2], m[:, 0])
print(m.mean(axis=0), m.mean(axis=1))
Текст
(2, 3) 6 [1 4]
[2.5 3.5 4.5] [2. 5.]

axis=0 считает по столбцам, axis=1 — по строкам.

ДействиеСписок PythonМассив NumPy
Умножить все элементы на 2[x * 2 for x in цены]а * 2
[1, 2] * 2[1, 2, 1, 2] (повторение)np.array([1, 2]) * 2 даёт [2 4]
Типы элементовЛюбыеОдин тип на весь массив

Различие в строке про * 2 — частая ловушка: у списка умножение повторяет его, у массива — умножает каждый элемент.

pandas: Series и DataFrame

Документация pandas выделяет два основных типа: Series — одномерный массив с метками, DataFrame — двумерная структура, похожая на таблицу со строками и столбцами. Считаем ту же таблицу оценок. Данные для примера читаем прямо из текста через io.StringIO, как будто это файл CSV:

Python
import io
import pandas as pd

данные = """имя,предмет,балл
Анна,математика,5
Анна,физика,4
Борис,математика,3
Борис,физика,4
Вера,математика,5
Вера,физика,5
Глеб,математика,4
Глеб,физика,2
Дарья,математика,4
Дарья,физика,
"""
таблица = pd.read_csv(io.StringIO(данные))
print(таблица.head(3))
таблица.info()
Текст
     имя     предмет  балл
0   Анна  математика   5.0
1   Анна      физика   4.0
2  Борис  математика   3.0
<class 'pandas.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 3 columns):
 #   Column   Non-Null Count  Dtype  
---  ------   --------------  -----  
 0   имя      10 non-null     str    
 1   предмет  10 non-null     str    
 2   балл     9 non-null      float64
dtypes: float64(1), str(2)
memory usage: 372.0 bytes

head показывает первые строки, info — структуру: число строк, названия и типы столбцов. Видно, что в столбце балл девять значений из десяти, а тип стал float64: из-за пропуска pandas хранит оценки как дробные числа. Названия типов и строка memory usage зависят от версии pandas.

Сводка и группировка

Те же расчёты, что мы делали циклами, в pandas занимают две строки:

Python
print(таблица["балл"].mean())
print(таблица.groupby("предмет")["балл"].agg(["mean", "max", "count"]))
Текст
4.0
            mean  max  count
предмет                     
математика  4.20  5.0      5
физика      3.75  5.0      4

Среднее по столбцу pandas считает без пропусков: девять оценок, итог 4,0. Результат по группам совпал с нашим расчётом на чистом Python: математика 4,2, физика 3,75, оценок пять и четыре.

Фильтр строк и подсчёт пропусков:

Python
print(таблица[таблица["балл"] >= 5])
print(таблица["балл"].isna().sum())
Текст
    имя     предмет  балл
0  Анна  математика   5.0
4  Вера  математика   5.0
5  Вера      физика   5.0
1

Сводную статистику по столбцу даёт describe():

Python
print(таблица.describe())
Текст
       балл
count   9.0
mean    4.0
std     1.0
min     2.0
25%     4.0
50%     4.0
75%     5.0
max     5.0

Как связаны NumPy и pandas

Столбец DataFrame можно превратить в массив NumPy методом to_numpy():

Python
print(type(таблица["балл"].to_numpy()), таблица["балл"].dtype)
Текст
<class 'numpy.ndarray'> float64

Это и есть связь: pandas хранит числа в массивах NumPy и добавляет к ним метки, пропуски и операции над таблицами.

ЗадачаГде решать
Математика над числами, матрицыNumPy
Таблица с названиями столбцов, разные типыpandas
Чтение CSV и Excel, группировкаpandas
Фильтр и сводка по таблицеpandas

Для построения графиков обычно используют библиотеку matplotlib. В этой статье её нет; начните с документации pandas и matplotlib.

Когда хватает обычного Python

Библиотеки не нужны всегда. Для таблицы из десяти строк мы справились и без них.

ЗадачаЧем обойтись
Прочитать небольшой CSV и пройти по строкаммодуль csv из стандартной библиотеки
Среднее, максимум, медиана по нескольким числаммодуль statistics
Много данных, много столбцов, группировки и пропускиpandas
Числовые вычисления над массивами и матрицамиNumPy

Мы не измеряли скорость, поэтому не называем, во сколько раз библиотеки быстрее. Документация NumPy объясняет выигрыш векторизацией: циклы выполняются в скомпилированном коде. Для своих данных скорость проверяйте замером.

Условия и ограничения

Версия
NumPy 2.5.3, pandas 3.0.6 — код запущен в чистом виртуальном окружении с Python 3.13.12; в других версиях вывод info() и названия типов могут отличаться.
Python
3.11 и новее — по данным PyPI на октябрь 2026 года, это требование pandas 3.0.6.
Данные
Учебный набор — десять строк придуманы для примера; для реальных файлов используйте свои данные.
Размер
Небольшие таблицы — приёмы работы с миллионами строк в статье не разбираются.
Установка
Могут быть сложности — при ошибках импорта создайте новое виртуальное окружение и сверьтесь с документацией по установке.

Частые ошибки

  • Считают, что [1, 2] * 2 и np.array([1, 2]) * 2 дают одно и то же: список повторяется, массив умножается.
  • Не замечают пропуски: среднее считается без них, а количество значений меньше, чем строк.
  • Не смотрят типы: из-за пропуска целый столбец стал дробным.
  • Работают со срезом таблицы, не сделав .copy(): чтобы менять выборку независимо от исходной таблицы, копируйте её явно.
  • Перебирают строки таблицы циклом, когда есть векторная операция или groupby.
  • Ставят библиотеки в общую среду и ломают её при обновлении, вместо отдельного виртуального окружения.

Короткий вывод

NumPy даёт быстрые массивы чисел, pandas строит на них таблицы с названиями, группировкой и обработкой пропусков. Для маленьких таблиц хватает обычного Python, для реальных данных — нужны библиотеки. Начните с head(), info() и describe(), а в качестве следующего шага учебного маршрута читайте о том, как данные попадают в программу из внешнего сервиса, в статье про API.

Источники

  1. pandas: 10 minutes to pandas↗ pandas.pydata.org
  2. pandas: установка↗ pandas.pydata.org
  3. NumPy: the absolute basics for beginners↗ numpy.org
  4. NumPy: What is NumPy?↗ numpy.org
  5. NumPy: установка↗ numpy.org
  6. PyPI: pandas↗ pypi.org
  7. Яндекс Образование: Основы Python, модуль pandas (хендбук)↗ education.yandex.ru
  8. Википедия: Pandas↗ ru.wikipedia.org
  9. Википедия: NumPy↗ ru.wikipedia.org

Частые вопросы

Что такое pandas в Python?

pandas — это библиотека Python для работы с табличными данными. Документация описывает её как быстрый, мощный и гибкий инструмент анализа и обработки данных с открытым кодом. Основные структуры — Series (столбец с метками) и DataFrame (таблица со строками и столбцами). Библиотека читает файлы CSV и Excel, фильтрует, группирует и считает сводные показатели.

Чем NumPy отличается от pandas?

NumPy работает с массивами чисел одного типа, pandas — с таблицами, у которых есть названия столбцов и метки строк. NumPy даёт многомерный массив ndarray и функции для вычислений над ним. pandas строится поверх NumPy и добавляет таблицы, группировку, чтение файлов и работу с пропусками. На практике их используют вместе: для чисел — NumPy, для таблиц — pandas.

Как установить pandas и NumPy?

Обычно командой pip install numpy pandas, лучше в виртуальном окружении. Документация pandas описывает установку через pip из PyPI, а страница NumPy — несколько способов установки на выбор. После установки проверьте импорт: import numpy и import pandas. Для pandas 3.0.6 на PyPI указано требование Python 3.11 и выше. Если библиотека не импортируется, создайте новое виртуальное окружение и поставьте её заново.

Что такое DataFrame?

DataFrame — это двумерная таблица pandas со строками и столбцами. Документация pandas описывает её как структуру данных, похожую на двумерный массив или таблицу. У столбцов есть имена, у строк — индекс, а типы данных в разных столбцах могут быть разными: числа в одном, текст в другом. DataFrame создают из словаря, списка или файла CSV.

Где бесплатно учить pandas на русском?

Подойдёт хендбук «Основы Python» на платформе Яндекс Образования: в шестой главе есть отдельные разделы про модули math и numpy и про модуль pandas. По описанию авторов, специальные знания не нужны, хватит школьной базы по математике, логике и информатике. Официальная документация pandas и NumPy написана на английском, зато содержит короткие вводные руководства.

РедакцияМатериал подготовлен по источникам выше · 17 сентября 2026