Làm cách nào để hợp nhất hai mảng vào một khung dữ liệu trong python?
Trong nhiều tình huống “thế giới thực”, dữ liệu mà chúng tôi muốn sử dụng có trong nhiều tệp. Chúng tôi thường cần kết hợp các tệp này thành một DataFrame duy nhất để phân tích dữ liệu. Gói gấu trúc cung cấp nhiều phương pháp khác nhau để kết hợp DataFrames bao gồm 4 và 5 Show
Để làm việc với các ví dụ bên dưới, trước tiên chúng ta cần tải các tệp khảo sát và loài vào pandas DataFrames. Trong iPython
Hãy lưu ý rằng phương pháp 6 chúng tôi đã sử dụng có thể có một số tùy chọn bổ sung mà trước đây chúng tôi không sử dụng. Nhiều chức năng trong Python có một tập hợp các tùy chọn mà người dùng có thể đặt nếu cần. Trong trường hợp này, chúng tôi đã yêu cầu gấu trúc gán các giá trị trống trong CSV của chúng tôi cho NaN 7. Nối khung dữ liệuChúng ta có thể sử dụng hàm 5 trong gấu trúc để nối các cột hoặc hàng từ Khung dữ liệu này sang Khung dữ liệu khác. Hãy lấy hai tập hợp con dữ liệu của chúng tôi để xem nó hoạt động như thế nào
Khi chúng tôi nối các DataFrames, chúng tôi cần chỉ định trục. 9 yêu cầu gấu trúc xếp Khung dữ liệu thứ hai DƯỚI cái đầu tiên. Nó sẽ tự động phát hiện xem các tên cột có giống nhau hay không và sẽ xếp chồng lên nhau. 0 sẽ xếp các cột trong Khung dữ liệu thứ hai sang BÊN PHẢI của Khung dữ liệu đầu tiên. Để sắp xếp dữ liệu theo chiều dọc, chúng tôi cần đảm bảo rằng chúng tôi có các cột giống nhau và định dạng cột được liên kết trong cả hai bộ dữ liệu. Khi chúng tôi xếp theo chiều ngang, chúng tôi muốn đảm bảo rằng những gì chúng tôi đang làm có ý nghĩa (i. e. dữ liệu có liên quan theo một cách nào đó)________số 8_______ Giá trị chỉ mục hàng và ConcatHãy xem khung dữ liệu 1? . Chúng tôi có thể lập chỉ mục lại khung dữ liệu mới bằng phương thức 4Viết dữ liệu ra CSVChúng tôi có thể sử dụng lệnh 3 để xuất DataFrame ở định dạng CSV. Lưu ý rằng mã bên dưới sẽ theo mặc định lưu dữ liệu vào thư mục làm việc hiện tại. Chúng ta có thể lưu nó vào một thư mục khác bằng cách thêm tên thư mục và dấu gạch chéo vào tệp 6. Chúng tôi sử dụng 'index=False' để gấu trúc không bao gồm số chỉ mục cho mỗi dòng
Kiểm tra thư mục làm việc của bạn để đảm bảo CSV được viết đúng cách và bạn có thể mở nó. Nếu bạn muốn, hãy thử đưa nó trở lại Python để đảm bảo nó nhập đúng cách
Tham gia DataFrames Khi chúng tôi nối các Khung dữ liệu của mình, chúng tôi chỉ cần thêm chúng vào nhau - xếp chúng theo chiều dọc hoặc cạnh nhau. Một cách khác để kết hợp DataFrames là sử dụng các cột trong mỗi tập dữ liệu chứa các giá trị chung (id duy nhất chung). Kết hợp DataFrames bằng cách sử dụng một trường chung được gọi là "tham gia". Các cột chứa các giá trị chung được gọi là “(các) khóa nối”. Tham gia DataFrames theo cách này thường hữu ích khi một DataFrame là “bảng tra cứu” chứa dữ liệu bổ sung mà chúng tôi muốn đưa vào khung kia GHI CHÚ. Quá trình nối các bảng này tương tự như những gì chúng ta thực hiện với các bảng trong cơ sở dữ liệu SQL Ví dụ: tệp 9 mà chúng ta đang làm việc là một bảng tra cứu. Bảng này chứa chi, loài và mã phân loại của 55 loài. Mã loài là duy nhất cho mỗi dòng. Những loài này được xác định trong dữ liệu khảo sát của chúng tôi cũng như sử dụng mã loài duy nhất. Thay vì thêm 3 cột nữa cho chi, loài và đơn vị phân loại vào mỗi bảng trong số 35.549 dòng dữ liệu Khảo sát, chúng ta có thể duy trì bảng ngắn hơn với thông tin về loài. Khi chúng tôi muốn truy cập thông tin đó, chúng tôi có thể tạo một truy vấn nối các cột thông tin bổ sung vào dữ liệu Khảo sátLưu trữ dữ liệu theo cách này có nhiều lợi ích bao gồm
Tham gia hai khung dữ liệuĐể hiểu rõ hơn về các phép nối, hãy lấy 10 dòng dữ liệu đầu tiên của chúng tôi làm tập hợp con để làm việc với. Chúng tôi sẽ sử dụng phương pháp 0 để làm điều này. Chúng tôi cũng sẽ đọc trong một tập hợp con của bảng loài
Trong ví dụ này, 1 là bảng tra cứu chứa tên chi, loài và đơn vị phân loại mà chúng tôi muốn kết hợp với dữ liệu trong 2 để tạo ra một Khung dữ liệu mới chứa tất cả các cột từ cả 3 và 4Xác định các phím tham giaĐể xác định các khóa tham gia phù hợp, trước tiên chúng tôi cần biết (các) trường nào được chia sẻ giữa các tệp (DataFrames). Chúng tôi có thể kiểm tra cả hai DataFrames để xác định các cột này. Nếu chúng tôi may mắn, cả hai DataFrames sẽ có các cột có cùng tên cũng chứa cùng một dữ liệu. Nếu chúng tôi kém may mắn hơn, chúng tôi cần xác định một cột (được đặt tên khác) trong mỗi DataFrame chứa cùng một thông tin
Trong ví dụ của chúng tôi, khóa nối là cột chứa định danh loài gồm hai chữ cái, được gọi là 5Bây giờ chúng tôi đã biết các trường có thuộc tính ID loài phổ biến trong mỗi DataFrame, chúng tôi gần như đã sẵn sàng tham gia dữ liệu của mình. Tuy nhiên, vì có nhiều loại liên kết khác nhau nên chúng tôi cũng cần quyết định loại liên kết nào phù hợp với phân tích của chúng tôi tham gia bên trongLoại liên kết phổ biến nhất được gọi là liên kết bên trong. Một liên kết bên trong kết hợp hai DataFrames dựa trên khóa tham gia và trả về một DataFrame mới chỉ chứa những hàng có giá trị khớp trong cả hai DataFrames gốc Các phép nối bên trong mang lại một DataFrame chỉ chứa các hàng có giá trị được nối tồn tại trong CẢ HAI bảng. Dưới đây là một ví dụ về phép nối bên trong, được điều chỉnh từ blogpost của Jeff Atwood về phép nối SQL Hàm pandas để thực hiện phép nối được gọi là 4 và phép nối bên trong là tùy chọn mặc định
Kết quả của phép nối bên trong của 2 và 1 là một Khung dữ liệu mới chứa tập hợp các cột được kết hợp từ 2 và 1. Nó chỉ chứa các hàng có mã loài gồm hai chữ cái giống nhau trong cả Khung dữ liệu 2 và 1. Nói cách khác, nếu một hàng trong 2 có giá trị 5 không xuất hiện trong cột 5 của 6, nó sẽ không được đưa vào Khung dữ liệu được trả về bởi một phép nối bên trong. Tương tự, nếu một hàng trong 1 có giá trị 5 không xuất hiện trong cột 5 của 2, thì hàng đó sẽ không được đưa vào Khung dữ liệu được trả về bởi một phép nối bên trongHai DataFrames mà chúng tôi muốn tham gia được chuyển đến hàm 4 bằng cách sử dụng đối số 2 và 3. Đối số 4 yêu cầu 4 sử dụng cột 5 làm khóa tham gia từ 2 (Khung dữ liệu 2). Tương tự như vậy, đối số 9 yêu cầu 4 sử dụng cột 5 làm khóa tham gia từ 1 (Khung dữ liệu 3). Đối với các liên kết bên trong, thứ tự của các đối số 2 và 3 không quan trọngKết quả 6 DataFrame chứa tất cả các cột từ 2 (id bản ghi, tháng, ngày, v.v. ) cũng như tất cả các cột từ 1 (species_id, chi, loài và taxa)Lưu ý rằng 6 có ít hàng hơn 2. Đây là dấu hiệu cho thấy có các hàng trong 1 có (các) giá trị cho 5 không tồn tại dưới dạng (các) giá trị cho 5 trong 3nối tráiĐiều gì sẽ xảy ra nếu chúng tôi muốn thêm thông tin từ 1 đến 2 mà không làm mất bất kỳ thông tin nào từ 2? Giống như phép nối bên trong, phép nối bên trái sử dụng các phím nối để kết hợp hai DataFrames. Không giống như phép nối bên trong, phép nối bên trái sẽ trả về tất cả các hàng từ Khung dữ liệu 2, ngay cả những hàng có (các) khóa nối không có giá trị trong Khung dữ liệu 3. Các hàng trong Khung dữ liệu 2 thiếu giá trị cho (các) khóa tham gia trong Khung dữ liệu 3 sẽ chỉ có giá trị rỗng (i. e. , NaN hoặc Không có) cho các cột đó trong DataFrame đã tham gia kết quảGhi chú. nối trái vẫn sẽ loại bỏ các hàng từ Khung dữ liệu 3 không có giá trị cho (các) khóa nối trong Khung dữ liệu 2Phép nối trái được thực hiện trong gấu trúc bằng cách gọi hàm 4 tương tự được sử dụng cho phép nối bên trong, nhưng sử dụng đối số 5
0DataFrame kết quả từ một phép nối bên trái ( 6) trông rất giống với DataFrame kết quả từ một phép nối bên trong ( 6) về các cột mà nó chứa. Tuy nhiên, không giống như 6, 6 chứa cùng số lượng hàng như Khung dữ liệu 2 ban đầu. Khi chúng tôi kiểm tra 6, chúng tôi thấy có những hàng mà thông tin lẽ ra phải đến từ 1 (i. e. , 5, 4 và 5) bị thiếu (chúng chứa các giá trị NaN) 1 2Những hàng này là những hàng mà giá trị của 5 từ 2 (trong trường hợp này là 8) không xuất hiện trong 1Các loại tham gia khácHàm pandas 4 hỗ trợ hai kiểu nối khác
|