Cách tạo biến giả cho biến phân loại trong python

Chuỗi để nối tên cột DataFrame. Truyền danh sách có độ dài bằng số cột khi gọi get_dummies trên DataFrame. Ngoài ra, tiền tố có thể là tên cột ánh xạ từ điển thành tiền tố

prefix_sep str, mặc định '_'

Nếu thêm tiền tố, dấu phân cách/dấu phân cách để sử dụng. Hoặc chuyển một danh sách hoặc từ điển như với tiền tố

dummy_na bool, mặc định Sai

Thêm một cột để biểu thị NaN, nếu NaN sai bị bỏ qua

cột giống như danh sách, mặc định Không có

Tên cột trong DataFrame sẽ được mã hóa. Nếu các cột là Không thì tất cả các cột có dtype đối tượng, chuỗi hoặc danh mục sẽ được chuyển đổi

thưa thớt bool, mặc định Sai

Liệu các cột được mã hóa giả có được hỗ trợ bởi một

>>> pd.get_dummies[s]
   a  b  c
0  1  0  0
1  0  1  0
2  0  0  1
3  1  0  0
0 [Đúng] hay một mảng NumPy thông thường [Sai]

Xin chào mọi người, trong bài đăng này, chúng ta sẽ xem xét cách giải quyết vấn đề Df Create Dummy From Multiple Category bằng ngôn ngữ lập trình

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer[]
# get dummy array
dummy = mlb.fit_transform[df['cat'].str.split['|']]
# get category list 
mlb.classes_

Df Tạo giả từ nhiều danh mục đã được giải quyết bằng một số tình huống, như chúng ta đã thấy

Làm thế nào để bạn chuyển đổi nhiều biến phân loại thành biến giả?

Chúng ta sẽ khám phá ba cách tiếp cận để chuyển đổi Biến phân loại thành Biến giả trong bài viết này. Những cách tiếp cận này như sau

  • Sử dụng LabelBinarizer từ sklearn
  • Sử dụng BinaryEncoder từ category_encoders
  • Sử dụng hàm get_dummies[] của thư viện pandas

Làm cách nào để bạn tạo một biến giả cho tất cả các biến phân loại trong Python?

Chúng ta có thể tạo các biến giả trong python bằng phương thức get_dummies[]

  • cú pháp. gấu trúc. get_dummies[dữ liệu, tiền tố=Không, tiền tố_sep='_',]
  • Thông số
  • Loại trả lại. Biến giả

Làm cách nào để chuyển đổi nhiều biến phân loại thành biến giả trong R?

Để chuyển đổi các biến danh mục thành các biến giả trong dirtyverse, hãy sử dụng phương thức spread[]. Để làm như vậy, hãy sử dụng hàm spread[] với ba đối số. khóa, là cột để chuyển đổi thành các giá trị phân loại, trong trường hợp này là “Hãng hàng không báo cáo”;

Bạn có thể có nhiều hơn một biến giả không?

ví dụ 2. Tạo một biến giả với nhiều giá trị Vì hiện tại nó là một biến phân loại có thể nhận ba giá trị khác nhau [“Độc thân”, “Đã kết hôn” hoặc “Đã ly hôn”], chúng ta cần tạo k-1 = 3-1 = 2 biến giả . 02-Feb-2021

Làm cách nào để bạn chuyển đổi 3 biến phân loại thành biến giả?

Để chuyển đổi các biến phân loại của bạn thành các biến giả trong Python, bạn có thể sử dụng phương thức get_dummies[] của Pandas. Ví dụ: nếu bạn có biến phân loại “Giới tính” trong khung dữ liệu của mình có tên là “df”, bạn có thể sử dụng đoạn mã sau để tạo biến giả. df_dc = pd. get_dummies[df, cột=['Giới tính']]. 29-Dec-2019

Làm cách nào để bạn chuyển đổi nhiều dữ liệu phân loại thành số?

Phương pháp 1. Sử dụng phương thức replace[] Thay thế là một trong những phương pháp để chuyển đổi thuật ngữ phân loại thành số. Ví dụ: Chúng tôi sẽ lấy một bộ dữ liệu về mức lương của mọi người dựa trên trình độ học vấn của họ. Đây là một loại biến phân loại thứ tự. Chúng tôi sẽ chuyển đổi trình độ học vấn của họ thành các thuật ngữ số. 01-Dec-2021

