Trả về DataFrame từ hàm python

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
6,
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
7,
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
8 và
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
9 có thể gây nhầm lẫn, đặc biệt nếu bạn chưa quen với Pandas vì tất cả chúng có vẻ khá giống nhau và có thể chấp nhận chức năng làm đầu vào. Dưới đây là so sánh nhanh các phương pháp khác nhau

Hình ảnh của tác giả

Chúng tôi sẽ xem xét chi tiết từng vấn đề bằng cách sử dụng dữ liệu mẫu sau

# python version 3.9
# pandas version 1.4.1
import pandas as pddf = pd.DataFrame[{'name':['John Doe', 'Mary Re', 'Harley Me'],
'gender':[1,2,0],
'age':[80, 38, 12],
'height': [161.0, 173.5, 180.5],
'weight': [62.3, 55.7, 80.0]
}]

Hình ảnh của tác giả
  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    0. 0,1,2 tương ứng với “không xác định”, “nam” và “nữ”
  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    1. tính bằng cm
  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    2. tính bằng Kg
Gấu trúc
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
3 là gì?

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
4 ánh xạ các giá trị của Sê-ri theo chức năng ánh xạ đầu vào. Được sử dụng để thay thế từng giá trị trong Sê-ri bằng một giá trị khác, có thể được lấy từ một hàm, lệnh hoặc Sê-ri

Thông số

  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    5. ánh xạ tương ứng
  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    6. {'Không', 'bỏ ​​qua'}. Mặc định Không có. Nếu 'bỏ qua', hãy truyền các giá trị NaN mà không chuyển chúng đến sự tương ứng ánh xạ

trả lại

  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    7

Những điểm chính

  1. Chỉ áp dụng cho Pandas Series
  2. Yếu tố-khôn ngoan hoạt động
  3. Chủ yếu được sử dụng để thay thế các giá trị
  4. Tham số
    gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    5 chấp nhận ánh xạ giữa giá trị cũ và giá trị mới có thể ở dạng [a] Từ điển, [b] Chuỗi và [c] Hàm

Từ điển

Mục tiêu là thay thế giới tính được mã hóa [0,1,2] thành giá trị thực của chúng [không xác định, nam, nữ]

Hình ảnh của tác giả

Đầu tiên, chúng tôi xác định từ điển ánh xạ giữa các giá trị được mã hóa và các giá trị thực tế ở dạng sau của

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
9, sau đó chúng tôi áp dụng
gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0 cho cột
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0.
gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0 tìm khóa trong từ điển ánh xạ tương ứng với giới tính được mã hóa và thay thế bằng giá trị từ điển

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]

Hình ảnh của tác giả

Đầu ra sẽ là

gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
3 nếu không tìm thấy cặp khóa-giá trị trong từ điển ánh xạ. Ánh xạ cho
gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
4 bị xóa và đây là kết quả trông như thế nào

Hình ảnh của tác giả
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]

Hình ảnh của tác giả

Loạt

Thay vì sử dụng từ điển ánh xạ, chúng tôi đang sử dụng Chuỗi ánh xạ.

gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0 ngoại hình tìm kiếm một chỉ mục tương ứng trong Sê-ri tương ứng với giới tính được hệ thống hóa và thay thế nó bằng giá trị trong Sê-ri

gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
6 của Sê-ri ánh xạ chứa giới tính được hệ thống hóa và cột
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0 chứa giá trị thực của giới tính

Hình ảnh của tác giả
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]

Đầu ra sẽ là

gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
8, nếu không tìm thấy ánh xạ trong Sê-ri

Hình ảnh của tác giả
gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]

Hàm số

Chúng ta cũng có thể sử dụng một hàm [hoặc lambda] làm tham số

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
5 trong
gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0. Hãy thử chỉ định một danh mục
df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
1 [người lớn hoặc trẻ em] cho mỗi người bằng cách sử dụng hàm lambda

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']

Ngoài ra, chúng ta có thể làm như sau

def get_age_group[age]:    threshold = 21    if age >= threshold:
age_group = 'Adult'
else:
age_group = 'Child'
return age_groupdf['age_group'] = df['age'].map[get_age_group]

Hình ảnh của tác giả

Lưu ý rằng ngưỡng tuổi đã được mã hóa cứng trong hàm

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
2 vì
gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0 không cho phép chuyển [các] đối số cho hàm

Gấu trúc
df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
4 là gì?

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
5 được áp dụng cho cả Pandas DataFrame và Series. Khi được áp dụng cho DataFrames,
df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
5 có thể vận hành hàng hoặc cột một cách khôn ngoan

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
7

