Python Pandas: как применить формулу ко всему столбцу и строке

Python pandas.apply () — это функция-член в классе Dataframe для применения функции вдоль оси Dataframe. Например, по каждой строке или столбцу. Pandas DataFrame — это двумерная структура данных; например, данные выровнены в табличной форме по строкам и столбцам. В этом руководстве мы увидим, как применить формулу ко всему столбцу и строке в Pandas на примере.

Содержание
  1. Как применить формулу ко всему столбцу и строке
  2. DataFrame.apply ( func, axis = 0, broadcast = None, raw = False, reduce = None, result_type = None, args = (), ** kwds) Параметры func: Это функция, применяемая к каждой строке или столбцу. Эта функция принимает ряд и возвращает ряд. axis: это ось, вдоль которой функция применяется во фрейме данных. Значение по умолчанию — 0. Если значение равно 0, то применяется функция к каждому столбцу. Если значение равно 1, то применяется для каждой строки. args: Это может быть кортеж или список аргументов для передачи функции. Пример применения функции к фрейму данных Pandas
  3. Параметры
  4. Пример применения функции к фрейму данных Pandas
  5. Output
  6. Применить лямбда-функцию к каждой строке или каждому столбцу в фрейме данных
  7. Python Pandas: примените лямбда-функцию к каждому столбцу
  8. Output
  9. Python Pandas : Применить лямбда-функцию к каждой строке
  10. Вывод
  11. Python pandas : Применить строку или столбец numpy-функций
  12. Вывод
  13. Вывод
  14. Python pandas: применить строку или столбец функции уменьшения
  15. Вывод
  16. Вывод
  17. Python Pandas: применение пользовательской функции
  18. Вывод
  19. См. также

Как применить формулу ко всему столбцу и строке

Функция Pandas.dataframe.apply () используется для применения функции вдоль оси DataFrame. Объекты, переданные в эту функцию, являются объектами Series, индекс которых является либо индексом DataFrame (ось = 0), либо столбцами DataFrame (ось = 1).

По умолчанию (result_type = None) окончательный тип возвращаемого значения выводится из типа возвращаемого значения применяемой функции. В противном случае это зависит от аргумента result_type.

 DataFrame.apply (  func, axis = 0, broadcast = None, raw = False, reduce = None, result_type = None, args = (), ** kwds) 

Параметры

  • func: Это функция, применяемая к каждой строке или столбцу. Эта функция принимает ряд и возвращает ряд.
  • axis : это ось, вдоль которой функция применяется во фрейме данных. Значение по умолчанию — 0.
    • Если значение равно 0, то применяется функция к каждому столбцу.
    • Если значение равно 1, то применяется для каждой строки.
  • args: Это может быть кортеж или список аргументов для передачи функции.

Пример применения функции к фрейму данных Pandas

В этом примере вы должны были установить на свой компьютер библиотеку pandas и сделать конечно, и вы определили правильный путь; в противном случае вы не сможете правильно разрешить пакет pandas в своей программе.

Давайте определим фрейм данных с 3 столбцами и 5 строк.

См. Следующий код.

 импортировать панды как pdmatrix = [  (11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76), (55, 105, 95)] # Создайте объект DataFrame. DdfObj = pd.DataFrame (  matrix, columns = list ('xyz')) print (dfObj) 

Output

 (pythonenv) ➜ приложение pyt python3  .py xy z0 11 21 191 22 42 382 33 63 573 44 8 764 55 105 95 (pythonenv) ➜ pyt 

Итак, мы определили матрицу 5 * 3 (5 строк и 3 столбца)

Применить лямбда-функцию к каждой строке или каждому столбцу в фрейме данных

Лямбда-функция Python или анонимная функция — это вид функции, которая определена без имени. В то время как стандартные функции определяются с помощью ключевого слова def , в Python анонимные функции определяются с помощью ключевого слова lambda ..

Скажем; у нас есть лямбда-функция, которая принимает серию в качестве аргумента, возвращает новый объект серии, умножая 11 в каждом значении данной серии, например,

 lambda a: a * 11 

Хорошо, теперь давайте посмотрим, как применить указанную выше лямбда-функцию к каждой строке или столбцу нашего фрейма данных.

Python Pandas: примените лямбда-функцию к каждому столбцу

Мы можем применить лямбда-функцию a: a * 11 к для каждого столбца в фрейме данных передайте лямбда-функцию в качестве единственного аргумента в Dataframe.apply () с созданным выше объектом фрейма данных.

