Cara menerapkan formula ke seluruh kolom dan baris di panda – Codewithaden

Python Pandas.Apply () adalah fungsi anggota di kelas DataFrame untuk menerapkan fungsi di sepanjang sumbu DataFrame. Misalnya, sepanjang setiap baris atau kolom. Pandas DataFrame adalah struktur data dua dimensi; Misalnya, data diselaraskan dengan cara tabel dalam baris dan kolom. Dalam tutorial ini, kita akan melihat cara menerapkan rumus ke seluruh kolom dan baris di panda dengan contoh.

Cara menerapkan formula ke seluruh kolom dan baris

Fungsi pandaframe.Apply () digunakan untuk menerapkan fungsi di sepanjang sumbu dataframe. Objek yang diteruskan ke fungsi itu adalah objek seri yang indeksnya adalah indeks dataframe (axis = 0) atau kolom DataFrame (Axis = 1).

Secara default (result_type = tidak ada), tipe pengembalian akhir disimpulkan dari jenis pengembalian fungsi yang diterapkan. Kalau tidak, itu tergantung pada argumen result_type.

Sintaksis

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

Parameter

  • FUNC: Ini adalah fungsi untuk diterapkan ke setiap baris atau kolom. Fungsi ini menerima seri dan mengembalikan seri.
  • sumbu : Ini adalah sumbu di mana fungsi diterapkan di DataFrame. Nilai default adalah 0.
    • Jika suatu nilai adalah 0, maka itu menerapkan fungsi untuk setiap kolom.
    • Jika suatu nilai adalah 1, maka itu menerapkan fungsi untuk setiap baris.
  • Args: Itu bisa tuple atau daftar argumen yang harus dilewati untuk berfungsi.

Contoh Fungsi Terapkan ke DataFrame Pandas

Untuk contoh ini, Anda harus menginstal a panda Perpustakaan di mesin Anda dan pastikan, dan Anda menentukan jalur yang benar; Jika tidak, Anda tidak dapat menyelesaikan paket panda dengan benar di program Anda.

Mari kita tentukan basis data dengan 3 kolom dan 5 baris.

Lihat kode berikut.

import pandas as pd

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print(dfObj)
 

Keluaran

(pythonenv) ➜  pyt python3 app.py
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
(pythonenv) ➜  pyt 

Jadi, kami telah mendefinisikan 5 * 3 matriks (5 baris dan 3 kolom)

Terapkan fungsi lambda untuk setiap baris atau setiap kolom di dataFrame

Python Lambda atau fungsi anonim adalah semacam fungsi yang didefinisikan tanpa nama. Sedangkan fungsi standar didefinisikan menggunakan a def kata kunci, dalam python, fungsi anonim didefinisikan menggunakan Lambda kata kunci.

Katakanlah; Kami memiliki fungsi lambda yang menerima seri karena argumen mengembalikan objek seri baru dengan mengalikan 11 di setiap nilai seri yang diberikan misalnya,

lambda a : a * 11 

Oke, sekarang mari kita lihat cara menerapkan fungsi lambda di atas untuk setiap baris atau kolom dari DataFrame kami.

Python Pandas: Terapkan fungsi lambda untuk setiap kolom

Kita bisa menerapkan Lambda A: A * 11 Fungsi ke setiap kolom di DataFrame, lewati fungsi Lambda sebagai hanya argumen di DataFrame.Apply () dengan objek DataFrame yang dibuat di atas.

Lihat kode berikut.

import pandas as pd

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print('Before Lambda Function applied')
print(dfObj)
print('------------------')

# modify the dataframe by applying lambda function
modDfObj = dfObj.apply(lambda a: a * 11)
print('After Lambda Function applied')
print(modDfObj) 

Keluaran

(pythonenv) ➜  pyt python3 app.py
Before Lambda Function applied
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
------------------
After Lambda Function applied
     x     y     z
0  121   231   209
1  242   462   418
2  363   693   627
3  484   924   836
4  605  1155  1045 

Karena ada 3 kolom dalam dataframe (x, y, z), maka fungsi lambda kami disebut tiga kali, dan untuk setiap panggilan, kolom akan berlalu sebagai argumen untuk fungsi lambda.

Saat fungsi Lambda kami mengembalikan salinan seri dengan pelanggaran nilai masing -masing elemen di kolom yang diberikan oleh 11. Seri yang dikembalikan ini menggantikan kolom dalam salinan DataFrame.

Jadi, DataFrame.Apply () memanggil fungsi Lambda yang dilewati untuk setiap kolom dan lulus konten kolom sebagai seri ke fungsi Lambda ini.

Akhirnya, ia mengembalikan salinan yang dimodifikasi dari DataFrame yang dibangun dengan kolom yang dikembalikan oleh fungsi Lambda, alih -alih mengubah DataFrame asli.

Python Pandas: Terapkan fungsi lambda untuk setiap baris

Kita dapat menerapkan fungsi lambda ke setiap baris di DataFrame, lulus fungsi lambda sebagai argumen pertama dan juga lulus sumbu = 1 sebagai argumen kedua dalam dataFrame.Apply () dengan objek DataFrame yang dibuat di atas.

Mari kita ubah fungsi lambda kita menjadi A: A + 2 dan lihat outputnya.

import pandas as pd

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print('Before Lambda Function applied')
print(dfObj)
print('------------------')

# modify the dataframe by applying lambda function
modDfObj = dfObj.apply(lambda a: a + 2, axis=1)
print('After Lambda Function applied')
print(modDfObj) 

Keluaran

(pythonenv) ➜  pyt python3 app.py
Before Lambda Function applied
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
------------------
After Lambda Function applied
    x    y   z
0  13   23  21
1  24   44  40
2  35   65  59
3  46   86  78
4  57  107  97 

