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


Применение функций и отображение



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

Применение функций и отображение
Универсальные функции NumPy (поэлементные методы массивов) отлично работают и с объектами pandas:

In [191]: frame


Out[191]:
b d e
Utah –0.204708 0.478943 –0.519439
Ohio –0.555730 1.965781 1.393406
Texas 0.092908 0.281746 0.769023
Oregon 1.246435 1.007189 –1.296221

In [192]: np.abs(frame)


Out[192]:
b d e
Utah 0.204708 0.478943 0.519439
Ohio 0.555730 1.965781 1.393406
Texas 0.092908 0.281746 0.769023
Oregon 1.246435 1.007189 1.296221

Еще одна часто встречающаяся операция – применение функции, определенной для одномерных массивов, к каждому столбцу или строке. Именно это и делает метод apply объекта DataFrame:


In [193]: f = lambda x: x.max() – x.min()


In [194]: frame.apply(f)
Out[194]:
b 1.802165
d 1.684034
e 2.689627
dtype: float64

Здесь функция f, вычисляющая разность между максимальным и минимальным значениями Series, вызывается один раз для каждого столбца frame. В результате получается объект Series, для которого индексом являются столбцы frame.


Если передать методу apply аргумент axis='columns', то функция будет вызываться по одному разу для каждой строки:


In [195]: frame.apply(f, axis='columns')


Out[195]:
Utah 0.998382
Ohio 2.521511
Texas 0.676115
Oregon 2.542656
dtype: float64

Многие из наиболее распространенных статистик массивов (например, sum и mean) – методы DataFrame, поэтому применять apply в этом случае необязательно. Функция, передаваемая методу apply, не обязана возвращать скалярное значение, она может вернуть и объект Series, содержащий несколько значений:

In [196]: def f(x):


.....: return Series([x.min(), x.max()], index=['min', 'max'])
In [197]: frame.apply(f)
Out[197]:
b d e
min –0.555730 0.281746 –1.296221
max 1.246435 1.965781 1.393406

Можно использовать и поэлементные функции Python. Допустим, требуется вычислить форматированную строку для каждого элемента frame с плавающей точкой. Это позволяет сделать метод applymap:


In [198]: format = lambda x: '%.2f' % x


In [199]: frame.applymap(format)
Out[199]:
b d e
Utah –0.20 0.48 –0.52
Ohio –0.56 1.97 1.39
Texas 0.09 0.28 0.77
Oregon 1.25 1.01 –1.30

Этот метод называется applymap, потому что в классе Series есть метод map для применения функции к каждому элементу:


In [200]: frame['e'].map(format)


Out[200]:
Utah –0.52
Ohio 1.39
Texas 0.77
Oregon –1.30
Name: e, dtype: object




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




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

    Басты бет