Computer >> Máy Tính >  >> Lập trình >> Python

Cách chọn nhiều cột DataFrame bằng cách sử dụng regexp và kiểu dữ liệu

DataFrame có thể được so sánh với tập dữ liệu được giữ trong bảng tính hoặc cơ sở dữ liệu với các hàng và cột. DataFrame là một Đối tượng 2D.

Ok, bạn nhầm lẫn với thuật ngữ 1D và 2D?

Sự khác biệt chính giữa 1D (Series) và 2D (DataFrame) là số lượng điểm thông tin bạn cần để inorer đến bất kỳ điểm dữ liệu đơn lẻ nào. Nếu bạn lấy một ví dụ về Chuỗi và muốn trích xuất một giá trị, bạn chỉ cần một điểm tham chiếu, tức là chỉ mục hàng.

So sánh với một bảng (DataFrame), một điểm tham chiếu là không đủ để đến một điểm dữ liệu, bạn cần một giao điểm của giá trị hàng và giá trị cột.

Đoạn mã dưới đây cho biết cách tạo Pandas DataFrame từ tệp csv.

Phương thức .read_csv () theo mặc định tạo một DataFrame. Bạn có thể tải xuống bộ dữ liệu phim từ kaggle.com bằng cách tìm kiếm phim.

 "" "Tập lệnh:Tạo Pandas DataFrame từ tệp csv." "" nhập gấu trúc dưới dạng pdmovies_dataset pd read_csv "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")# 1 in loại objecttype (phim_dataset) # 2 in 5 bản ghi hàng đầu ở định dạng bảng 


ngân sách id doanh thu thời gian chạy trạng thái tiêu đề



original_language
original_title
phổ biến
release_date




vote_average
vote_count
0
237000000
19995
vi
Hình đại diện
150.437577
10/12/2009
2787965087
162.0
Đã phát hành
Hình đại diện
7.2
11800
1
300000000
285
vi
Cướp biển vùng Caribe:Ngày tận thế
139.082615
19/05/2007
961000000
169.0
Đã phát hành
Cướp biển vùng Caribe:Ngày tận thế
6.9
4500
2
245000000
206647
vi
Bóng ma
107.376788
26/10/2015
880674609
148.0
Đã phát hành
Bóng ma
6.3
4466
3
250000000
49026
vi
Hiệp sĩ bóng đêm trỗi dậy
112.312950
16/07/2012
1084939099
165.0
Đã phát hành
Hiệp sĩ bóng đêm trỗi dậy
7.6
9106
4
260000000
49529
vi
John Carter
43,926995
7/03/2012
284139100
132.0
Đã phát hành
John Carter
6.1
2124

2.Chọn một cột DataFrame đơn. Chèn tên cột dưới dạng chuỗi hoặc danh sách cho toán tử chỉ mục sẽ trả về giá trị cột dưới dạng Chuỗi hoặc Dữ liệu.

Nếu chúng ta truyền vào một chuỗi có tên cột, bạn sẽ nhận được một Chuỗi làm đầu ra, tuy nhiên, việc chuyển danh sách chỉ với một tên cột sẽ trả về DataFrame. Chúng ta sẽ thấy điều này với các ví dụ.

 # select data as series movies_dataset ["title"] 


 0 Avatar1 Pirates of the Caribbean:At World's End2 Spectre3 The Dark Knight trỗi dậy4 John Carter ... 4798 El Mariachi4799 Cặp vợ chồng mới cưới4800 Đã ký, Kín, Đã giao trước> 


 # select data as DataFrame movies_dataset [["title"]] 


tiêu đề


0
Hình đại diện
1
Cướp biển vùng Caribe:Ngày tận thế
2
Bóng ma
3
Hiệp sĩ bóng đêm trỗi dậy
4
John Carter
...
...
4798
El Mariachi
4799
Cặp đôi mới cưới
4800
Đã ký, đóng dấu, đã giao
4801
Gọi điện tại Thượng Hải
4802
Ngày của tôi với Drew

3.Chọn nhiều cột DataFrame.

 # Nhiều cột DataFrame movies_dataset [["title" "thời gian chạy", "vote_average", "vote_count"]] 


tiêu đề thời gian chạy



vote_average
vote_count
0
Hình đại diện
162.0
7.2
11800
1
Cướp biển vùng Caribe:Ngày tận thế
169.0
6.9
4500
2
Bóng ma
148.0
6.3
4466
3
Hiệp sĩ bóng đêm trỗi dậy
165.0
7.6
9106
4
John Carter
132.0
6.1
2124
...
...
...
...
...
4798
El Mariachi
81.0
6.6
238
4799
Cặp đôi mới cưới
85.0
5.9
5
4800
Đã ký, đóng dấu, đã giao
120.0
7.0
6
4801
Gọi điện tại Thượng Hải
98.0
5,7
7
4802
Ngày của tôi với Drew
90.0
6.3
16

Để tránh các vấn đề về khả năng đọc mã, tôi luôn khuyên bạn nên xác định một biến để giữ tên của các cột dưới dạng danh sách và sử dụng tên cột thay vì chỉ định nhiều tên cột trong mã.

 column =["title", "runtime", "vote_average", "vote_count"] phim_dataset [cột] 


tiêu đề thời gian chạy