Sự khác biệt giữa Nhận hình nộm và OneHotEncoder là gì?

[1] Get_dummies không thể xử lý danh mục không xác định trong quá trình chuyển đổi nguyên bản. Bạn phải áp dụng một số kỹ thuật để xử lý nó. Nhưng nó không hiệu quả. Mặt khác, OneHotEncoder sẽ xử lý các danh mục không xác định. 10-May-2022

Sự khác biệt giữa mã hóa nóng và biến giả là gì?

Mã hóa một lần Biến giả [nhị phân] chỉ nhận giá trị 0 hoặc 1 để biểu thị loại trừ hoặc bao gồm một danh mục. Trong mã hóa one-hot, màu “Đỏ” được mã hóa thành vectơ [1 0 0] có kích thước 3. Màu “Xanh lá cây” được mã hóa thành vectơ [0 1 0] có kích thước 3. 16-Dec-2021

Hàm Get_dummies[] trong pandas làm gì?

get_dummies[] được sử dụng để thao tác dữ liệu. Nó chuyển đổi dữ liệu phân loại thành các biến giả hoặc chỉ báo. 13-Oct-2020

Các biến giả có phải là 0 và 1 không?

Thật vậy, một biến giả có thể nhận giá trị 1 hoặc 0. Nó có thể biểu thị một biến nhị phân [ví dụ: nam/nữ và bạn có quyền quyết định giới tính nào bạn mã hóa thành 1 và biến nào thành 0] hoặc biến phân loại [ví dụ: trình độ học vấn. cơ bản/cao đẳng/sau đại học]. 03-Feb-2017

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng chức năng Pandas get dummies để tạo các biến giả trong Python

Tôi sẽ giải thích hàm này làm gì, giải thích cú pháp của pd. get_dummies và hiển thị cho bạn các ví dụ từng bước

Nếu bạn cần một cái gì đó cụ thể, chỉ cần nhấp vào bất kỳ liên kết nào sau đây

Mục lục

  • Giới thiệu
  • cú pháp
  • ví dụ
  • Các câu hỏi thường gặp

Được. Trước khi xem xét cú pháp và các ví dụ, chúng ta hãy xem tổng quan nhanh về chức năng của hàm

Giới thiệu nhanh về Pandas Get Dummies

Hàm Pandas get_dummies tạo các biến giả từ các đối tượng Pandas trong Python

Để hiểu điều này, chúng ta hãy nhanh chóng xem lại những điều cơ bản về “mã hóa giả. ”

Biến giả Mã hóa thông tin phân loại

Vậy chính xác biến giả là gì?

Biến giả là một biến số mã hóa thông tin phân loại

Biến giả có hai giá trị có thể. 0 hoặc 1

Trong một biến giả

  • A 1 mã hóa sự hiện diện của một danh mục
  • Số 0 mã hóa sự vắng mặt của danh mục

Chúng tôi thường gọi các biến 0/1 này là biến giả, nhưng đôi khi chúng cũng được gọi là biến chỉ báo. Trong học máy, điều này đôi khi còn được gọi là mã hóa “một lần nóng” của dữ liệu phân loại

Pandas Get Dummies Tạo các biến giả từ dữ liệu phân loại

Bây giờ bạn đã hiểu biến giả là gì, hãy nói về hàm get_dummies của Pandas

Như bạn có thể đoán, pd. get_dummies tạo các biến giả

Điều quan trọng là pd. get_dummies có thể tạo các biến giả từ Sê-ri Pandas hoặc từ một cột hoặc nhiều cột trong khung dữ liệu Pandas

Chúng ta sẽ xem xét cả hai điều này trong phần ví dụ

Các biến giả rất quan trọng đối với Machine Learning

Trước khi chúng ta xem cú pháp của pd. get_dummies, tôi muốn đưa ra nhận xét về lý do tại sao chúng ta cần các biến giả

Một số công cụ khoa học dữ liệu sẽ chỉ hoạt động khi dữ liệu đầu vào là số. Điều này đặc biệt đúng với học máy. Nhiều thuật toán học máy – như hồi quy tuyến tính và hồi quy logistic – yêu cầu nghiêm ngặt dữ liệu đầu vào số. Nếu bạn cố gắng sử dụng chúng với dữ liệu phân loại dựa trên chuỗi, chúng sẽ báo lỗi

