Учебники

Python Pandas — функциональное приложение

Чтобы применить свои собственные функции или функции другой библиотеки к объектам Pandas, вы должны знать о трех важных методах. Методы были обсуждены ниже. Подходящий метод, который нужно использовать, зависит от того, ожидает ли ваша функция работы со всем DataFrame, по строкам или столбцам, или по элементам.

  • Таблица мудрая Функция Применение: труба ()
  • Функция строки или столбца мудрая Применение: apply ()
  • Элемент мудрой функции Применение: applymap ()

Табличное применение функций

Пользовательские операции можно выполнить, передав функцию и соответствующее количество параметров в качестве аргументов канала. Таким образом, операция выполняется на весь DataFrame.

Например, добавьте значение 2 ко всем элементам в DataFrame. Затем,

функция сумматора

Функция сумматора добавляет два числовых значения в качестве параметров и возвращает сумму.

def adder(ele1,ele2):
   return ele1+ele2

Теперь мы будем использовать пользовательскую функцию для выполнения операций с DataFrame.

df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)

Давайте посмотрим полную программу —

Live Demo

import pandas as pd
import numpy as np

def adder(ele1,ele2):
   return ele1+ele2

df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
print df.apply(np.mean)

Его вывод выглядит следующим образом —

        col1       col2       col3
0   2.176704   2.219691   1.509360
1   2.222378   2.422167   3.953921
2   2.241096   1.135424   2.696432
3   2.355763   0.376672   1.182570
4   2.308743   2.714767   2.130288

Функция выбора строки или столбца

Произвольные функции могут быть применены вдоль осей DataFrame или Panel с помощью метода apply () , который, как и методы описательной статистики, принимает необязательный аргумент оси. По умолчанию операция выполняется по столбцам, принимая каждый столбец как массив.

Пример 1

Live Demo

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean)
print df.apply(np.mean)

Его вывод выглядит следующим образом —

col1   -0.288022
col2    1.044839
col3   -0.187009
dtype: float64

Передав параметр оси , операции могут выполняться по строкам.

Пример 2

Live Demo

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean,axis=1)
print df.apply(np.mean)

Его вывод выглядит следующим образом —

col1    0.034093
col2   -0.152672
col3   -0.229728
dtype: float64  

Пример 3

Live Demo

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(lambda x: x.max() - x.min())
print df.apply(np.mean)

Его вывод выглядит следующим образом —

col1   -0.167413
col2   -0.370495
col3   -0.707631
dtype: float64

Элемент Wise Функция Применение

Не все функции могут быть векторизованы (ни массивы NumPy, которые возвращают другой массив, ни какое-либо значение), методы applymap () в DataFrame и аналогично map () в Series принимают любую функцию Python, принимающую одно значение и возвращающую одно значение.

Пример 1

Live Demo

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])

# My custom function
df['col1'].map(lambda x:x*100)
print df.apply(np.mean)

Его вывод выглядит следующим образом —

col1    0.480742
col2    0.454185
col3    0.266563
dtype: float64

Пример 2

Live Demo

import pandas as pd
import numpy as np

# My custom function
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.applymap(lambda x:x*100)
print df.apply(np.mean)

Его вывод выглядит следующим образом —