См. следующий код.

 import  pandas как pdmatrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76), (55, 105, 95)] # Создайте объект DataFrame .dfObj  = pd.DataFrame (matrix, columns = list ('xyz')) print ('Перед применением лямбда-функции') print (dfObj) print ('------------------  ') # модифицируем фрейм данных, применяя лямбда-функцию modDfObj = dfObj.apply (lambda a: a * 11) print  ('После применения лямбда-функции') print (modDfObj) 

Output

 (pythonenv) ➜ pyt python3 app.py Перед Lambda  Примененная функция xy z0 11 21 191 22 42 382 33 63 573 44 84764 55 105 95 ------------------ После применения лямбда-функции xy z0 121231 2091 242462 4182363  693 6273 484924 8364 605 1155 1045 

Поскольку в кадре данных было 3 столбца (x, y, z), наша лямбда-функция вызывается три раза, и для каждого вызова столбец будет проходить в качестве аргумента лямбда-функции.

Поскольку наша лямбда-функция возвращает копию серии, нарушая значение каждого элемента в данном столбце на 11. Эта возвращенная серия заменяет столбец в копии фрейма данных.

Итак, Dataframe.apply () вызывает переданную лямбда-функцию для каждого столбца и передает содержимое столбца в виде ряда в эту лямбда-функцию.

Наконец, он возвращает измененную копию фрейма данных, созданного со столбцами, возвращаемыми лямбда-функциями, вместо изменения исходного фрейма данных.

Python Pandas : Применить лямбда-функцию к каждой строке

Мы можем применить лямбда-функцию к каждой строке в фрейме данных, передать лямбда-функцию в качестве первого аргумента, а также передать axis = 1 в качестве второй аргумент в Dataframe.apply () с созданным выше объектом фрейма данных.

Давайте изменим нашу лямбда-функцию на a: a + 2 и посмотрим результат.

 импортировать панды как pdmatrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76), (55, 105)  , 95)] # Создание объекта DataFrame .dfObj = pd.DataFrame (matrix, columns = list ('xyz')) print ('Перед применением лямбда-функции') print (dfObj) print ('---------  --------- ') # модифицируем фрейм данных, применяя лямбда-функцию modDfObj = dfObj. apply (lambda a: a + 2, axis = 1) print ('После применения лямбда-функции') print (modDfObj) 

Вывод

 (pythonenv) ➜ pyt python3 app.py Перед применением лямбда-функции xy z0 11 21 191 22 42 382 33 63 573 44 84764 55 105 95 -----------------  -После применения лямбда-функции xy z0 13 23 211 24 44 402 35 65 593 46 86 784 57 107 97 

В приведенном выше примере Pandas Dataframe.apply () вызывает переданную лямбда-функцию для каждой строки и передает содержимое каждой строки этой лямбда-функции в виде серий.

Наконец, он возвращает измененную копию фрейма данных, построенного из строк, возвращаемых лямбда-функциями, вместо изменения исходного фрейма данных.

Python pandas : Применить строку или столбец numpy-функций

В реальных приложениях на Python мы применяем уже существующие numpy-функции к столбцам и строкам в фрейме данных.

Давайте применим функцию numpy.square () к строкам и столбцам фрейма данных.

См. Следующий код.

 import pandas as pdimport numpy as npmatrix = [(  11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76), (55, 105, 95)] # Создайте объект DataFrame .dfObj = pd.DataFrame (matrix  , columns = list ('xyz')) print ('Перед применением функции Numpy square ()') print (dfObj) print ('------------------') #  измените фрейм данных, применив функцию numpy square modDfObj = dfObj.apply (np.square) print ('После применения функции Numpy square ()') print (modDfObj) 

Вывод

 (pythonenv) ➜ pyt python3 app.pyBefo  re Numpy square () Примененная функция xy z0 11 21 191 22 42 382 33 63 573 44 84764 55 105 95 ------------------ После применения функции Numpy square () xy  z0 121 441 3611 484 1764 14442 1089 3969 32493 1936 7056 57764 3025 11025 9025 

Мы также можем применить функцию numpy.square () к каждой строке вместо столбца, передав дополнительный аргумент. См. Следующий код.

 import pandas as pdimport numpy as npmatrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44,  84, 76), (55, 105, 95)] # Создание объекта DataFrame .dfObj = pd.DataFrame (matrix, columns = list ('xyz')) print ('Before Numpy sqrt () Function application') print (dfObj)  print ('------------------') # модифицируем фрейм данных, применяя numpy sqrt functionmodDfObj = dfObj.apply (np.sqrt, axis = 1) print ('After Numpy  sqrt () Функция применена ') print (modDfObj) 