Vì vậy, trước khi sử dụng các công cụ như vậy, bạn cần mã hóa dữ liệu phân loại của mình dưới dạng các biến giả dạng số

Thành thật mà nói, đây là một trong những bước làm sạch dữ liệu thường khiến các nhà khoa học dữ liệu và kỹ sư máy học thất vọng.

Nhưng tin tốt là Pandas có chức năng giả làm cho nó tương đối dễ thực hiện

Hãy xem chức năng

Cú pháp của Pandas Get Dummies

Ở đây, chúng ta sẽ xem xét cú pháp của hàm Pandas

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
0

Nhắc nhở nhanh

Trước khi chúng tôi xem xét cú pháp, tôi muốn nhắc bạn rằng phần giải thích cú pháp này giả định rằng bạn đã nhập Pandas

Bạn có thể nhập Pandas như thế này

import pandas as pd

Nó cũng giả định rằng bạn có Sê-ri Pandas hoặc khung dữ liệu mà bạn có thể sử dụng

[Chúng tôi thực sự sẽ tạo một khung dữ liệu và Sê-ri trong phần ví dụ. ]

Cú pháp p. get_dummies

Cú pháp của Pandas get dummies rất đơn giản

Bạn gọi hàm là

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
1

Bên trong dấu ngoặc đơn, đối số đầu tiên là đối tượng mà bạn muốn thao tác trên đó. Đây sẽ là khung dữ liệu Pandas hoặc Sê-ri Pandas

Ngoài ra còn có một số tham số tùy chọn mà bạn có thể sử dụng để thay đổi cách thức hoạt động của hàm

Hãy xem xét kỹ hơn về chúng

Các thông số của pd. get_dummies

Chức năng Pandas get dummies có

  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    2
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    3
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    4
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    5
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    6
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    7
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    8
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    9

Hãy cùng điểm qua những

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
9 [bắt buộc]

Tham số “data_object” cho phép bạn chỉ định một đối tượng dữ liệu mà bạn muốn thao tác trên đó

Đây có thể là khung dữ liệu Pandas, Sê-ri Pandas hoặc đối tượng giống như danh sách [tôi. e. , một danh sách, v.v.]

Điều quan trọng là bạn chỉ sử dụng tham số này theo vị trí. Pandas giả định rằng đối số đầu tiên bạn truyền vào hàm phải tương ứng với tham số này

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
3

Tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
3 chỉ định các cột mà bạn muốn chuyển thành biến giả

Cột này sẽ chỉ áp dụng nếu bạn đang thao tác trên khung dữ liệu có nhiều cột

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
4

Tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
4 cho phép bạn chỉ định tiền tố cho tên của các biến giả mới

Theo mặc định, tiền tố là tên của [các] biến bạn đang chuyển đổi

Vì vậy, nếu bạn đang thao tác trên một biến có tên “

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer[]
# get dummy array
dummy = mlb.fit_transform[df['cat'].str.split['|']]
# get category list 
mlb.classes_
85“, các biến giả mới sẽ bắt đầu bằng tiền tố “
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer[]
# get dummy array
dummy = mlb.fit_transform[df['cat'].str.split['|']]
# get category list 
mlb.classes_
85“

Bạn sẽ thấy các ví dụ về điều này trong phần ví dụ

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
5

Tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
5 cho phép bạn chỉ định dấu phân cách giữa tiền tố và danh mục giả, trong tên của các biến giả

Theo mặc định, dấu phân cách là “_”

Vì vậy, nếu bạn đang mã hóa một biến giả có tên là

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer[]
# get dummy array
dummy = mlb.fit_transform[df['cat'].str.split['|']]
# get category list 
mlb.classes_
85, với các danh mục
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
30 và
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
31, thì theo mặc định, các biến giả đầu ra sẽ có tên là
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
32 và
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
33. [Chú ý ký tự gạch dưới trong các tên biến này. ]

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
6

Tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
6 chỉ định bạn có muốn loại bỏ danh mục đầu tiên của biến phân loại mà bạn đang mã hóa hay không

Theo mặc định, điều này được đặt thành

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
36. Điều này sẽ khiến get_dummies tạo một biến giả cho mọi cấp độ của biến phân loại đầu vào

