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

Series

Одномерный столбец данных с метками — из списка, словаря или одного значения.

Нужно знать:Что такое pandas

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

Коротко

  • pd.Series(данные, index=…, name=…) — значения плюс индекс. Без index метки — 0, 1, 2…
  • Из словаря ключи становятся индексом. Из одного значения с index — это значение повторяется.
  • s["метка"] — по метке, s.iloc[i] — по позиции, s[s > 0] — по условию.
  • s.index — метки, s.to_numpy() — значения как массив NumPy, s.name — имя (станет именем столбца в DataFrame).
  • Пропуск в целых числах превращает весь Series в float64, потому что NaN — это float.

Синтаксис

pd.Series(data, index=None, dtype=None, name=None)
s["метка"], s.iloc[0]
s.index, s.to_numpy(), s.name, s.dtype

Параметры

ПараметрЧто делаетПо умолчанию
dataсписок, массив, словарь или одно значениеобязательный
indexметки; длина должна совпадать с даннымиRangeIndex 0…n−1
dtypeтип значений, например "int64", "float64", "str", "category"по данным
nameимя SeriesNone

Примеры

Из списка
pd.Series([12, 15, 9])                            # индекс по умолчанию 0, 1, 2
Вывод
0    12
1    15
2     9
dtype: int64
Со своими метками и именем
visits = pd.Series([120, 85, 240], index=["пн", "вт", "ср"], name="visits")
visits
Вывод
пн    120
вт     85
ср    240
Name: visits, dtype: int64
Из словаря
pd.Series({"Омск": 1.2, "Тула": 0.5, "Сочи": 0.4})   # ключи стали индексом
Вывод
Омск    1.2
Тула    0.5
Сочи    0.4
dtype: float64
Одно значение на все метки
pd.Series(0, index=["a", "b", "c"])
Вывод
a    0
b    0
c    0
dtype: int64
Доступ по метке, позиции и условию
visits = pd.Series([120, 85, 240], index=["пн", "вт", "ср"])
print(visits["вт"])           # по метке
print(visits.iloc[0])         # по позиции
visits[visits > 100]          # по условию
Вывод
85
120
пн    120
ср    240
dtype: int64
Индекс, значения, имя, тип
visits = pd.Series([120, 85, 240], index=["пн", "вт", "ср"], name="visits")
print(visits.index)
print(visits.to_numpy())
visits.name, visits.dtype
Вывод
Index(['пн', 'вт', 'ср'], dtype='str')
[120  85 240]
('visits', dtype('int64'))

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

s[0] — это метка, а не позиция

Число в квадратных скобкахошибка: KeyError
visits = pd.Series([120, 85, 240], index=["пн", "вт", "ср"])
visits[0]                      # 0 — это метка, а такой метки нет
Ошибка
KeyError: 0

Пропуск меняет тип целых

None в списке целых превращается в NaN, и столбец становится float64. Чтобы сохранить целые с пропусками, используйте тип "Int64" — см. типы данных.

Целые с пропуском
pd.Series([3, None, 5])        # пропуск превращает целые в float
Вывод
0    3.0
1    NaN
2    5.0
dtype: float64