Dalam contoh di atas, pandaframe.Apply () memanggil fungsi lambda yang dilewati untuk setiap baris dan memberikan setiap konten baris sebagai seri ke fungsi lambda ini.

Akhirnya, ia mengembalikan salinan DataFrame yang dimodifikasi yang dibangun dengan baris yang dikembalikan oleh fungsi Lambda, alih -alih mengubah DataFrame asli.

Python Pandas: Terapkan baris atau kolom fungsi numpy

Dalam aplikasi Python dunia nyata, kami menerapkan fungsi Numpy yang sudah ada di kolom dan baris di DataFrame.

Mari kita terapkan fungsi numpy.square () ke baris dan kolom DataFrame.

Lihat kode berikut.

import pandas as pd
import numpy as np

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print('Before Numpy square() Function applied')
print(dfObj)
print('------------------')

# modify the dataframe by applying numpy square function
modDfObj = dfObj.apply(np.square)
print('After Numpy square() Function applied')
print(modDfObj) 

Keluaran

(pythonenv) ➜  pyt python3 app.py
Before Numpy square() Function applied
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
------------------
After Numpy square() Function applied
      x      y     z
0   121    441   361
1   484   1764  1444
2  1089   3969  3249
3  1936   7056  5776
4  3025  11025  9025 

Kami juga dapat menerapkan fungsi numpy.square () untuk setiap baris alih -alih kolom dengan mengeluarkan argumen tambahan. Lihat kode berikut.

import pandas as pd
import numpy as np

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print('Before Numpy sqrt() Function applied')
print(dfObj)
print('------------------')

# modify the dataframe by applying numpy sqrt function
modDfObj = dfObj.apply(np.sqrt, axis=1)
print('After Numpy sqrt() Function applied')
print(modDfObj) 

Keluaran

(pythonenv) ➜  pyt python3 app.py
Before Numpy sqrt() Function applied
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
------------------
After Numpy sqrt() Function applied
          x          y         z
0  3.316625   4.582576  4.358899
1  4.690416   6.480741  6.164414
2  5.744563   7.937254  7.549834
3  6.633250   9.165151  8.717798
4  7.416198  10.246951  9.746794 

Python Pandas: Terapkan Baris atau Kolom Fungsi Pengurangan

Hingga saat ini, kita harus menerapkan semacam fungsi yang menerima setiap kolom atau baris sebagai seri dan mengembalikan serangkaian ukuran yang sama.

Tetapi kami juga dapat memanggil fungsi yang menerima seri dan mengembalikan variabel tunggal alih -alih seri.

Misalnya, mari kita terapkan numpy.sum () ke setiap kolom di DataFrame untuk mengetahui jumlah setiap nilai di setiap kolom.

Lihat kode berikut.

import pandas as pd
import numpy as np

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print('Before Numpy sum() Reduce Function applied')
print(dfObj)
print('------------------')

# modify the dataframe by applying sum reduce function
modDfObj = dfObj.apply(np.sum)
print('After Numpy sum() Reduce Function applied')
print(modDfObj) 

Keluaran

(pythonenv) ➜  pyt python3 app.py
Before Numpy sum() Reduce Function applied
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
------------------
After Numpy sum() Reduce Function applied
x    165
y    315
z    285
dtype: int64 

Sekarang mari kita terapkan numpy.sum () ke setiap baris di dataFrame untuk mengetahui jumlah setiap nilai di setiap baris.

import pandas as pd
import numpy as np

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print('Before Numpy sum() Reduce Function applied')
print(dfObj)
print('------------------')

# modify the dataframe by applying sum reduce function
modDfObj = dfObj.apply(np.sum, axis=1)
print('After Numpy sum() Reduce Function applied')
print(modDfObj) 

Keluaran

(pythonenv) ➜  pyt python3 app.py
Before Numpy sum() Reduce Function applied
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
------------------
After Numpy sum() Reduce Function applied
0     51
1    102
2    153
3    204
4    255
dtype: int64 

Python Pandas: Terapkan fungsi yang ditentukan pengguna

Mari kita tentukan UDF (fungsi yang ditentukan pengguna).

def subtractData(x):
   return x - 2 

Jika Anda melewati argumen apa pun, maka itu akan mengurangi 2 dari nomor itu dan mengembalikannya.

Sekarang, mari kita gunakan fungsi ini dalam contoh DataFrame kami.

import pandas as pd
import numpy as np

matrix = [(11, 21, 19), (22, 42, 38), (33, 63, 57), (44, 84, 76),
          (55, 105, 95)]

# user-defined function
def subtractData(x):
    return x - 2


# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('xyz'))
print('Before subtractData() Function applied')
print(dfObj)
print('------------------')

# modify the dataframe by applying subtractData() function
modDfObj = dfObj.apply(subtractData)
print('After subtractData() Function applied')
print(modDfObj) 

Keluaran

(pythonenv) ➜  pyt python3 app.py
Before subtractData() Function applied
    x    y   z
0  11   21  19
1  22   42  38
2  33   63  57
3  44   84  76
4  55  105  95
------------------
After subtractData() Function applied
    x    y   z
0   9   19  17
1  20   40  36
2  31   61  55
3  42   82  74
4  53  103  93 

Jadi, itu akan mengurangi 2 dari setiap item matriks dan mengembalikan DataFrame yang dimodifikasi.

Akhirnya, bagaimana caranya Terapkan formula ke seluruh kolom atau baris atau seluruh data dalam contoh panda sudah berakhir.

Lihat juga

Cara menghapus baris di pandaframe panda

Cara Menambahkan Baris di DataFrame Pandas

Panda set_index ()

Panda value_counts ()

PANDAS BOOLEAN_INDEXING ()

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

Your email address will not be published. Required fields are marked *