Поиск…


Примеры создания простых серий

Серия представляет собой одномерную структуру данных. Это немного похоже на суперзарядный массив или словарь.

import pandas as pd

s = pd.Series([10, 20, 30])

>>> s
0    10
1    20
2    30
dtype: int64

Каждое значение в ряду имеет индекс. По умолчанию индексы являются целыми числами, начиная от 0 до длины серии минус 1. В приведенном выше примере вы можете увидеть индексы, напечатанные слева от значений.

Вы можете указать свои собственные индексы:

s2 = pd.Series([1.5, 2.5, 3.5], index=['a', 'b', 'c'], name='my_series')

>>> s2
a    1.5
b    2.5
c    3.5
Name: my_series, dtype: float64

s3 = pd.Series(['a', 'b', 'c'], index=list('ABC'))

>>> s3
A    a
B    b
C    c
dtype: object

Серия с датой

import pandas as pd
import numpy as np

np.random.seed(0)
rng = pd.date_range('2015-02-24', periods=5, freq='T')
s = pd.Series(np.random.randn(len(rng)), index=rng)  
print (s)

2015-02-24 00:00:00    1.764052
2015-02-24 00:01:00    0.400157
2015-02-24 00:02:00    0.978738
2015-02-24 00:03:00    2.240893
2015-02-24 00:04:00    1.867558
Freq: T, dtype: float64

rng = pd.date_range('2015-02-24', periods=5, freq='T')
s1 = pd.Series(rng)  
print (s1)

0   2015-02-24 00:00:00
1   2015-02-24 00:01:00
2   2015-02-24 00:02:00
3   2015-02-24 00:03:00
4   2015-02-24 00:04:00
dtype: datetime64[ns]

Несколько советов о серии в Пандах

Предположим, что мы имеем следующую серию:

>>> import pandas as pd
>>> s = pd.Series([1, 4, 6, 3, 8, 7, 4, 5])
>>> s
0    1
1    4
2    6
3    3
4    8
5    7
6    4
7    5
dtype: int64

Подходы - это несколько простых вещей, которые пригодится, когда вы работаете с серией:

Чтобы получить длину s:

>>> len(s)
8

Чтобы получить доступ к элементу в s:

>>> s[4]
8

Чтобы получить доступ к элементу с помощью индекса:

>>> s.loc[2]
6

Для доступа к подсерии внутри s:

>>> s[1:3]
1    4
2    6
dtype: int64

Чтобы получить подсерию s с значениями больше 5:

>>> s[s > 5]
2    6
4    8
5    7
dtype: int64

Чтобы получить минимальное, максимальное, среднее и стандартное отклонение:

>>> s.min()
1
>>> s.max()
8
>>> s.mean()
4.75
>>> s.std()
2.2519832529192065

Чтобы преобразовать тип Series в float:

>>> s.astype(float)
0    1.0
1    4.0
2    6.0
3    3.0
4    8.0
5    7.0
6    4.0
7    5.0
dtype: float64

Чтобы получить значения в s как массив numpy:

>>> s.values
array([1, 4, 6, 3, 8, 7, 4, 5])

Чтобы сделать копию s:

>>> d = s.copy()
>>> d
0    1
1    4
2    6
3    3
4    8
5    7
6    4
7    5
dtype: int64

Применение функции к серии

Pandas обеспечивает эффективный способ применения функции к каждому элементу серии и получения новой серии. Предположим, что мы имеем следующую серию:

>>> import pandas as pd
>>> s = pd.Series([3, 7, 5, 8, 9, 1, 0, 4])
>>> s
0    3
1    7
2    5
3    8
4    9
5    1
6    0
7    4
dtype: int64

и квадратная функция:

>>> def square(x):
...     return x*x

Мы можем просто применить квадрат к каждому элементу s и получить новую серию:

>>> t = s.apply(square)
>>> t
0     9
1    49
2    25
3    64
4    81
5     1
6     0
7    16
dtype: int64

В некоторых случаях легче использовать лямбда-выражение:

>>> s.apply(lambda x: x ** 2)
0     9
1    49
2    25
3    64
4    81
5     1
6     0
7    16
dtype: int64

или мы можем использовать любую встроенную функцию:

>>> q = pd.Series(['Bob', 'Jack', 'Rose'])
>>> q.apply(str.lower)
0     bob
1    jack
2    rose
dtype: object

Если все элементы серии являются строками, существует более простой способ применения строковых методов:

>>> q.str.lower()
0     bob
1    jack
2    rose
dtype: object
>>> q.str.len()
0    3
1    4
2    4


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow