Python Pandas - Ứng dụng hàm

Để áp dụng các chức năng của riêng bạn hoặc của thư viện khác cho các đối tượng Pandas, bạn nên biết ba phương pháp quan trọng. Các phương pháp đã được thảo luận dưới đây. Phương pháp thích hợp để sử dụng phụ thuộc vào việc liệu hàm của bạn có mong đợi hoạt động trên toàn bộ DataFrame, theo hàng hoặc theo cột hay không.

  • Bảng khôn ngoan Ứng dụng hàm: pipe ()
  • Ứng dụng Hàm Thông minh Hàng hoặc Cột: apply ()
  • Phần tử khôn ngoan Ứng dụng hàm: applymap ()

Ứng dụng hàm khôn ngoan

Các hoạt động tùy chỉnh có thể được thực hiện bằng cách chuyển hàm và số lượng tham số thích hợp làm đối số ống. Do đó, hoạt động được thực hiện trên toàn bộ DataFrame.

Ví dụ: thêm giá trị 2 vào tất cả các phần tử trong DataFrame. Sau đó,

chức năng thêm

Hàm bộ cộng thêm hai giá trị số làm tham số và trả về tổng.

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

Bây giờ chúng ta sẽ sử dụng chức năng tùy chỉnh để tiến hành hoạt động trên DataFrame.

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

Hãy cùng xem toàn bộ chương trình -

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)

Nó là output như sau -

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

Ứng dụng hàm khôn ngoan hàng hoặc cột

Các chức năng tùy ý có thể được áp dụng dọc theo các trục của DataFrame hoặc Panel bằng cách sử dụng apply(), giống như các phương pháp thống kê mô tả, lấy đối số trục tùy chọn. Theo mặc định, hoạt động thực hiện cột khôn ngoan, coi mỗi cột như một mảng.

ví dụ 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)

Nó là output như sau -

col1   -0.288022
col2    1.044839
col3   -0.187009
dtype: float64

Bằng cách đi qua axis tham số, các hoạt động có thể được thực hiện hàng khôn ngoan.

Ví dụ 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)

Nó là output như sau -

col1    0.034093
col2   -0.152672
col3   -0.229728
dtype: float64

Ví dụ 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)

Nó là output như sau -

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

Ứng dụng chức năng Element Wise

Không phải tất cả các hàm đều có thể được vector hóa (không phải mảng NumPy trả về mảng khác hoặc bất kỳ giá trị nào), các phương thức applymap() trên DataFrame và analogously map() trên Series chấp nhận bất kỳ hàm Python nào nhận một giá trị duy nhất và trả về một giá trị duy nhất.

ví dụ 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)

Nó là output như sau -

col1    0.480742
col2    0.454185
col3    0.266563
dtype: float64

Ví dụ 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)

Nó là output như sau -

col1    0.395263
col2    0.204418
col3   -0.795188
dtype: float64