Python Pandas - Aplikasi Fungsi

Untuk menerapkan fungsi Anda sendiri atau pustaka lain ke objek Pandas, Anda harus mengetahui tiga metode penting. Metodenya telah dibahas di bawah ini. Metode yang tepat untuk digunakan bergantung pada apakah fungsi Anda mengharapkan untuk beroperasi pada seluruh DataFrame, baris atau kolom-bijaksana, atau elemen bijaksana.

  • Tabel Aplikasi Fungsi bijaksana: pipa ()
  • Aplikasi Fungsi Bijak Baris atau Kolom: apply ()
  • Aplikasi Fungsi yang bijaksana dari elemen: applymap ()

Aplikasi Fungsi Tabel-bijaksana

Operasi kustom dapat dilakukan dengan meneruskan fungsi dan jumlah parameter yang sesuai sebagai argumen pipa. Jadi, operasi dilakukan di seluruh DataFrame.

Misalnya, tambahkan nilai 2 ke semua elemen di DataFrame. Kemudian,

fungsi penambah

Fungsi penambah menambahkan dua nilai numerik sebagai parameter dan mengembalikan jumlahnya.

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

Kami sekarang akan menggunakan fungsi kustom untuk melakukan operasi pada DataFrame.

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

Mari kita lihat program lengkapnya -

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)

Nya output adalah sebagai berikut -

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

Aplikasi Fungsi Bijak Baris atau Kolom

Fungsi arbitrer dapat diterapkan di sepanjang sumbu DataFrame atau Panel menggunakan apply()metode, yang, seperti metode statistik deskriptif, mengambil argumen sumbu opsional. Secara default, operasi melakukan kolom bijaksana, mengambil setiap kolom sebagai array-like.

Contoh 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)

Nya output adalah sebagai berikut -

col1   -0.288022
col2    1.044839
col3   -0.187009
dtype: float64

Dengan melewati axis parameter, operasi dapat dilakukan dengan bijaksana.

Contoh 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)

Nya output adalah sebagai berikut -

col1    0.034093
col2   -0.152672
col3   -0.229728
dtype: float64

Contoh 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)

Nya output adalah sebagai berikut -

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

Aplikasi Fungsi Elemen Bijak

Tidak semua fungsi dapat di-vektorisasi (baik array NumPy yang mengembalikan array lain maupun nilai apa pun), metodenya applymap() di DataFrame dan analogously map() on Series menerima fungsi Python apa pun yang mengambil satu nilai dan mengembalikan satu nilai.

Contoh 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)

Nya output adalah sebagai berikut -

col1    0.480742
col2    0.454185
col3    0.266563
dtype: float64

Contoh 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)

Nya output adalah sebagai berikut -

col1    0.395263
col2    0.204418
col3   -0.795188
dtype: float64