Gọi hàm trên các giá trị của Sê-ri. Có thể là ufunc [một hàm NumPy áp dụng cho toàn bộ Sê-ri] hoặc một hàm Python chỉ hoạt động trên các giá trị đơn lẻ

Thông số

  • df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8. hàm số
  • df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    9. bool, mặc định Đúng. Cố gắng tìm dtype tốt hơn cho kết quả chức năng theo từng phần tử. Nếu Sai, để lại dưới dạng dtype=object. Lưu ý rằng dtype luôn được giữ nguyên cho một số dtype mảng mở rộng, chẳng hạn như Categorical
  • def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    0. tuple. Đối số vị trí được chuyển đến
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8 sau giá trị chuỗi
  • def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    2. Đối số từ khóa bổ sung được chuyển đến
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8

Trở lại

  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    7 hoặc
    def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    5
  • Nếu
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8 trả về một đối tượng Sê-ri, kết quả sẽ là một Khung dữ liệu

Những điểm chính

  • Áp dụng cho dòng gấu trúc
  • Chấp nhận một chức năng
  • Có thể chuyển đối số vị trí hoặc từ khóa để hoạt động
  • Có thể trả về Sê-ri hoặc Khung dữ liệu

Từ ví dụ trước của chúng tôi, chúng tôi đã thấy rằng

