Нашли ошибку?
базовыйpandas 3.0.6

Что такое pandas

Библиотека для табличных данных — прочитать файл, отобрать строки, посчитать итоги, объединить таблицы.

Содержание статьи

Коротко

  • Series — одномерный массив значений с индексом (метками строк).
  • DataFrame — таблица: набор столбцов-Series с общим индексом. У каждого столбца свой тип.
  • Операции применяются к целому столбцу сразу, как в NumPy: df["a"] * 2.
  • Принято импортировать так: import pandas as pd. Во всех примерах справочника pd и np уже импортированы.
  • Примеры в стиле Jupyter: под кодом — вывод print и значение последней строки. В .py-файле оберните последнюю строку в print().

Главное о pandas 3

Справочник написан для pandas 3.0. Если код из интернета ведёт себя иначе, скорее всего, дело в одном из этих изменений:

  • строки по умолчанию хранятся в типе str, а не object — строки;
  • любая выборка ведёт себя как копия (Copy-on-Write), цепочечное присваивание не работает — Copy-on-Write;
  • даты из строк получают разрешение в микросекундах, а не наносекундах — даты;
  • удалены applymap, fillna(method=…), частоты M, Q, Y и другие устаревшие API — отмечены в статьях.

Синтаксис

import pandas as pd

s = pd.Series([1, 2, 3], index=["a", "b", "c"])
df = pd.DataFrame({"имя_столбца": [значения], ...})
df["столбец"]            # столбец — это Series
pd.__version__

Примеры

Данные для примеровиспользуются во всех примерах ниже
sales = pd.DataFrame({
    "city": ["Омск", "Тула", "Сочи"],
    "cups": [120, 85, 240],
    "price": [180.0, 165.0, 210.0],
})
Series — значения с метками
temps = pd.Series([12.5, 9.0, 21.3], index=["Омск", "Тула", "Сочи"])
temps
Вывод
Омск    12.5
Тула     9.0
Сочи    21.3
dtype: float64
DataFrame — таблица
sales
Вывод
   city  cups  price
0  Омск   120  180.0
1  Тула    85  165.0
2  Сочи   240  210.0
Столбец таблицы — Series
col = sales["cups"]
print(type(col))
col
Вывод
<class 'pandas.Series'>
0    120
1     85
2    240
Name: cups, dtype: int64
Вычисление по целому столбцу
sales["revenue"] = sales["cups"] * sales["price"]   # столбец целиком, без цикла
sales
Вывод
   city  cups  price  revenue
0  Омск   120  180.0  21600.0
1  Тула    85  165.0  14025.0
2  Сочи   240  210.0  50400.0
Какая версия установлена
pd.__version__
Вывод
'3.0.6'

Подводные камни

Тип строк изменился

Тип строкового столбца
names = pd.Series(["Аня", "Борис"])
print(names.dtype)
names.dtype == object          # старая проверка «строковый ли столбец» больше не работает
Вывод
str
False

Цикл по строкам вместо операции над столбцом

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

Под столбцом — массив NumPy
sales["cups"].to_numpy()                             # данные столбца — массив NumPy
Вывод
array([120,  85, 240])