Nếu bạn đặt

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
37, thì nó sẽ loại bỏ danh mục đầu tiên. Vì vậy, nếu bạn có K danh mục, nó sẽ chỉ tạo ra K – 1 biến giả

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
7

Tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
7 cho phép bạn chỉ định liệu get_dummies có tạo một biến giả riêng mã hóa các giá trị bị thiếu hay không

Theo mặc định, tham số này được đặt thành

import pandas as pd
30. Trong trường hợp này, get_dummies sẽ không tạo biến giả cho các giá trị NA

Nếu

import pandas as pd
31, get_dummies sẽ tạo một biến riêng chứa 1 nếu giá trị đầu vào bị thiếu và 0 nếu ngược lại

Điều này có thể hữu ích nếu dữ liệu của bạn có các giá trị bị thiếu và bạn cho rằng giá trị bị thiếu đó mang tính thông tin theo một cách nào đó

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
8

Tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
8 chỉ định nếu các biến giả mới được hỗ trợ bởi một
import pandas as pd
34

[Cái này hơi ít dùng. ]

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
9

Tham số dtype chỉ định kiểu dữ liệu của các biến giả mới

Theo mặc định, kiểu dữ liệu của các biến giả mới là

import pandas as pd
36

Đầu ra của pd. get_dummies

Là một đầu ra, hàm Pandas get dummies sẽ trả về một khung dữ liệu chứa các biến giả mới

ví dụ. Cách tạo biến giả trong Python bằng Pandas

Bây giờ bạn đã xem cú pháp của hàm Pandas get dummies, hãy xem một số ví dụ về cách tạo biến giả trong Python

ví dụ

  • Sử dụng Nhận hình nộm trên một sê-ri
  • Sử dụng Nhận hình nộm trên cột Dataframe
  • Sử dụng Nhận hình nộm trên cột Dataframe và bỏ danh mục đầu tiên
  • Sử dụng Nhận biến giả trên cột Dataframe và chỉ định tiền tố cho các biến giả
  • Sử dụng Nhận hình nộm trên cột Dataframe và bao gồm các giá trị NA

Chạy mã này trước

Trước khi chạy các ví dụ, bạn sẽ cần chạy một số mã sơ bộ để

  • nhập các gói cần thiết
  • lấy khung dữ liệu ví dụ

Hãy làm từng cái một

gói nhập khẩu

Trước tiên, hãy nhập Pandas và Numpy

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
0

Rõ ràng là chúng ta sẽ cần Pandas để sử dụng pd. hàm get_dummies

Nhưng chúng tôi sẽ sử dụng Numpy khi chúng tôi tạo dữ liệu của mình để bao gồm các giá trị NA

Tạo khung dữ liệu mẫu

Tiếp theo, chúng ta cần tạo một tập dữ liệu mà chúng ta có thể làm việc với

Ở đây, chúng ta sẽ tạo một số "dữ liệu bán hàng" giả bằng cách sử dụng pd. Hàm DataFrame, với một từ điển các giá trị sẽ trở thành các cột

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]

Hãy in dữ liệu ra để xem nội dung

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer[]
# get dummy array
dummy = mlb.fit_transform[df['cat'].str.split['|']]
# get category list 
mlb.classes_
8

NGOÀI

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
3

Biến

import pandas as pd
37 là một biến phân loại mà chúng ta có thể chuyển đổi thành các biến giả 0/1

Ngoài ra, lưu ý rằng một trong các giá trị của

import pandas as pd
37 là
import pandas as pd
39 [i. e. , một giá trị còn thiếu]. Điều này sẽ rất quan trọng trong ví dụ 5

Tạo sê-ri

Chúng tôi cũng sẽ tạo một Chuỗi Pandas có tên là

import pandas as pd
37

import pandas as pd
3

Biến này chứa các danh mục khu vực mà chúng tôi đã tạo trong khung dữ liệu của mình

Bây giờ chúng ta đã có một số dữ liệu, hãy làm việc với một số ví dụ

VÍ DỤ 1. Sử dụng Getdummies trên một sê-ri

Đầu tiên, chúng ta hãy sử dụng chức năng lấy hình nộm trên Pandas Series

Chúng tôi sẽ sử dụng chức năng trên Sê-ri

import pandas as pd
37 mà chúng tôi đã tạo trước đó một chút

In dữ liệu

