Лабораторная работа 6 Индексаци, сортировка и фильтрация


Сортировка и ранжирование



бет9/10
Дата14.10.2023
өлшемі184.93 Kb.
#480761
түріЛабораторная работа
1   2   3   4   5   6   7   8   9   10
Лабораторная работа 6 Анализ данных

Сортировка и ранжирование
Сортировка набора данных по некоторому критерию – еще одна важная встроенная операция. Для лексикографической сортировки по индексу служит метод sort_index, который возвращает новый отсортированный объект:

In [201]: obj = Series(range(4), index=['d', 'a', 'b', 'c'])


In [202]: obj.sort_index()
Out[202]:
a 1
b 2
c 3
d 0
dtype: int64

В случае DataFrame можно сортировать по индексу, ассоциированному с любой осью:


In [203]: frame = pd.DataFrame(np.arange(8).reshape((2, 4)),


.....: index=['three', 'one'],
.....: columns=['d', 'a', 'b', 'c'])
In [204]: frame.sort_index()
Out[204]:
d a b c
one 4 5 6 7
three 0 1 2 3
In [205]: frame.sort_index(axis=1)
Out[205]:
a b c d
three 1 2 3 0
one 5 6 7 4

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


In [206]: frame.sort_index(axis=1, ascending=False)


Out[206]:
d c b a
three 0 3 2 1
one 4 7 6 5

Для сортировки Series по значениям служит метод sort_values:


In [207]: obj = pd.Series([4, 7, –3, 2])


In [208]: obj.sort_values()
Out[208]:
2 –3
3 2
0 4
1 7
dtype: int64

Отсутствующие значения по умолчанию оказываются в конце Series:


In [209]: obj = Series([4, np.nan, 7, np.nan, –3, 2])
In [210]: obj.sort_values()
Out[210]:
4 –3.0
5 2.0
0 4.0
2 7.0
1 NaN
3 NaN
dtype: float64

Объект DataFrame можно сортировать по значениям в одном или нескольких столбцах. Для этого имена столбцов следует передать в качестве значения параметра by метода sort_values:


In [211]: frame = pd.DataFrame({'b': [4, 7, –3, 2], 'a': [0, 1, 0, 1]})


In [212]: frame
Out[212]:
a b
0 0 4
1 1 7
2 0 –3
3 1 2

In [213]: frame.sort_values(by='b')


Out[213]:
a b
2 0 –3
3 1 2
0 0 4
1 1 7
Для сортировки по нескольким столбцам следует передать список имен:

In [214]: frame.sort_index(by=['a', 'b'])


Out[214]:
a b
2 0 –3
0 0 4
3 1 2
1 1 7
Ранжирование заключается в присваивании рангов – от единицы до числа присутствующих в массиве элементов. Для ранжирования применяется метод rank объектов Series и DataFrame; по умолчанию rank обрабатывает связанные ранги, присваивая каждой группе средний ранг:

In [215]: obj = Series([7, –5, 7, 4, 2, 0, 4])


In [216]: obj.rank()
Out[216]:
0 6.5
1 1.0
2 6.5
3 4.5
4 3.0
5 2.0
6 4.5
dtype: float64

Ранги можно также присваивать в соответствии с порядком появления в данных:


In [217]: obj.rank(method='first')


Out[217]:
0 6.0
1 1.0
2 7.0
3 4.0
4 3.0
5 2.0
6 5.0
dtype: float64

Здесь элементам 0 и 2 присвоен не средний ранг 6.5, а ранг 6 и 7, потому что в данных метка 0 предшествует метке 2. Можно ранжировать и в порядке убывания:


# В случае связанных рангов выбрать максимальный ранг в группе

In [218]: obj.rank(ascending=False, method='max')


Out[218]:
0 2.0
1 7.0
2 2.0
3 4.0
4 5.0
5 6.0
6 4.0
dtype: float64

В табл. 5.6 перечислены способы обработки связанных рангов.






Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет