Чтобы применить свои собственные функции или функции другой библиотеки к объектам 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)
Давайте посмотрим полную программу —
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
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
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
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
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
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)
Его вывод выглядит следующим образом —