Thông qua việc sử dụng ngôn ngữ lập trình, chúng ta sẽ cùng nhau giải câu đố Mysql Inner Join 3 Tables trong bài học này. Điều này được thể hiện trong đoạn mã sau
SELECT student.firstname, student.lastname, exam.name, exam.date, grade.grade FROM grade INNER JOIN student ON student.studentId = grade.fk_studentId INNER JOIN exam ON exam.examId = grade.fk_examId ORDER BY exam.date
Chúng tôi đã có thể tìm ra cách giải mã Mysql Inner Join 3 Tables bằng cách xem xét một loạt các mẫu khác
Làm cách nào để tham gia 3 bảng bên trong tham gia MySQL?
Có thể sử dụng nhiều câu lệnh nối với nhau để nối nhiều bảng cùng một lúc. Để làm điều đó, bạn thêm câu lệnh INNER JOIN thứ hai và câu lệnh ON thứ hai để chỉ ra bảng thứ ba và mối quan hệ thứ hai. 01-Apr-2022
Có thể tham gia bên trong cho 3 bảng không?
Cách phổ biến nhất để tham gia ba bảng diễn ra như thế này. CHỌN * TỪ Bảng1 INNER THAM GIA Bảng2 BẬT Điều kiện INNER THAM GIA Bảng3 BẬT Điều kiện; . Bạn cũng có thể kết hợp các loại tham gia nếu cần [ví dụ bên dưới]. 19-Feb-2021
Làm cách nào để tham gia 3 bảng trong SQL?
Cách nối 3 bảng trở lên trong SQL
- Tham gia đơn giản. Đầu tiên, tất cả các bảng được nối bằng từ khóa THAM GIA, sau đó mệnh đề WHERE được sử dụng. TỪ Nhân viên e THAM GIA Tiền lương s THAM GIA Bộ phận d. Ở ĐÂU. ID = s. Emp_ID VÀ e
- Tham gia lồng nhau. Câu lệnh JOIN lồng nhau được sử dụng với từ khóa ON. CHỌN e. ID, e. tên, s. Lương, d
Bạn có thể tự nhiên tham gia 3 bảng trong SQL không?
Sử dụng THAM GIA trong SQL không có nghĩa là bạn chỉ có thể tham gia hai bảng. Bạn có thể tham gia 3, 4 hoặc thậm chí nhiều hơn. Các khả năng là vô hạn. 21-Apr-2020
Chúng ta có thể Union 3 bàn không?
Có thể kết hợp nhiều bảng thành một bảng lớn theo cả 3 cách. Như chúng ta đã thấy, hành vi của UNION trong SQL Server và UNION trong DAX trong Power BI là rất giống nhau. Ở đây các bảng có cùng số cột được đặt ngay dưới nhau. 01-Mar-2021
Tham gia bên trong và tham gia tự nhiên có giống nhau không?
1. Thao tác nối được sử dụng để hợp nhất hai bảng tùy thuộc vào cùng tên cột và kiểu dữ liệu của chúng được gọi là nối tự nhiên. Tham gia bên trong có một điều kiện tham gia cụ thể. Ở đây, thao tác nối được sử dụng để tạo một bảng mới bằng cách nối các giá trị cột của hai bảng dựa trên vị từ nối
Làm cách nào để tham gia 5 bảng trong SQL?
Cú pháp THAM GIA nhiều bảng
- TỪ tên bảng1
- THAM GIA bảng-name2 TRÊN cột-name1 = cột-name2
- THAM GIA tên-bảng3 TRÊN tên-cột3 = tên-cột4
- THAM GIA tên bảng 4 TRÊN tên cột = tên cột 6
- điều kiện ở đâu
Làm cách nào tôi có thể tham gia ba bảng trong SQL mà không cần THAM GIA?
Cách tham gia các bảng trong SQL mà không cần sử dụng THAM GIA
- Sử dụng dấu phẩy giữa các tên bảng trong mệnh đề TỪ và chỉ định điều kiện nối trong mệnh đề WHERE
- Sử dụng UNION / UNION ALL
Làm thế nào để bạn tham gia bên trong nhiều hơn hai bảng?
Trước tiên, chúng tôi nối bảng 1 và bảng 2 để tạo ra một bảng tạm thời với dữ liệu kết hợp từ bảng 1 và bảng 2, sau đó được nối với bảng 3. Công thức này có thể được mở rộng cho hơn 3 bảng thành N bảng, Bạn chỉ cần đảm bảo rằng truy vấn SQL phải có N-1 câu lệnh nối để nối N bảng. 21-Feb-2013
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 vài ví dụ về cách thức hoạt động của nó trong thực tế
Để 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 = """{0}{1}""" 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 của 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 gia¶
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 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 trực tiếp¶
Có 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 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]"]2
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]"]30 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]"]5
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]"]30 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]"]30 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]"]35 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]"]36 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]"]38 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]"]39, được thảo luận trong giây lát]
Liên kết nhiều người¶
Phé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]"]30 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]
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[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ả
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]30 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ều¶
Cá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, nơi 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]"]30 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óm nhân viênkỹ năng0BobKế toántoán học1BobBảng tính kế toán2JakeMã hóa kỹ thuật3JakeKỹ thuật linux4LisaMã hóa kỹ thuật5LisaEngineeringlinux6SueBảng tính nhân sự7SueHRTổ 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, 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ất¶
Chú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 nhau lắm 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 import pandas as pd
import numpy as np
class display[object]:
"""Display HTML representation of multiple objects"""
template = """
{0}{1}
"""
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]
26¶
Đơ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
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """26, lấy tên cột hoặc danh sách tên cột{0}{1}""" 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]
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]"]3
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]"]30 bên trái và bên phải đều có tên cột được chỉ định
Từ khóa import pandas as pd
import numpy as np
class display[object]:
"""Display HTML representation of multiple objects"""
template = """
{0}{1}
"""
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]
29 và import pandas as pd
import numpy as np
class display[object]:
"""Display HTML representation of multiple objects"""
template = """
{0}{1}
"""
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]
70¶
Đô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
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """29 và{0}{1}""" 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]
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """70 để chỉ định tên hai cột{0}{1}""" 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]
Trong [7]
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """2{0}{1}""" 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]
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
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """73 của{0}{1}""" 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]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]30s
Trong [8]
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """7{0}{1}""" 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]
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]"]
38 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]"]
39¶
Đô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]"]6
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]"]38 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]"]39 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]"]0
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]"]30 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 trên 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]"]20
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]"]38 với
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """70 hoặc{0}{1}""" 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]
import pandas as pd import numpy as np class display[object]: """Display HTML representation of multiple objects""" template = """29 với{0}{1}""" 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]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]39 để 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]"]21
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 Joins¶
Trong 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]"]22
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]"]66, 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]"]67
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]"]23
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]"]66 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]"]69,
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]00 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]"]01. 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]"]24
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]"]25
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]"]02 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]"]
03¶
Cuố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]"]30 đầ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]"]26
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]"]05 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]"]06 để làm cho các cột đầu ra là duy 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]"]03
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]"]27
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
Thí 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]"]28
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]"]08
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]"]29
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 đầy đủ của tiểu bang 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]"]30. 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]"]200 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]"]201 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]"]202 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]"]203. 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]"]204 để đả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]"]50
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]"]51
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]"]52
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]"]205 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]"]53
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]"]206 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]"]203. 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]"]54
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]"]55
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]"]56
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]"]57
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]"]206. 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]"]206 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]"]58
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]"]59
Hết[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]"]50
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]"]210;
Trong [28]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]51
Hết[28]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]52
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]"]211
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]30 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]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]53
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]"]213 để 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]"]214; 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]"]215 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]"]213]
Trong [30]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]54
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]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]55
Trong [32]
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
Ra[32]
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
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]
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]58
Ra[33]
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
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