Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Viết hàm Python tính trung bình và tích các giá trị từ cột Age, Salary (hàng 2-4) trong DataFrame

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:

  1. Tạo DataFrame từ dữ liệu mẫu.
  2. 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).
  3. 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.