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 SaiThê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 SaiLiệ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 00 [Đú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] } ]
2sales_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] } ]
3sales_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] } ]
4sales_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] } ]
5sales_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] } ]
6sales_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] } ]
7sales_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] } ]
8sales_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 pd30. 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 pd31, 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 pd34
[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 pd36
Đầ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ẩuTrướ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
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 pd37 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 pd37 là
import pandas as pd39 [i. e. , một giá trị còn thiếu]. Điều này sẽ rất quan trọng trong ví dụ 5Tạo sê-ri
Chúng tôi cũng sẽ tạo một Chuỗi Pandas có tên là
import pandas as pd37
import pandas as pd3
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 pd37 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 pd37 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ìnhChú ý 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] } ]
03sales_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] } ]
04sales_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] } ]
05sales_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 pd37 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 pd37 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] } ]
14sales_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] } ]
15sales_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] } ]
16sales_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 pd37] 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ếnsales_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ếnsales_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ếnsales_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ếnsales_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 pd37]
Đ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 pd31
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