gender_map = {1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
0 không cho phép truyền đối số vào hàm. Mặt khác,
df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
5 cho phép chuyển cả đối số vị trí hoặc từ khóa. Hãy tham số hóa hàm để chấp nhận tham số
def get_age_group[age]:    threshold = 21    if age >= threshold:
age_group = 'Adult'
else:
age_group = 'Child'
return age_groupdf['age_group'] = df['age'].map[get_age_group]
9

def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group

Vượt qua

def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group
0 làm đối số từ khóa

# keyword argument
df['age_group'] = df['age'].apply[get_age_group, threshold = 21]

Vượt qua

def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group
1 làm đối số vị trí

# positional argument
df['age_group'] = df['age'].apply[get_age_group, args = [21,]]

Nhiều đối số

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
5 cũng có thể chấp nhận nhiều đối số vị trí hoặc từ khóa. Hãy chia
def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group
3 thành 3
df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
1 [trẻ em, người lớn và người cao tuổi] dựa trên ngưỡng tuổi thấp hơn và cao hơn

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
0

Vượt qua

def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group
5 và
def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group
6 làm đối số từ khóa

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
1

Vượt qua

def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group
5 và
def get_age_group[age, threshold]:    if age >= int[threshold]:
age_group = 'Adult'
else:
age_group = 'Child'
return age_group
6 làm đối số vị trí

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
2

Hình ảnh của tác giả

Áp dụng một chức năng numpy

Ngoài việc áp dụng hàm python [hoặc Lambda],

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
5 còn cho phép hàm numpy. Ví dụ: chúng ta có thể áp dụng numpy
# keyword argument
df['age_group'] = df['age'].apply[get_age_group, threshold = 21]
0 để làm tròn số
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
s = pd.Series[gender_map] # mapping series
df['gender'] = df['gender'].map[s]
1 của mỗi người thành số nguyên gần nhất

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
3

Trả lại một chuỗi

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
5 trả về một chuỗi nếu hàm trả về một giá trị duy nhất. Viết hàm tìm họ của một người

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
4

Trả lại một DataFrame

df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
5 trả về một DataFrame khi hàm trả về một Sê-ri

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
5

# keyword argument
df['age_group'] = df['age'].apply[get_age_group, threshold = 21]
4

Áp dụng một chức năng dọc theo một trục của DataFrame

Thông số

  • df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8. Hàm áp dụng cho từng cột hoặc hàng
  • # keyword argument
    df['age_group'] = df['age'].apply[get_age_group, threshold = 21]
    6. Trục dọc theo đó chức năng được áp dụng.
    # keyword argument
    df['age_group'] = df['age'].apply[get_age_group, threshold = 21]
    7 - áp dụng chức năng cho từng cột.
    # keyword argument
    df['age_group'] = df['age'].apply[get_age_group, threshold = 21]
    8 - áp dụng chức năng cho mỗi hàng
  • # keyword argument
    df['age_group'] = df['age'].apply[get_age_group, threshold = 21]
    9. Xác định xem hàng hoặc cột có được truyền dưới dạng đối tượng Sê-ri hoặc ndarray không. Sai - chuyển từng hàng hoặc cột dưới dạng Chuỗi cho hàm. Đúng - Truyền đối tượng ndarray cho hàm
  • # positional argument
    df['age_group'] = df['age'].apply[get_age_group, args = [21,]]
    0. Những điều này chỉ hành động khi
    # keyword argument
    df['age_group'] = df['age'].apply[get_age_group, threshold = 21]
    8 [cột]
    - 'mở rộng'. kết quả giống như danh sách sẽ được chuyển thành cột
    - 'giảm'. trả về một Sê-ri nếu có thể thay vì mở rộng các kết quả giống như danh sách. Điều này trái ngược với 'mở rộng'
    - 'phát tin'. kết quả sẽ được phát tới hình dạng ban đầu của DataFrame, chỉ mục và cột ban đầu sẽ được giữ lại
  • def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    0. tuple. Đối số vị trí được chuyển đến func sau giá trị chuỗi
  • def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    2. Đối số từ khóa bổ sung được chuyển đến func

trả lại

  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    7 hoặc
    def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    5

Những điểm chính

  • Hàm có thể được áp dụng theo cột [_______55_______6] hoặc theo hàng [
    # positional argument
    df['age_group'] = df['age'].apply[get_age_group, args = [21,]]
    7]
  • Có thể truyền dữ liệu dưới dạng Sê-ri hoặc mảng có nhiều mảng để hoạt động
  • Có thể chuyển đối số vị trí hoặc từ khóa để hoạt động

Áp dụng một hàm numpy theo cột

Làm tròn chiều cao và cân nặng đến số nguyên gần nhất. Chức năng được áp dụng theo cột như được định nghĩa bởi

# positional argument
df['age_group'] = df['age'].apply[get_age_group, args = [21,]]
6. Khi được sử dụng theo cột,
# positional argument
df['age_group'] = df['age'].apply[get_age_group, args = [21,]]
9 có thể được áp dụng cho nhiều cột cùng một lúc

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
6

Áp dụng hàm Lambda theo hàng

Tách tên thành tên và họ bằng cách áp dụng hàm

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
00 theo hàng như được xác định bởi
# positional argument
df['age_group'] = df['age'].apply[get_age_group, args = [21,]]
7

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
7

Chúng ta có thể tách danh sách thành nhiều cột, một phần tử trên mỗi cột, bằng cách xác định tham số

# positional argument
df['age_group'] = df['age'].apply[get_age_group, args = [21,]]
0 là
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
03

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
8

Áp dụng một chức năng theo hàng

Cùng tìm Chỉ số khối cơ thể [BMI] của mỗi người. Chỉ số BMI được định nghĩa là cân nặng tính bằng kilôgam chia cho bình phương chiều cao tính bằng mét. Chúng tôi tạo một UDF để tính BMI và áp dụng UDF theo kiểu thông minh cho DataFrame. Khi được sử dụng theo hàng,

# positional argument
df['age_group'] = df['age'].apply[get_age_group, args = [21,]]
9 có thể sử dụng các giá trị từ các cột khác nhau bằng cách chọn các cột dựa trên tên cột

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
9

Hình ảnh của tác giảGấu trúc là gì
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
05?

Áp dụng một chức năng cho một phần tử DataFrame khôn ngoan. Phương pháp này áp dụng một hàm chấp nhận và trả về vô hướng cho mọi phần tử của DataFrame

Thông số

  • df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8. Hàm Python, trả về một giá trị từ một giá trị
  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    s = pd.Series[gender_map] # mapping series
    df['gender'] = df['gender'].map[s]
    6. {'Không', 'bỏ ​​qua'}. Mặc định Không có. Nếu 'bỏ qua', hãy truyền các giá trị NaN mà không chuyển chúng đến sự tương ứng ánh xạ
  • def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    2. Đối số từ khóa bổ sung được chuyển đến
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8

Trở lại

  • def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    5

Những điểm chính

  • Áp dụng cho Pandas DataFrame
  • Chấp nhận một chức năng
  • Có thể chuyển đối số từ khóa để hoạt động
  • Yếu tố-khôn ngoan hoạt động

Trong ví dụ sau, chúng tôi có hai cột giá trị số mà chúng tôi đã thực hiện phép tính số học đơn giản trên

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
0

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
11 lấy từng giá trị trong DataFrame ban đầu, chuyển nó vào hàm
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
12 dưới dạng
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
13 , thực hiện các thao tác và trả về một giá trị duy nhất.
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
11 cũng chấp nhận đối số từ khóa nhưng không chấp nhận đối số vị trí

Gấu trúc
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
15 là gì?

Áp dụng các chức năng có thể xâu chuỗi mong đợi Sê-ri hoặc DataFrames

Thông số

  • df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8. Chức năng áp dụng cho Sê-ri/DataFrame
  • def get_age_group[age]:    threshold = 21    if age >= threshold:
    age_group = 'Adult'
    else:
    age_group = 'Child'
    return age_groupdf['age_group'] = df['age'].map[get_age_group]
    0. Đối số vị trí được chuyển đến
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8
  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    df['gender'] = df['gender'].map[gender_map]
    19. Đối số từ khóa được chuyển đến
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8

trả lại

  • gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
    df['gender'] = df['gender'].map[gender_map]
    21. kiểu trả về của
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8

Những điểm chính

  • Áp dụng cho Pandas Series và DataFrame
  • Chấp nhận một chức năng
  • Có thể truyền tham số để hoạt động dưới dạng đối số vị trí hoặc từ khóa
  • Trả về cùng một đối tượng như
    df['age_group'] = df['age'].map[lambda x: 'Adult' if x >= 21 else 'Child']
    8

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
24 hoạt động như thế nào?

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
15 thường được sử dụng để xâu chuỗi nhiều chức năng lại với nhau. Ví dụ: chúng tôi có 3 hàm hoạt động trên DataFrame,
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
26,
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
27 và
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
28, mỗi hàm yêu cầu DataFrame làm đầu vào và trả về DataFrame đã chuyển đổi

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
1

Nếu không sử dụng

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
15, chúng tôi sẽ áp dụng các chức năng theo cách lồng nhau, có thể trông khá khó đọc nếu có nhiều chức năng. Để theo trình tự thực hiện chức năng, người ta sẽ phải đọc từ “trong ra ngoài”. Hầu hết chức năng bên trong
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
28 được thực hiện đầu tiên theo sau bởi
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
27 sau đó là
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
26

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
2

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
15 tránh lồng nhau và cho phép các chức năng được xâu chuỗi bằng cách sử dụng ký hiệu dấu chấm[
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
34], làm cho nó dễ đọc hơn.
gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
15 cũng cho phép truyền cả đối số vị trí và từ khóa và giả định rằng đối số đầu tiên của hàm đề cập đến DataFrame/Series đầu vào

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
3

Theo trình tự thực hiện các chức năng được xâu chuỗi cùng với

gender_map = {0: 'Unknown', 1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
15 sẽ trực quan hơn;

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
6,
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
8 và
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
7 bị hạn chế trả về Sê-ri, Khung dữ liệu hoặc cả hai. Tuy nhiên,
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
9 có thể trả về bất kỳ đối tượng nào, không nhất thiết là Sê-ri hoặc Khung dữ liệu. Hãy cùng xem một số ví dụ sử dụng cùng một tập dữ liệu mẫu

Hàm bên dưới trả về giá trị float

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
4

Hàm dưới đây trả về một chuỗi

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
5Tóm tắt

Trong bài viết này, chúng tôi đã xem xét sự khác biệt giữa

gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
8,
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
6 và
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
7,
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
9 và cách sử dụng từng phương pháp này để biến đổi dữ liệu của chúng tôi. Mặc dù chúng tôi không đi sâu vào chi tiết về tốc độ thực hiện của
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
8,
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
6 và
gender_map = {1:'Male', 2:'Female'}
df['gender'] = df['gender'].map[gender_map]
7 , xin lưu ý rằng các phương thức này là các vòng lặp được ngụy trang và chỉ nên được sử dụng nếu không có hoạt động vector hóa tương đương. Nói chung, các hoạt động được vector hóa nhanh hơn các vòng lặp và sự khác biệt về thời gian thực hiện trở nên quan trọng hơn khi kích thước của tập dữ liệu tăng lên

Hàm có thể trả về DataFrame trong Python không?

Bạn cũng có thể tạo bản sao của DataFrame hiện có bằng cách sử dụng lệnh df. chức năng copy[] . Bằng cách này, bạn có thể tạo một DataFrame mới và trả lại nó từ hàm bằng cách sao chép một DataFrame hiện có.

Cú pháp chính xác để trả về toàn bộ DataFrame là gì?

Có 4 phương pháp để In toàn bộ Dataframe gấu trúc. Sử dụng phương thức to_string[] . sử dụng pd. phương thức option_context[]. sử dụng pd.

Bạn có thể trả về một biến từ một hàm trong Python không?

Hàm Python có thể trả về nhiều biến . Các biến này có thể được lưu trữ trực tiếp trong các biến. Một hàm không bắt buộc phải trả về một biến, nó có thể trả về 0, một, hai hoặc nhiều biến. Đây là thuộc tính riêng của Python, các ngôn ngữ lập trình khác như C++ hay Java mặc định không hỗ trợ tính năng này.

Chủ Đề