vote_average
vote_count
0
Hình đại diện
162.0
7.2
11800
1
Cướp biển vùng Caribe:Ngày tận thế
169.0
6.9
4500
2
Bóng ma
148.0
6.3
4466
3
Hiệp sĩ bóng đêm trỗi dậy
165.0
7.6
9106
4
John Carter
132.0
6.1
2124
...
...
...
...
...
4798
El Mariachi
81.0
6.6
238
4799
Cặp đôi mới cưới
85.0
5.9
5
4800
Đã ký, đóng dấu, đã giao
120.0
7.0
6
4801
Gọi điện tại Thượng Hải
98.0
5,7
7
4802
Ngày của tôi với Drew
90.0
6.3
16

4.DataFrame cột theo tên cột.

.filter () phương thức

Phương pháp này khá tiện dụng để tìm kiếm và chọn các cột bằng cách sử dụng một chuỗi. Điều này hoạt động khá giống với tham số %% trong SQL. Hãy nhớ rằng, phương thức .filter () chọn cột bằng cách chỉ kiểm tra tên cột chứ không phải giá trị dữ liệu thực tế.

Phương thức .filter () hỗ trợ ba tham số có thể được sử dụng cho hoạt động lựa chọn.

.như
.regex
.items

Tham số
 like nhận một chuỗi và cố gắng tìm các tên cột chứa chuỗi này ở đâu đó trong tên cột. 


 # Chọn cột có tên cột như "title" movies_dataset.filter (like ="title"). head (5) 


tiêu đề

original_title

0
Hình đại diện
Hình đại diện
1
Cướp biển vùng Caribe:Ngày tận thế
Cướp biển vùng Caribe:Ngày tận thế
2
Bóng ma
Bóng ma
3
Hiệp sĩ bóng đêm trỗi dậy
Hiệp sĩ bóng đêm trỗi dậy
4
John Carter
John Carter

.regex - Cách linh hoạt hơn để chọn tên cột bằng cách sử dụng biểu thức regualr

 # Chọn các cột kết thúc bằng "t" movies_dataset.filter (regex =t) .head () 


ngân sách


vote_count
0
237000000
11800
1
300000000
4500
2
245000000
4466
3
250000000
9106
4
260000000
2124

.items - Bản sao của việc chuyển tên cột dưới dạng chuỗi hoặc danh sách sang toán tử chỉ mục, ngoại trừ KeyError sẽ không được đưa ra

DataFrame cột theo kiểu dữ liệu.

Phương thức .select_dtypes hoạt động trên các kiểu dữ liệu cột nếu bạn muốn lọc và chỉ sử dụng một số kiểu dữ liệu nhất định.

Một lần nữa, phương thức .select_dtypes chấp nhận nhiều kiểu dữ liệu (theo danh sách) hoặc kiểu dữ liệu đơn lẻ (dưới dạng Chuỗi) trong các tham số bao gồm hoặc loại trừ của nó và trả về DataFrame với các cột chỉ của các kiểu dữ liệu đã cho đó.

Tham số .include bao gồm các cột có / s kiểu dữ liệu được chỉ định và .exclude sẽ bỏ qua các cột có kiểu dữ liệu được chỉ định.

Trước tiên, chúng ta hãy xem xét các loại dữ liệu và số lượng cột có các loại dữ liệu đó

 movies_dataset =pd.read_csv ("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv" movies_dataset.dtypes.value_counts () 


 đối tượng 5int64 4float64 3dtype:int64 


a) Lọc kiểu dữ liệu số nguyên từ DataFrames của gấu trúc.

 movies_dataset select_dtypes (include ="int") head (3) 


2
1
0


b). Chọn kiểu dữ liệu số nguyên và số thực từ DataFrames gấu trúc.

Bạn có thể chỉ định nhiều kiểu dữ liệu như một danh sách hiển thị bên dưới.

 movies_dataset select_dtypes (include =["int64", "float"]). head (3) 


ngân sách id doanh thu thời gian chạy



phổ biến


vote_average
vote_count
0
237000000
19995
150.437577
2787965087
162.0
7.2
11800
1
300000000
285
139.082615
961000000
169.0
6.9
4500
2
245000000
206647
107.376788
880674609
148.0
6.3
4466

c) Vâng, nếu bạn chỉ muốn tất cả các kiểu dữ liệu số, chỉ cần chỉ định số

 movies_dataset select_dtypes (include =["number"]). head (3) 


ngân sách id doanh thu thời gian chạy



phổ biến


vote_average
vote_count
0
237000000
19995
150.437577
2787965087
162.0
7.2
11800
1
300000000
285
139.082615
961000000
169.0
6.9
4500
2
245000000
206647
107.376788
880674609
148.0
6.3
4466

d). Loại trừ một số loại dữ liệu nhất định khỏi DataFrames của gấu trúc.


 movies_dataset select_dtypes (lude =["object"]). head (3) 


ngân sách id doanh thu thời gian chạy



phổ biến


vote_average
vote_count
0
237000000
19995
150.437577
2787965087
162.0
7.2
11800
1
300000000
285
139.082615
961000000
169.0
6.9
4500
2
245000000
206647
107.376788
880674609
148.0
6.3
4466


LƯU Ý :- Không có kiểu dữ liệu chuỗi để xử lý, gấu trúc chuyển đổi chúng thành Đối tượng, vì vậy nếu bạn gặp phải ngoại lệ “TypeError:kiểu dữ liệu“ chuỗi ”không hiểu”, hãy thay thế chuỗi bằng Đối tượng.