Đầu tiên, chúng ta hãy in dữ liệu ra, để chúng ta có thể xem những gì trong Sê-ri

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
0

NGOÀI

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
1

Như bạn có thể thấy,

import pandas as pd
37 chứa dữ liệu chuỗi được sắp xếp thành 4 loại [Bắc, Nam, Đông và Tây]. Ngoài ra còn có một giá trị còn thiếu ở cuối chuỗi

sử dụng pd. get_dummies

Bây giờ, chúng ta sẽ sử dụng chức năng get_dummies của Pandas

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
3

NGOÀI

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
4

[Ghi chú. đầu ra này thực sự là một khung dữ liệu. ]

Giải trình

Chú ý những gì đã xảy ra ở đây

Đầu ra của pd. get_dummies là một nhóm gồm 4 biến mới

  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    03
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    04
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    05
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    06

Có một biến mới cho mọi cấp độ của biến phân loại ban đầu

Trong đó giá trị là '

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
03' trong Sê-ri ban đầu, biến
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
03 mới có giá trị là 1 [và giá trị cho các biến khác là 0]

Trong đó giá trị là '

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
04' trong Sê-ri ban đầu, biến
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
04 mới có giá trị là 1 [và giá trị cho các biến khác là 0]

Và như thế

Như vậy hàm get_dummies đã mã hóa lại một biến đơn có 4 giá trị, thành 4 biến có giá trị 0 hoặc 1. Cấu trúc mới chứa cùng một thông tin một cách hiệu quả, nhưng nó được thể hiện theo một cách khác

VÍ DỤ 2. Sử dụng Getdummies trên cột Dataframe

Tiếp theo, chúng tôi sẽ sử dụng pd. get_dummies trên một cột bên trong khung dữ liệu

Cụ thể, chúng tôi sẽ sử dụng Pandas get_dummies trên biến

import pandas as pd
37 bên trong khung dữ liệu
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
12

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
00

NGOÀI

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
01Giải trình

Trước hết, lưu ý rằng đầu ra của hoạt động là một khung dữ liệu mới

Trong khung dữ liệu mới này, biến

import pandas as pd
37 cũ đã biến mất

Nó đã được thay thế bằng 4 biến mới

  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    14
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    15
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    16
  • sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    17

Theo mặc định, get_dummies sử dụng tên của biến cũ [

import pandas as pd
37] làm tiền tố cho tên biến mới

Cũng lưu ý cách các biến mới được mã hóa

  • Trong đó giá trị là '
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    03' trong Sê-ri ban đầu, biến
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    14 mới có giá trị là 1 [và giá trị của các biến khác là 0]
  • Trong đó giá trị là '
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    04' trong Sê-ri ban đầu, biến
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    15 mới có giá trị là 1 [và giá trị cho các biến khác là 0]
  • Trong đó giá trị là '
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    05' trong Sê-ri ban đầu, biến
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    16 mới có giá trị là 1 [và giá trị cho các biến khác là 0]
  • Trong đó giá trị là '
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    06' trong Sê-ri ban đầu, biến
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    17 mới có giá trị là 1 [và giá trị cho các biến khác là 0]

Vì vậy, Pandas get_dummies đã tạo một biến 0/1 mới cho mọi cấp độ của biến phân loại ban đầu

Điều này rất giống với ví dụ 1, nhưng thay vì thực hiện thao tác này trên Chuỗi Pandas độc lập, chúng tôi đã thực hiện thao tác trên một cột tồn tại bên trong khung dữ liệu

[Lưu ý rằng đầu ra của thao tác này là một khung dữ liệu mới. ]

VÍ DỤ 3. Sử dụng Getdummies trên cột Dataframe và bỏ danh mục đầu tiên

Bây giờ, chúng tôi sẽ sử dụng get_dummies, nhưng chúng tôi sẽ sử dụng tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
6 để loại bỏ cấp độ đầu tiên của biến phân loại mà chúng tôi đang vận hành

Để làm điều này, chúng tôi sẽ đặt

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
37

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
02

NGOÀI

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
03Giải trình

Lưu ý rằng đầu ra hiện chỉ có 3 biến giả

  • vùng_Bắc
  • vùng_Nam
  • vùng_Tây

Biến giả cho danh mục ‘

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
03‘ đã biến mất

Tại sao?

