Mô tả bài toán
Cho một DataFrame mẫu như sau:
Id Age salary 0 1 27 40000 1 2 22 25000 2 3 25 40000 3 4 23 35000 4 5 24 30000 5 6 32 30000 6 7 30 50000 7 8 28 20000 8 9 29 32000 9 10 27 23000
Yêu cầu: Lấy các hàng thứ 2, 3, 4 (chỉ số 1, 2, 3) của cột Age và salary, sau đó tính giá trị trung bình (mean) và tích (product) của chúng.
Kết quả mong đợi
mean is Age 23.333333
salary 33333.333333
product is Age 12650
salary 35000000000000
Giải pháp
Sử dụng thư viện pandas để thao tác với DataFrame. Các bước thực hiện:
- Tạo DataFrame từ dữ liệu mẫu.
- Sử dụng
iloc[1:4, 1:]để cắt lấy hàng 1 đến 3 (thứ 2, 3, 4) và từ cột thứ 2 trở đi (Age, salary). - Gọi phương thức
.mean()và.prod()trên DataFrame con vừa cắt.
Ví dụ code hoàn chỉnh
import pandas as pd
def find_mean_prod():
data = [[1,27,40000],[2,22,25000],[3,25,40000],[4,23,35000],[5,24,30000],
[6,32,30000],[7,30,50000],[8,28,20000],[9,29,32000],[10,27,23000]]
df = pd.DataFrame(data, columns=('Id','Age','salary'))
print("DataFrame gốc:")
print(df)
# Cắt hàng 2,3,4 (index 1,2,3) và cột Age, salary (từ cột index 1)
result = df.iloc[1:4, 1:]
print("\nDữ liệu sau khi cắt (hàng 2-4, cột Age & salary):")
print(result)
print("\nGiá trị trung bình (mean):")
print(result.mean())
print("\nTích các giá trị (product):")
print(result.prod())
find_mean_prod()
Đầu ra
DataFrame gốc: Id Age salary 0 1 27 40000 1 2 22 25000 2 3 25 40000 3 4 23 35000 4 5 24 30000 5 6 32 30000 6 7 30 50000 7 8 28 20000 8 9 29 32000 9 10 27 23000 Dữ liệu sau khi cắt (hàng 2-4, cột Age & salary): Age salary 1 22 25000 2 25 40000 3 23 35000 Giá trị trung bình (mean): Age 23.333333 salary 33333.333333 dtype: float64 Tích các giá trị (product): Age 12650 salary 35000000000000 dtype: int64
Lưu ý: iloc[1:4, 1:] có nghĩa là lấy các hàng có chỉ số từ 1 đến 3 (không bao gồm 4) và tất cả các cột từ chỉ số 1 trở đi.