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