Đặt

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
37 khiến get_dummies loại trừ biến giả cho danh mục đầu tiên của biến mà bạn đang thao tác

Nhưng tại sao chúng ta sẽ làm điều đó?

Khi bạn có một biến phân loại với K loại loại trừ lẫn nhau, bạn thực sự chỉ cần K – 1 biến giả mới để mã hóa cùng một thông tin

Điều này là do nếu tất cả các biến giả hiện có bằng 0, thì chúng ta biết rằng giá trị phải là 1 cho biến giả còn lại

Vì vậy, ví dụ: nếu

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
41, và
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
42, và
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
43, thì
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
14 phải bằng 1. Điều này được ngụ ý bởi 3 biến giả hiện có, vì vậy chúng tôi không cần biến thứ 4. Biến giả thêm theo nghĩa đen chứa thông tin dư thừa

Vì vậy, quy ước chung là loại bỏ biến giả cho cấp độ đầu tiên của biến phân loại mà bạn đang mã hóa

[Trên thực tế, nó thường cần thiết cho một số loại mô hình máy học. Nếu bạn không loại bỏ biến giả bổ sung, nó có thể gây ra sự cố với mô hình của bạn. ]

VÍ DỤ 4. Sử dụng Getdummies trên cột Dataframe và chỉ định tiền tố cho các biến giả

Bây giờ, chúng ta sẽ tạo các biến giả với tiền tố cụ thể

Nhớ lại. theo mặc định, nó sử dụng tên biến làm tiền tố cho các biến giả mới

Nhưng ở đây, chúng tôi sẽ đặt

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
45 để sử dụng một tiền tố khác

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
04

NGOÀI

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
05Giải trình

Lưu ý rằng bây giờ, tiền tố cho tất cả các biến giả là

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
46 [thay vì chỉ
import pandas as pd
37]

Điều này là do chúng tôi đặt tiền tố theo cách thủ công với tham số

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
4

Hãy ghi nhớ, tiền tố có thể phức tạp hơn. bạn có thể cung cấp một từ điển các giá trị tiền tố tương ứng với các biến giả mới. Tuy nhiên, 98% thời gian, bạn sẽ chỉ muốn đặt một tiền tố duy nhất như chúng tôi đã làm ở đây

VÍ DỤ 5. Sử dụng Getdummies trên cột Dataframe và bao gồm các giá trị NA

Cuối cùng, hãy xem cách tạo biến giả cho các giá trị bị thiếu

Bạn sẽ nhận thấy rằng trong khung dữ liệu của chúng tôi,

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
12, giá trị vùng là
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
000 cho một trong các hàng [hàng cho Paulo]. Đây là giá trị còn thiếu

Bạn cũng sẽ nhận thấy rằng trong các ví dụ trước, đối với hàng dữ liệu này, các giá trị cho tất cả các biến giả mới được tạo là 0

Ở đây, chúng ta sẽ tạo thêm một biến giả mã hóa 1 cho các giá trị bị thiếu

Để làm điều này, chúng tôi sẽ đặt

import pandas as pd
31

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
06

NGOÀI

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
07Giải trình

Bạn có thể thấy ở đầu ra, ngoài việc tạo các biến giả cho từng danh mục, get_dummies còn tạo một biến có tên là

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
002

Giá trị này chỉ có 1 trong đó giá trị của biến mà chúng tôi đã thao tác có giá trị bị thiếu [

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
000]. Đối với tất cả các giá trị khác,
sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
002 có 0

Điều này hữu ích khi bạn có dữ liệu bị thiếu giá trị và bạn muốn mã hóa thông tin về giá trị bị thiếu đó trong các biến giả mới của mình

Đôi khi, điều này là hữu ích. Trong học máy, đôi khi chúng tôi gọi đây là “sự thiếu thông tin. ”

Câu hỏi thường gặp về Pandas Get_dummies

Bây giờ chúng ta đã xem xét một số ví dụ, hãy xem xét một số câu hỏi phổ biến về kỹ thuật

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
0

Các câu hỏi thường gặp

  • Tôi đã sử dụng
    sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                               ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                               ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                               }
                              ]
    0, nhưng dữ liệu của tôi không thay đổi. Tại sao?

Câu hỏi 1. Tôi đã sử dụng get_dummies, nhưng dữ liệu của tôi không thay đổi. Tại sao?

