Đôi khi cần áp dụng một số hàm dọc theo các phần tử của DataFrame. Không phải tất cả hàm đều có thể vector hóa (vectorised). Đây là lúc hàm applymap xuất hiện.
Hàm này nhận một giá trị đơn làm đầu vào và trả về một giá trị đơn làm đầu ra.
Ví dụ
import pandas as pd
import numpy as np
my_df = pd.DataFrame(
np.random.randn(5, 5),
columns=['col_1', 'col_2', 'col_3', 'col_4', 'col_5']
)
print("DataFrame được tạo:")
print(my_df)
# applymap áp dụng lambda cho từng phần tử
result = my_df.applymap(lambda x: x * 11.45)
print("Sau khi dùng applymap (nhân 11.45):")
print(result)
# apply áp dụng hàm cho từng cột (mặc định axis=0)
print("Trung bình từng cột (apply np.mean):")
print(my_df.apply(np.mean))
Đầu ra
DataFrame được tạo:
col_1 col_2 col_3 col_4 col_5
0 -0.671510 -0.860741 0.886484 0.842158 2.182341
1 -1.355763 0.247240 -0.653630 -0.278095 0.163044
2 -0.816203 1.664006 1.555648 1.625890 -0.412338
3 -1.013273 -1.565076 1.297014 -0.303504 -1.623573
4 0.725949 -0.077588 -0.886957 0.433478 -0.300151
Sau khi dùng applymap (nhân 11.45):
col_1 col_2 col_3 col_4 col_5
0 -7.688790 -9.855484 10.150242 9.642709 24.987804
... (các giá trị khác)
Trung bình từng cột (apply np.mean):
col_1 -0.626160
col_2 -0.118432
col_3 0.439712
col_4 0.463985
col_5 0.001865
dtype: float64
Giải thích
- Nhập thư viện cần thiết, đặt bí danh để dễ dùng.
- Tạo DataFrame bằng hàm
random.randnvới 5 hàng 5 cột. - Đặt tên cột trong danh sách khi định nghĩa DataFrame.
- In DataFrame ra console.
- Áp dụng hàm
applymapcho từng phần tử DataFrame. - Định nghĩa hàm là lambda function viết bên trong
applymap. - In dữ liệu ra console.
Phân biệt:
applymap(func)- Áp dụng func cho từng phần tử (element-wise)apply(func, axis=0)- Áp dụng func cho từng cột (mặc định)apply(func, axis=1)- Áp dụng func cho từng hàngdf.map(func)- (Pandas 2.1+) Thay thế cho applymap trên Series/DataFrame