Вывод

 (pythonenv) ➜ pyt python3 app.py Перед Numpy sqrt  () Примененная функция xy z0 11 21 191 22 42 382 33 63 573 44 84764 55 105 95 ------------------ После Numpy sqrt () Применение функции xy z0 3,316625 4,582576  4.3588991 4.690416 6.480741 6.1644142 5.744563 7.937254 7.5498343 6.633250 9.165151 8.7177984 7.416198 10.246951 9. 746794 

Python pandas: применить строку или столбец функции уменьшения

До сих пор мы должны применить своего рода функцию который принимает каждый столбец или строку как серию и возвращает серию того же размера.

Но мы также можем вызвать функцию, которая принимает серию и возвращает единственную переменную вместо серии.

Например, давайте применим numpy.sum () к каждому столбцу в фрейме данных, чтобы узнать сумму каждого значения в каждом столбце.

См. следующий код .

 импортировать панды как pdimport numpy как npmatrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76)  , (55, 105, 95)] # Создание объекта DataFrame .dfObj = pd.DataFrame (matrix, columns = list ('xyz')) print ('Перед применением функции уменьшения Numpy sum ()') print (dfObj) print ('  ------------------ ') # модифицируем фрейм данных, применяя функцию сокращения суммы modDfObj = dfObj.apply (np.sum) print (' После применения функции сокращения Numpy sum () '  ) print (modDfObj) 

Вывод

 (pythonenv) ➜ pyt python3 app.py Перед применением функции Numpy sum () Reduce xy  z0 11 21 191 22 42 382 33 63 573 44 84764 55 105 95 ------------------ После применения Numpy sum () Функция сокращения x 165y 315z 285dtype: int64 

Теперь давайте применим numpy.sum () к каждой строке в кадре данных, чтобы узнать сумму каждого значения в каждой строке.

 import p  andas as pdimport numpy as npmatrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76), (55, 105, 95)] # Создать  объект DataFrame dfObj = pd.DataFrame (matrix, columns = list ('xyz')) print ('Перед применением функции уменьшения Numpy sum ()') print (dfObj) print ('-----------  ------- ') # модифицируем фрейм данных, применяя функцию сокращения суммы modDfObj = dfObj.apply (np.sum, axis = 1) print (' После применения функции уменьшения Numpy sum () ') print (modDfObj) 

Вывод

 (pythonenv) ➜ pyt python3 app.py Перед применением функции сокращения Numpy sum () xy z0 11 21 191 22 42 382  33 63 573 44 84764 55 105 95 ------------------ После применения функции уменьшения Numpy sum () 0 511 1022 1533 2044 255dtype: int64 

Python Pandas: применение пользовательской функции

Давайте определим UDF (пользовательскую функцию).

 def subtractData (x  ): return x - 2 

Если вы передадите какие-либо аргументы, он вычтет 2 из этого числа и вернет его.

Теперь давайте воспользуемся th — это функция в нашем примере DataFrame.

 import pandas as pdimport numpy as npmatrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (  44, 84, 76), (55, 105, 95)] # определяемая пользователем functiondef subtractData (x): return x - 2 # Создание объекта DataFrame ddfObj = pd.DataFrame (matrix, columns = list ('xyz'))  print ('Перед применением функции subtractData ()') print (dfObj) print ('------------------') # измените фрейм данных, применив функцию subtractData () modDfObj = dfObj. apply (subtractData) print ('После применения функции subtractData ()') print (modDfObj) 

Вывод

 (pythonenv)  ➜ pyt python3 app.py Перед применением функции subtractData () xy z0 11 21 191 22 42 382 33 63 573 44 84764 55 105 95 ------------------ После subtractData ()  Примененная функция xy z0 9 19 171 20 40 362 31 61 553 42 82 744 53 103 93 

Таким образом, он вычитает 2 из каждого элемента матрицы и возвращает измененный DataFrame.

Наконец, как применить формулу ко всему столбцу, строке или всему фрейму данных в Pandas, пример закончен.

См. также

Как удалить строки в Pandas DataFrame

Как добавить строки в Pandas DataFrame

Pandas set_index ()

Pandas value_counts ()

Панды boolean_indexing ()

Оцените статью
nanomode.ru
Добавить комментарий