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



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


Лабораторная работа 6
Индексаци, сортировка и фильтрация
Для объектов pandas важен метод reindex, т. е. возможность создания нового объекта, данные в котором согласуются с новым индексом. Рассмотрим пример:

In [91]: obj = Series([4.5, 7.2, –5.3, 3.6], index=['d', 'b', 'a', 'c'])


In [92]: obj
Out[92]:
d 4.5
b 7.2
a –5.3
c 3.6
dtype: float64

Если вызвать reindex для этого объекта Series, то данные будут реорганизованы в соответствии с новым индексом, а если каких-то из имеющихся в этом индексе значений раньше не было, то вместо них будут подставлены отсутствующие значения:


In [93]: obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])


In [94]: obj2
Out[94]:
a –5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64

Для упорядоченных данных, например временных рядов, иногда желательно произвести интерполяцию, или восполнение, отсутствующих значений в процессе переиндексации. Это позволяет сделать параметр method; так, если задать для него значение ffill, то будет произведено прямое восполнение значений:


In [95]: obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])


In [96]: obj3
Out[96]:
0 blue
2 purple
4 yellow
dtype: object

In [97]: obj3.reindex(range(6), method='ffill')


Out[97]:
0 blue
1 blue
2 purple
3 purple
4 yellow
5 yellow
dtype: object

В случае объекта DataFrame функция reindex может изменять строки, столбцы или то и другое. Если ей передать просто последовательность, то в результирующем объекте переиндексируются строки:


In [98]: frame = pd.DataFrame(np.arange(9).reshape((3, 3)),


....: index=['a', 'c', 'd'],
....: columns=['Ohio', 'Texas', 'California'])
In [99]: frame
Out[99]:
Ohio Texas California
a 0 1 2
c 3 4 5
d 6 7 8
In [100]: frame2 = frame.reindex(['a', 'b', 'c', 'd'])
In [101]: frame2
Out[101]:
Ohio Texas California
a 0.0 1.0 2.0
b NaN NaN NaN
c 3.0 4.0 5.0
d 6.0 7.0 8.0
Столбцы можно переиндексировать, задав ключевое слово columns:
In [102]: states = ['Texas', 'Utah', 'California']
In [103]: frame.reindex(columns=states)
Out[103]:
Texas Utah California
a 1 NaN 2
c 4 NaN 5
d 7 NaN 8
В табл. 5.3 приведены более полные сведения об аргументах reindex. Ниже мы подробно рассмотрим более лаконичный способ переиндексации посредством индексирования метками с помощью loc. Многие только им и пользуются:
In [104]: frame.loc[['a', 'b', 'c', 'd'], states]
Out[104]:
Texas Utah California
a 1.0 NaN 2.0
b NaN NaN NaN
c 4.0 NaN 5.0
d 7.0 NaN 8.0







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




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

    Басты бет