Nếu bạn sử dụng hàm get_dummies, bạn có thể nhận thấy rằng dữ liệu gốc của mình không thay đổi sau khi bạn gọi hàm

Ví dụ, trong ví dụ 1, chúng tôi đã sử dụng đoạn mã sau

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
00

Nhưng nếu bạn kiểm tra

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
12 sau khi chạy mã, bạn sẽ nhận ra rằng nó vẫn chứa các biến ban đầu [và các biến giả không có ở đó

Đó là bởi vì khi chúng ta chạy hàm

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
0, nó sẽ xuất ra một đối tượng mới và giữ nguyên đối tượng ban đầu

Đây là cách hoạt động của hầu hết các phương pháp Pandas

Theo mặc định, đầu ra được gửi đến bàn điều khiển. Chúng ta có thể thấy đầu ra trong bảng điều khiển, nhưng để lưu nó, chúng ta cần lưu trữ nó với một tên

Ví dụ: bạn có thể lưu trữ đầu ra như thế này

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
09

Bạn có thể đặt tên cho đầu ra mới bất cứ điều gì bạn muốn. Bạn thậm chí có thể đặt tên nó với tên gốc là

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
12

Nhưng hãy cẩn thận. Nếu bạn chỉ định lại đầu ra của

sales_data = pd.DataFrame[{"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
                           ,"sales":[50000,52000,90000,34000,42000,72000,49000,55000,67000,65000,67000]
                           ,"region":["East","North","East","South","West","West","South","West","West","East",np.nan]
                           }
                          ]
010 cho tên tập dữ liệu, nó sẽ ghi đè lên tập dữ liệu gốc của bạn. Đảm bảo rằng bạn đã kiểm tra mã của mình để mã hoạt động bình thường trước khi thực hiện việc này

Để lại câu hỏi khác của bạn trong các ý kiến ​​​​dưới đây

Bạn có câu hỏi nào khác về phương thức get_dummies của Pandas không?

Có điều gì khác mà bạn cần biết mà tôi chưa đề cập ở đây không?

Nếu vậy, hãy để lại câu hỏi của bạn trong phần bình luận bên dưới

Khám phá cách trở nên 'thông thạo' trong Pandas

Hướng dẫn này chỉ cho bạn cách sử dụng phương thức get_dummies của Pandas, nhưng nếu bạn muốn thành thạo việc sắp xếp dữ liệu với Pandas, thì còn rất nhiều điều cần tìm hiểu

Vì vậy, nếu bạn muốn thành thạo việc sắp xếp dữ liệu trong Python và trở nên 'thông thạo' Pandas, thì bạn nên tham gia khóa học của chúng tôi, Pandas Mastery

Pandas Mastery là khóa học trực tuyến của chúng tôi sẽ dạy cho bạn các công cụ thao tác dữ liệu quan trọng này, chỉ cho bạn cách ghi nhớ cú pháp và chỉ cho bạn cách kết hợp tất cả lại với nhau

Các biến phân loại có phải là biến giả không?

Biến giả [hay còn gọi là biến chỉ báo] là một biến số đại diện cho dữ liệu phân loại , chẳng hạn như giới tính, chủng tộc, đảng phái chính trị, v.v. Về mặt kỹ thuật, các biến giả là các biến phân đôi, định lượng. Phạm vi giá trị của chúng là nhỏ; .

Có thể sử dụng hình nộm gấu trúc để mã hóa các biến phân loại không?

Cả mã hóa one-hot và giả đều có thể được triển khai trong Pandas bằng cách sử dụng hàm get_dummies . dữ liệu - Ở đây chúng tôi chỉ định dữ liệu mà chúng tôi cần mã hóa. Nó có thể là một mảng NumPy, Pandas Series hoặc DataFrame.

Các biến giả là phân loại hay số?

Biến giả là một giá trị số được sử dụng để biểu thị dữ liệu phân loại như giới tính, chủng tộc, v.v. [ví dụ: gán giá trị 1 cho nam hoặc 0 cho nữ].

Kết quả của việc tạo các biến giả từ cột phân loại là gì?

Việc chuyển đổi Biến phân loại thành Biến giả dẫn đến sự hình thành của ma trận nhị phân hai chiều trong đó mỗi cột đại diện cho một danh mục cụ thể.

Chủ Đề