Một tính năng thiết yếu được cung cấp bởi Pandas là các hoạt động kết hợp và hợp nhất trong bộ nhớ, hiệu suất cao của nó. Nếu bạn đã từng làm việc với cơ sở dữ liệu, bạn sẽ quen thuộc với kiểu tương tác dữ liệu này. Giao diện chính của chức năng này là hàm df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")0 và chúng ta sẽ xem một số ví dụ về cách thức hoạt động của hàm này trong thực tế Show
Để thuận tiện, chúng tôi sẽ bắt đầu bằng cách xác định lại chức năng của df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")1 từ phần trước Trong 1] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args) đại số quan hệHành vi được triển khai trong df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 là một tập hợp con của cái được gọi là đại số quan hệ, là một bộ quy tắc chính thức để thao tác dữ liệu quan hệ và tạo thành nền tảng khái niệm cho các hoạt động có sẵn trong hầu hết các cơ sở dữ liệu. Điểm mạnh của phương pháp đại số quan hệ là nó đề xuất một số phép toán nguyên thủy, chúng trở thành nền tảng của các phép toán phức tạp hơn trên bất kỳ tập dữ liệu nào. Với từ vựng về các hoạt động cơ bản này được triển khai hiệu quả trong cơ sở dữ liệu hoặc chương trình khác, có thể thực hiện một loạt các hoạt động tổng hợp khá phức tạp Pandas triển khai một số khối xây dựng cơ bản này trong hàm df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 và phương thức df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")4 có liên quan của df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")5 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")6. Như chúng ta sẽ thấy, chúng cho phép bạn liên kết dữ liệu từ các nguồn khác nhau một cách hiệu quả Danh mục tham giaHàm df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 thực hiện một số loại liên kết. phép nối một đối một, nhiều đối một và nhiều đối nhiều. Tất cả ba loại liên kết được truy cập thông qua một cuộc gọi giống hệt nhau tới giao diện df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2; . Ở đây chúng tôi sẽ hiển thị các ví dụ đơn giản về ba loại hợp nhất và thảo luận thêm về các tùy chọn chi tiết bên dưới Tham gia một đối mộtCó lẽ kiểu diễn giải hợp nhất đơn giản nhất là phép nối một đối một, theo nhiều cách rất giống với phép nối theo cột được thấy trong Kết hợp các bộ dữ liệu. Concat và Append. Như một ví dụ cụ thể, hãy xem xét hai df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")9 sau đây chứa thông tin về một số nhân viên trong một công ty Trong 2] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")1 Ra[2] df1 nhóm nhân viên0Kế toán Bob1JakeKỹ thuật2LisaKỹ thuật3SueHR df2 employeehire_date0Lisa20041Bob20082Jake20123Sue2014 Để kết hợp thông tin này thành một df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 duy nhất, chúng ta có thể sử dụng hàm df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 Trong 3] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")4 Ra[3] employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014 Hàm df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 nhận ra rằng mỗi df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 có một cột "nhân viên" và tự động tham gia bằng cách sử dụng cột này làm khóa. Kết quả của việc hợp nhất là một df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 mới kết hợp thông tin từ hai đầu vào. Lưu ý rằng thứ tự các mục trong mỗi cột không nhất thiết phải được duy trì. trong trường hợp này, thứ tự của cột "nhân viên" khác nhau giữa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")25 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")26 và hàm df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 giải thích chính xác điều này. Ngoài ra, hãy nhớ rằng việc hợp nhất nói chung loại bỏ chỉ mục, ngoại trừ trường hợp đặc biệt hợp nhất theo chỉ mục (xem từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")28 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")29, được thảo luận trong giây lát) Liên kết nhiều người mộtPhép nối nhiều-một là phép nối trong đó một trong hai cột chính chứa các mục nhập trùng lặp. Đối với trường hợp nhiều-một, kết quả df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 sẽ giữ nguyên các mục nhập trùng lặp đó khi thích hợp. Xem xét ví dụ sau về liên kết nhiều-một Trong [4] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)4 Ra[4] df3 employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014 df4 nhómgiám sát0Kế toánCarly1Kỹ thuậtHướng dẫn2HRSteve pd. hợp nhất (df3, df4) employeegrouphire_datesupervisor0BobAccounting2008Carly1JakeEngineering2012Guido2LisaEngineering2004Guido3SueHR2014Steve Kết quả ________ 120 có một cột bổ sung với thông tin "người giám sát", trong đó thông tin được lặp lại ở một hoặc nhiều vị trí theo yêu cầu của đầu vào Liên kết nhiều-nhiềuCác phép nối nhiều-nhiều hơi khó hiểu về mặt khái niệm, nhưng vẫn được xác định rõ ràng. Nếu cột khóa trong cả mảng bên trái và bên phải chứa các cột trùng lặp, thì kết quả là hợp nhất nhiều-nhiều. Điều này có lẽ sẽ rõ ràng nhất với một ví dụ cụ thể. Hãy xem xét những điều sau đây, trong đó chúng tôi có một df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 thể hiện một hoặc nhiều kỹ năng liên quan đến một nhóm cụ thể. Bằng cách thực hiện liên kết nhiều-nhiều, chúng tôi có thể khôi phục các kỹ năng liên quan đến bất kỳ cá nhân nào Trong [5] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)") Ra[5] df1 nhóm nhân viên0Kế toán Bob1JakeKỹ thuật2LisaKỹ thuật3SueHR df5 kỹ năng nhóm0Kế toán toán1Bảng tính kế toán2Kỹ thuật viết mã3Kỹ thuật linux4Bảng tính nhân sự5Tổ chức nhân sự pd. hợp nhất (df1, df5) nhân viên nhóm kỹ năng0BobKế toán toán học1BobBảng tính kế toán2JakeEngineeringcoding3JakeEngineeringlinux4LisaEngineeringcoding5LisaEngineeringlinux6SueHRbảng tính7SueHRTổ chức Ba loại liên kết này có thể được sử dụng với các công cụ Pandas khác để triển khai nhiều chức năng. Nhưng trên thực tế, các bộ dữ liệu hiếm khi rõ ràng như bộ dữ liệu chúng tôi đang làm việc ở đây. Trong phần sau đây, chúng ta sẽ xem xét một số tùy chọn được cung cấp bởi df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 cho phép bạn điều chỉnh cách thức hoạt động của các thao tác nối Thông số kỹ thuật của Khóa hợp nhấtChúng ta đã thấy hành vi mặc định của df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2. nó tìm kiếm một hoặc nhiều tên cột phù hợp giữa hai đầu vào và sử dụng tên này làm khóa. Tuy nhiên, thường thì các tên cột sẽ không khớp với nhau một cách độc đáo và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 cung cấp nhiều tùy chọn để xử lý việc này Từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)") 16Đơn giản nhất, bạn có thể chỉ định rõ ràng tên của cột chính bằng cách sử dụng từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")16, lấy tên cột hoặc danh sách tên cột Trong [6] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 Ra[6] df1 nhóm nhân viên0Kế toán Bob1JakeKỹ thuật2LisaKỹ thuật3SueHR df2 employeehire_date0Lisa20041Bob20082Jake20123Sue2014 pd. hợp nhất (df1, df2, on='nhân viên') employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014 Tùy chọn này chỉ hoạt động nếu cả df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 bên trái và bên phải đều có tên cột được chỉ định Từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)") 19 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)") 60Đôi khi, bạn có thể muốn hợp nhất hai bộ dữ liệu với các tên cột khác nhau; . Trong trường hợp này, chúng ta có thể sử dụng từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")19 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")60 để chỉ định tên hai cột Trong [7] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")1 Ra[7] df1 nhóm nhân viên0Kế toán Bob1JakeKỹ thuật2LisaKỹ thuật3SueHR df3 tênlương0Bob700001Jake800002Lisa1200003Sue90000 pd. hợp nhất(df1, df3, left_on="nhân viên", right_on="tên") nhân viênnhómtênlương0BobKế toánBob700001JakeKỹ thuậtJake800002LisaKỹ thuậtLisa1200003SueHRSue90000 Kết quả có một cột dư thừa mà chúng ta có thể loại bỏ nếu muốn–ví dụ: bằng cách sử dụng phương pháp df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")63 của df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 giây Trong [8] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")6 Ra[8] nhân viênnhóm lương0BobKế toán700001JakeEngineering800002LisaEngineering1200003SueHR90000 Từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)") 28 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)") 29Đôi khi, thay vì hợp nhất trên một cột, bạn muốn hợp nhất trên một chỉ mục. Ví dụ: dữ liệu của bạn có thể trông như thế này Trong [9] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")5 Ra[9] df1a nhómnhân viênBobKế toánJakeEngineeringLisaEngineeringSueHR df2a thuê_dateemployeeLisa2004Bob2008Jake2012Sue2014 Bạn có thể sử dụng chỉ mục làm khóa để hợp nhất bằng cách chỉ định cờ df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")28 và/hoặc df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")29 trong df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")2 Trong [10] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")9 Ra[10] df1a nhómnhân viênBobKế toánJakeEngineeringLisaEngineeringSueHR df2a thuê_dateemployeeLisa2004Bob2008Jake2012Sue2014 pd. hợp nhất (df1a, df2a, left_index=True, right_index=True) grouphire_dateemployeeLisaEngineering2004BobAccounting2008JakeEngineering2012SueHR2014 Để thuận tiện, df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 triển khai phương thức df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")4, thực hiện hợp nhất mặc định để tham gia vào các chỉ số Trong [11] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")10 Ra[11] df1a nhómnhân viênBobKế toánJakeEngineeringLisaEngineeringSueHR df2a thuê_dateemployeeLisa2004Bob2008Jake2012Sue2014 df1a. tham gia (df2a) grouphire_dateemployeeBobAccounting2008JakeEngineering2012LisaEngineering2004SueHR2014 Nếu bạn muốn kết hợp các chỉ số và cột, bạn có thể kết hợp df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")28 với df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")60 hoặc df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")19 với df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")29 để có được hành vi mong muốn Trong [12] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")11 Ra[12] df1a nhómnhân viênBobKế toánJakeEngineeringLisaEngineeringSueHR df3 tênlương0Bob700001Jake800002Lisa1200003Sue90000 pd. hợp nhất (df1a, df3, left_index=True, right_on='name') tên nhómlương0Kế toánBob700001Kỹ thuậtJake800002Kỹ thuậtLisa1200003HRSue90000 Tất cả các tùy chọn này cũng hoạt động với nhiều chỉ mục và/hoặc nhiều cột; . Để biết thêm thông tin về điều này, hãy xem phần "Hợp nhất, Tham gia và Ghép nối" trong tài liệu Pandas Chỉ định Set Arithmetic cho JoinsTrong tất cả các ví dụ trước, chúng tôi đã đề cập đến một vấn đề quan trọng cần cân nhắc khi thực hiện phép nối. loại tập hợp số học được sử dụng trong phép nối. Điều này xuất hiện khi một giá trị xuất hiện trong một cột chính nhưng không xuất hiện trong cột khác. Hãy xem xét ví dụ này Trong [13] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")12 Ra[13] df6 tênmón ăn0Cá Peter 1Đậu Paul 2Bánh mì Mary df7 uống tên0Marywine1Josephbeer pd. hợp nhất (df6, df7) tênthực phẩmđồ uống0Marybreadwine Ở đây, chúng tôi đã hợp nhất hai bộ dữ liệu chỉ có một mục nhập "tên" chung. ma-ri-a. Theo mặc định, kết quả chứa giao điểm của hai bộ đầu vào; . Chúng tôi có thể chỉ định điều này một cách rõ ràng bằng cách sử dụng từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")56, mặc định là df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")57 Trong [14] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")13 Ra[14] tênthực phẩmđồ uống0Marybreadwine Các tùy chọn khác cho từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")56 là df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")59, df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")90 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")91. Phép nối ngoài trả về phép nối qua phép nối của các cột đầu vào và điền vào tất cả các giá trị còn thiếu bằng NA Trong [15] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")14 Ra[15] df6 tênmón ăn0Cá Peter 1Đậu Paul 2Bánh mì Mary df7 uống tên0Marywine1Josephbeer pd. hợp nhất (df6, df7, how='bên ngoài') tênmón ănuống0PeterfishNaN1PaulbeansNaN2Rượu bánh mì Mary3JosephNaNbeer Phép nối trái và phép nối phải return lần lượt nối qua các mục bên trái và mục bên phải. Ví dụ Trong [16] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")15 Ra[16] df6 tênmón ăn0Cá Peter 1Đậu Paul 2Bánh mì Mary df7 uống tên0Marywine1Josephbeer pd. hợp nhất (df6, df7, how='left') tênmón ănđồ uống0PeterfishNaN1PaulbeansNaN2Mary bánh mì rượu vang Các hàng đầu ra bây giờ tương ứng với các mục trong đầu vào bên trái. Sử dụng df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")92 hoạt động theo cách tương tự Tất cả các tùy chọn này có thể được áp dụng trực tiếp cho bất kỳ loại liên kết nào trước đó Chồng chéo tên cột. Từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)") 93Cuối cùng, bạn có thể rơi vào trường hợp hai df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 đầu vào của bạn có tên cột xung đột. Hãy xem xét ví dụ này Trong [17] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")16 Ra[17] df8 tênrank0Bob11Jake22Lisa33Sue4 df9 tênrank0Bob31Jake12Lisa43Sue2 pd. hợp nhất (df8, df9, on="name") namerank_xrank_y0Bob131Jake212Lisa343Sue42 Vì đầu ra sẽ có hai tên cột xung đột, nên hàm hợp nhất sẽ tự động nối thêm hậu tố df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")95 hoặc df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")96 để làm cho các cột đầu ra trở nên độc nhất. Nếu các giá trị mặc định này không phù hợp, có thể chỉ định hậu tố tùy chỉnh bằng cách sử dụng từ khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")93 Trong [18] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")17 Hết[18] df8 tênrank0Bob11Jake22Lisa33Sue4 df9 tênrank0Bob31Jake12Lisa43Sue2 pd. hợp nhất (df8, df9, on="name", suffixes=["_L", "_R"]) namerank_Lrank_R0Bob131Jake212Lisa343Sue42 Các hậu tố này hoạt động trong bất kỳ mẫu liên kết nào có thể có và cũng hoạt động nếu có nhiều cột chồng chéo Để biết thêm thông tin về các mẫu này, hãy xem Tập hợp và Nhóm nơi chúng tôi tìm hiểu sâu hơn một chút về đại số quan hệ. Ngoài ra, hãy xem tài liệu "Hợp nhất, Tham gia và Ghép nối" của Pandas để thảo luận thêm về các chủ đề này Ví dụ. Dữ liệu Hoa KỳCác hoạt động hợp nhất và tham gia xuất hiện thường xuyên nhất khi kết hợp dữ liệu từ các nguồn khác nhau. Ở đây chúng tôi sẽ xem xét một ví dụ về một số dữ liệu về các tiểu bang Hoa Kỳ và dân số của họ. Các tệp dữ liệu có thể được tìm thấy tại http. //github. com/jakevdp/data-USstates/ Trong 19] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")18 Chúng ta hãy xem xét ba bộ dữ liệu, sử dụng chức năng Pandas df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")98 Trong 20] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")19 Hết[20] nhạc pop. cái đầu() bang/khu vựcnămdân số0ALunder1820121117489. 01ALtotal20124817528. 02ALunder1820101130966. 03ALtotal20104785570. 04ALunder1820111125763. 0 khu vực. cái đầu() diện tích (sq. mi)0Alabama524231Alaska6564252Arizona1140063Arkansas531824California163707 viết tắt. cái đầu() tiểu bang viết tắt0AlabamaAL1AlaskaAK2ArizonaAZ3ArkansasAR4CaliforniaCA Với thông tin này, giả sử chúng tôi muốn tính toán một kết quả tương đối đơn giản. xếp hạng các bang và vùng lãnh thổ của Hoa Kỳ theo mật độ dân số năm 2010. Rõ ràng chúng tôi có dữ liệu ở đây để tìm kết quả này, nhưng chúng tôi sẽ phải kết hợp các bộ dữ liệu để tìm ra kết quả Chúng tôi sẽ bắt đầu với sự hợp nhất nhiều thành một sẽ cung cấp cho chúng tôi tên tiểu bang đầy đủ trong quần thể df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20. Chúng tôi muốn hợp nhất dựa trên cột df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")100 của df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")101 và cột df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")102 của df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")103. Chúng tôi sẽ sử dụng df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")104 để đảm bảo không có dữ liệu nào bị loại bỏ do nhãn không khớp Trong [21] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")40 Hết[21] tiểu bang/khu vực nămdân sốtiểu bang0ALunder1820121117489. 0Alabama1ALtotal20124817528. 0Alabama2ALunder1820101130966. 0Alabama3ALtotal20104785570. 0Alabama4ALunder1820111125763. 0Alabama Hãy kiểm tra kỹ xem có bất kỳ sự không phù hợp nào ở đây hay không, điều mà chúng ta có thể thực hiện bằng cách tìm kiếm các hàng có giá trị rỗng Trong [22] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")41 Hết[22] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")42 Một số thông tin df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")105 không có giá trị; Trong [23] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")43 Hết[23] bang/khu vực nămdân sốbang2448PRunder181990NaNNaN2449PRtotal1990NaNNaN2450PRtotal1991NaNNaN2451PRunder181991NaNNaN2452PRtotal1993NaNNaN Có vẻ như tất cả các giá trị dân số rỗng là từ Puerto Rico trước năm 2000; Quan trọng hơn, chúng tôi cũng thấy rằng một số mục nhập mới của df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")106 cũng không có giá trị, điều đó có nghĩa là không có mục nhập tương ứng trong khóa df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")103. Hãy tìm xem khu vực nào thiếu trận đấu này Trong [24] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")44 Ra[24] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")45 Chúng ta có thể nhanh chóng suy ra vấn đề. dữ liệu dân số của chúng tôi bao gồm các mục nhập cho Puerto Rico (PR) và toàn bộ Hoa Kỳ (USA), trong khi các mục nhập này không xuất hiện trong khóa viết tắt của tiểu bang. Chúng tôi có thể khắc phục những điều này một cách nhanh chóng bằng cách điền vào các mục thích hợp Trong [25] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")46 Hết[25] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")47 Không còn null trong cột df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")106. chúng ta đã sẵn sàng Bây giờ chúng ta có thể hợp nhất kết quả với dữ liệu vùng bằng quy trình tương tự. Kiểm tra kết quả của chúng tôi, chúng tôi sẽ muốn tham gia vào cột df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")106 trong cả hai Trong [26] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")48 Hết[26] tiểu bang/khu vực nămdân số tiểu bangkhu vực (sq. mi)0ALunder1820121117489. 0Alabama52423. 01ALtotal20124817528. 0Alabama52423. 02ALunder1820101130966. 0Alabama52423. 03ALtotal20104785570. 0Alabama52423. 04ALunder1820111125763. 0Alabama52423. 0 Một lần nữa, hãy kiểm tra null để xem liệu có bất kỳ sự không phù hợp nào không Trong [27] df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")49 Hết[27] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)40 Không có giá trị rỗng trong cột df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")110; Trong [28] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)41 Hết[28] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)42 Chúng tôi thấy rằng df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")111 df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")20 của chúng tôi không chứa toàn bộ diện tích của Hoa Kỳ. Chúng tôi có thể chèn giá trị thích hợp (ví dụ: sử dụng tổng của tất cả các khu vực tiểu bang), nhưng trong trường hợp này, chúng tôi sẽ chỉ bỏ các giá trị null vì mật độ dân số của toàn bộ Hoa Kỳ không liên quan đến cuộc thảo luận hiện tại của chúng tôi Trong [29] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)43 Hết[29] tiểu bang/khu vực nămdân số tiểu bangkhu vực (sq. mi)0ALunder1820121117489. 0Alabama52423. 01ALtotal20124817528. 0Alabama52423. 02ALunder1820101130966. 0Alabama52423. 03ALtotal20104785570. 0Alabama52423. 04ALunder1820111125763. 0Alabama52423. 0 Bây giờ chúng tôi có tất cả dữ liệu chúng tôi cần. Để trả lời câu hỏi quan tâm, trước tiên hãy chọn phần dữ liệu tương ứng với năm 2000 và tổng dân số. Chúng ta sẽ sử dụng hàm df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")113 để thực hiện việc này một cách nhanh chóng (điều này yêu cầu phải cài đặt gói df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")114; xem phần High-Performance Pandas. df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")115 và df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")113) Trong [30] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)44 Ra[30] tiểu bang/khu vực nămdân số tiểu bangkhu vực (sq. mi)3ALtotal20104785570. 0Alabama52423. 091AKtotal2010713868. 0Alaska656425. 0101AZtotal20106408790. 0Arizona114006. 0189ARtotal20102922280. 0Arkansas53182. 0197CAtotal201037333601. 0California163707. 0 Bây giờ hãy tính mật độ dân số và hiển thị nó theo thứ tự. Chúng tôi sẽ bắt đầu bằng cách lập chỉ mục lại dữ liệu của chúng tôi về trạng thái và sau đó tính toán kết quả Trong [31] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)45 Trong [32] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)46 Ra[32] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)47 Kết quả là xếp hạng các tiểu bang của Hoa Kỳ cùng với Washington, DC và Puerto Rico theo thứ tự mật độ dân số năm 2010, tính theo cư dân trên mỗi dặm vuông. Chúng ta có thể thấy rằng cho đến nay khu vực dày đặc nhất trong tập dữ liệu này là Washington, DC (i. e. , Quận Columbia); Chúng tôi cũng có thể kiểm tra phần cuối của danh sách Trong [33] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)48 Ra[33] import pandas as pd import numpy as np class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)49 Chúng tôi thấy rằng cho đến nay, bang có mật độ dân số thấp nhất là Alaska, trung bình hơn một cư dân trên một dặm vuông Kiểu hợp nhất dữ liệu lộn xộn này là một nhiệm vụ phổ biến khi cố gắng trả lời các câu hỏi bằng các nguồn dữ liệu trong thế giới thực. Tôi hy vọng rằng ví dụ này đã cung cấp cho bạn ý tưởng về cách bạn có thể kết hợp các công cụ mà chúng tôi đã đề cập để hiểu rõ hơn về dữ liệu của bạn Làm cách nào để nối hai bảng trong Python?Các đối tượng nối . pd. concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, ) >>> Trong [6]. kết quả = pd. concat(khung, phím=["x", "y", "z"]) >>> Trong [7]. kết quả. . khung = [ process_your_file(f) cho f trong tệp ] kết quả = pd Làm cách nào để tham gia hai khung dữ liệu trong gấu trúc dựa trên cột?Chúng ta có thể hợp nhất hai Khung dữ liệu Pandas trên một số cột nhất định bằng chức năng hợp nhất bằng cách chỉ định các cột nhất định để hợp nhất. Ví dụ 1. Hãy tạo một Dataframe và sau đó hợp nhất chúng thành một dataframe duy nhất. Tạo một khung dữ liệu. Python3
Sự khác biệt giữa tham gia () và hợp nhất () trong gấu trúc là gì?Cả phép nối và hợp nhất đều có thể được sử dụng để kết hợp hai khung dữ liệu nhưng phương thức nối kết hợp hai khung dữ liệu trên cơ sở chỉ mục của chúng trong khi phương thức hợp nhất linh hoạt hơn và cho phép chúng tôi chỉ định . . |