Một tính năng thiết yếu được cung cấp bởi Pandas là các hoạt động hiệu suất và hợp nhất hiệu suất cao, 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 nên làm quen với loại tương tác dữ liệu này. Giao diện chính cho điều này là hàm df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'],
'supervisor': ['Carly', 'Guido', 'Steve']}]
display['df3', 'df4', 'pd.merge[df3, df4]']
7 và chúng ta sẽ thấy 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
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']8 từ phần trước:
In [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 thực hiện trong
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9 là một tập hợp con của cái được gọi là đại số quan hệ, đây 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. Sức mạnh của phương pháp đại số quan hệ là nó đề xuất một số hoạt động nguyên thủy, trở thành khối xây dựng của các hoạt động phức tạp hơn trên bất kỳ bộ 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 thực hiện một số khối xây dựng cơ bản này trong hàm
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9 và 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]"]1 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]"]2 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]"]3S. Như chúng ta sẽ thấy, những điều này cho phép bạn liên kết hiệu quả dữ liệu từ các nguồn khác nhau.
Các loại tham gia
Hàm
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9 thực hiện một số loại tham gia: tham gia một-một, nhiều một và nhiều-nhiều. Tất cả ba loại nối được truy cập thông qua một cuộc gọi giống hệt nhau đến giao diện
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9; Loại tham gia được thực hiện phụ thuộc vào dạng dữ liệu đầu vào. Ở đây chúng tôi sẽ trình bày các ví dụ đơn giản về ba loại hợp nhất và thảo luận về các tùy chọn chi tiết bên dưới.
Tham gia một-một
Có lẽ loại expresion hợp nhất đơn giản nhất là sự tham gia một-một, theo nhiều cách rất giống với sự kết hợp của cột được thấy trong việc kết hợp các bộ dữ liệu: Concat & 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]"]6 sau đây chứa thông tin về một số nhân viên trong một công ty:
In [2]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']
Out[2]:
df1
Bob | Kế toán |
Jake | Kỹ thuật |
Lisa | Kỹ thuật |
Lisa | Kiện |
df2
Lisa | 2004 |
Bob | 2008 |
Jake | 2012 |
Lisa | 2014 |
Kiện
In [3]:
df3 = pd.merge[df1, df2] df3
Out[3]:
Bob | Kế toán | 2008 |
Jake | Kỹ thuật | 2012 |
Lisa | Kỹ thuật | 2004 |
Lisa | Kiện | 2014 |
Giờ
Để 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]"]
7, chúng ta có thể sử dụng hàm df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'],
'supervisor': ['Carly', 'Guido', 'Steve']}]
display['df3', 'df4', 'pd.merge[df3, df4]']
9:
Hàm
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9 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]"]7 có 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 sự 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]"]7 mới kết hợp thông tin từ hai đầu vào. Lưu ý rằng thứ tự của 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
display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]2 và
display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]3 và hàm
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9 tính chính xác cho việc này. Ngoài ra, hãy nhớ rằng sự hợp nhất nói chung sẽ loại bỏ chỉ mục, ngoại trừ trong trường hợp đặc biệt hợp nhất theo chỉ mục [xem các từ khóa
display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]5 và
display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]6, được thảo luận trong giây lát].
In [4]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']
Out[4]:
df3
Bob | Kế toán | 2008 |
Jake | Kỹ thuật | 2012 |
Lisa | Kỹ thuật | 2004 |
Lisa | Kiện | 2014 |
df4
Kế toán | Jake |
Kỹ thuật | Lisa |
Kiện | Giờ |
Để 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]"]7, chúng ta có thể sử dụng hàm
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9:
Bob | Kế toán | 2008 | Jake |
Jake | Kỹ thuật | 2012 | Lisa |
Lisa | Kỹ thuật | 2004 | Lisa |
Lisa | Kiện | 2014 | Giờ |
Để 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]"]7, chúng ta có thể sử dụng hàm
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']9:
Hàm df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'],
'supervisor': ['Carly', 'Guido', 'Steve']}]
display['df3', 'df4', 'pd.merge[df3, df4]']
9 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]"]
7 có 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 sự 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]"]
7 mới kết hợp thông tin từ hai đầu vào. Lưu ý rằng thứ tự của 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 display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]
2 và display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]
3 và hàm df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'],
'supervisor': ['Carly', 'Guido', 'Steve']}]
display['df3', 'df4', 'pd.merge[df3, df4]']
9 tính chính xác cho việc này. Ngoài ra, hãy nhớ rằng sự hợp nhất nói chung sẽ loại bỏ chỉ mục, ngoại trừ trong trường hợp đặc biệt hợp nhất theo chỉ mục [xem các từ khóa display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]
5 và display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]
6, được thảo luận trong giây lát].
Tham gia nhiều-một
In [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]"]
Out[5]:
df1
Bob | Kế toán |
Jake | Kỹ thuật |
Lisa | Kỹ thuật |
Lisa | Kiện |
df5
Kế toán | Jake |
Kế toán | Jake |
Kỹ thuật | Lisa |
Kỹ thuật | Lisa |
Kiện | bảng tính |
Giờ | cơ quan |
PD.merge [DF1, DF5]
Bob | Kế toán | môn Toán |
Bob | Kế toán | bảng tính |
môn Toán | Jake | Kỹ thuật |
môn Toán | Jake | Kỹ thuật |
Mã hóa | Jake | Kỹ thuật |
Mã hóa | Jake | Kỹ thuật |
Mã hóa | Giờ | bảng tính |
Mã hóa | Giờ | cơ quan |
PD.merge [DF1, DF5]
Nhân viên
tập đoàn
kỹ năng
Bob
In [6]:
display['df1', 'df2', "pd.merge[df1, df2, on='employee']"]
Out[6]:
df1
Bob | Kế toán |
môn Toán | Jake |
Mã hóa | Jake |
Mã hóa | Giờ |
df2
Mã hóa | 2004 |
Bob | 2008 |
môn Toán | 2012 |
Mã hóa | 2014 |
Linux
Bob | Kế toán | 2008 |
môn Toán | Jake | 2012 |
Mã hóa | Jake | 2004 |
Mã hóa | Giờ | 2014 |
Linux
Lisa
Kiện
In [7]:
df3 = pd.DataFrame[{'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'salary': [70000, 80000, 120000, 90000]}] display['df1', 'df3', 'pd.merge[df1, df3, left_on="employee", right_on="name"]']
Out[7]:
df1
Bob | Kế toán |
môn Toán | Jake |
Mã hóa | Jake |
Mã hóa | Giờ |
df3
Bob | 70000 |
môn Toán | 80000 |
Mã hóa | 120000 |
Mã hóa | 90000 |
Linux
Bob | Kế toán | Bob | 70000 |
môn Toán | Jake | môn Toán | 80000 |
Mã hóa | Jake | Mã hóa | 120000 |
Mã hóa | Giờ | Mã hóa | 90000 |
Linux
In [8]:
pd.merge[df1, df3, left_on="employee", right_on="name"].drop['name', axis=1]
Out[8]:
Bob | Kế toán | 70000 |
môn Toán | Jake | 80000 |
Mã hóa | Jake | 120000 |
Mã hóa | Giờ | 90000 |
Linux
Lisa
In [9]:
df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']
Kiện
df1a
Kế toán |
Jake |
Jake |
Giờ |
df2a
2004 |
2008 |
2012 |
2014 |
Mã hóa
In [10]:
display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]
Out[10]:
df1a
Kế toán |
Jake |
Jake |
Giờ |
df2a
2004 |
2008 |
2012 |
2014 |
Mã hóa
Jake | 2004 |
Kế toán | 2008 |
Jake | 2012 |
Giờ | 2014 |
Mã hóa
In [11]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']0
Out[11]:
df1a
Kế toán |
Jake |
Jake |
Giờ |
df2a
2004 |
2008 |
2012 |
2014 |
df1a.join[df2a]
Kế toán | 2008 |
Jake | 2012 |
Jake | 2004 |
Giờ | 2014 |
Mã hóa
In [12]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']1
Out[12]:
df1a
Kế toán |
Jake |
Jake |
Giờ |
df3
Bob | 70000 |
môn Toán | 80000 |
Mã hóa | 120000 |
Mã hóa | 90000 |
Linux
Kế toán | Bob | 70000 |
Jake | môn Toán | 80000 |
Jake | Mã hóa | 120000 |
Giờ | Mã hóa | 90000 |
Linux
Lisa
Kiện
In [13]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']2
Out[13]:
df6
Kiện | cá |
Paul | Đậu |
Mary | bánh mì |
df7
Mary | bánh mì |
Tên | uống |
rượu
Mary | bánh mì | bánh mì |
Tên
In [14]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']3
Out[14]:
Mary | bánh mì | bánh mì |
Tên
In [15]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']4
Out[15]:
df6
rượu | cá |
Paul | Đậu |
Mary | bánh mì |
df7
Mary | bánh mì |
Tên | uống |
rượu
rượu | cá | Joseph |
Paul | Đậu | Joseph |
Mary | bánh mì | bánh mì |
Tên | Joseph | uống |
rượu
In [16]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']5
Out[16]:
df6
rượu | cá |
Paul | Đậu |
Mary | bánh mì |
df7
Mary | bánh mì |
Tên | uống |
rượu
rượu | cá | Joseph |
Paul | Đậu | Joseph |
Mary | bánh mì | bánh mì |
Tên
uống
rượu
Joseph
In [17]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']6
Out[17]:
df8
rượu | 1 |
Joseph | 2 |
bia | 3 |
PD.merge [DF6, DF7] | 4 |
df9
rượu | 3 |
Joseph | 1 |
bia | 4 |
PD.merge [DF6, DF7] | 2 |
món ăn
rượu | 1 | 3 |
Joseph | 2 | 1 |
bia | 3 | 4 |
PD.merge [DF6, DF7] | 4 | 2 |
món ăn
In [18]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']7
Out[18]:
df8
rượu | 1 |
Joseph | 2 |
bia | 3 |
PD.merge [DF6, DF7] | 4 |
df9
rượu | 3 |
Joseph | 1 |
bia | 4 |
PD.merge [DF6, DF7] | 2 |
món ăn
rượu | 1 | 3 |
Joseph | 2 | 1 |
bia | 3 | 4 |
PD.merge [DF6, DF7] | 4 | 2 |
món ăn
Ở đây chúng tôi đã hợp nhất hai bộ dữ liệu chỉ có một mục "tên" một điểm chung: Mary. Theo mặc định, kết quả chứa giao điểm của hai bộ đầu vào; Đây là những gì được biết đến như một tham gia bên trong. Chúng tôi có thể chỉ định điều này rõ ràng bằng cách sử dụng từ khóa df1a = df1.set_index['employee']
df2a = df2.set_index['employee']
display['df1a', 'df2a']
3, mặc định là df1a = df1.set_index['employee']
df2a = df2.set_index['employee']
display['df1a', 'df2a']
4:
Các tùy chọn khác cho từ khóa
df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']3 là
df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']6,
df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']7 và
df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']8. Một tham gia bên ngoài trả về một sự tham gia của các cột đầu vào và điền vào tất cả các giá trị bị thiếu với NAS:
In [19]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']8
Peter
In [20]:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']9
Out[20]:
pop.head[]
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2012 | 1117489.0 |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2012 | 4817528.0 |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2010 | 1130966.0 |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2010 | 4785570.0 |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2011 | 1125763.0 |
areas.head[]
Cuối cùng, bạn có thể kết thúc trong trường hợp hai đầu vào của bạn có tên cột mâu thuẫn. Xem xét ví dụ này: | 52423 |
thứ hạng | 656425 |
Bob | 114006 |
Jake | 53182 |
Lisa | 163707 |
abbrevs.head[]
Cuối cùng, bạn có thể kết thúc trong trường hợp hai đầu vào của bạn có tên cột mâu thuẫn. Xem xét ví dụ này: | pd.merge [DF6, DF7, How = 'Left'] |
thứ hạng | Bob |
Bob | Jake |
Jake | Lisa |
Lisa | Kiện |
pd.merge [df8, df9, on = "name"]
Do đầu ra sẽ có hai tên cột mâu thuẫn, hàm hợp nhất tự động nối thêm hậu tố
display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]2 hoặc
display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]3 để làm cho các cột đầu ra duy nhất. Nếu các mặc định này không phù hợp, có thể chỉ định một hậu tố tùy chỉnh bằng từ khóa
display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]0:
In [21]:
df3 = pd.merge[df1, df2] df30
Out[21]:
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2012 | 1117489.0 | Cuối cùng, bạn có thể kết thúc trong trường hợp hai đầu vào của bạn có tên cột mâu thuẫn. Xem xét ví dụ này: |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2012 | 4817528.0 | Cuối cùng, bạn có thể kết thúc trong trường hợp hai đầu vào của bạn có tên cột mâu thuẫn. Xem xét ví dụ này: |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2010 | 1130966.0 | Cuối cùng, bạn có thể kết thúc trong trường hợp hai đầu vào của bạn có tên cột mâu thuẫn. Xem xét ví dụ này: |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2010 | 4785570.0 | Cuối cùng, bạn có thể kết thúc trong trường hợp hai đầu vào của bạn có tên cột mâu thuẫn. Xem xét ví dụ này: |
pd.merge [DF6, DF7, How = 'Left'] | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 2011 | 1125763.0 | Cuối cùng, bạn có thể kết thúc trong trường hợp hai đầu vào của bạn có tên cột mâu thuẫn. Xem xét ví dụ này: |
thứ hạng
Out[22]:
df3 = pd.merge[df1, df2] df31
Bob
In [23]:
df3 = pd.merge[df1, df2] df32
Out[23]:
Tên cột chồng chéo: Từ khóa display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]0 | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 1990 | Joseph | Joseph |
Tên cột chồng chéo: Từ khóa display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]0 | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 1990 | Joseph | Joseph |
Tên cột chồng chéo: Từ khóa display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]0 | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 1991 | Joseph | Joseph |
Tên cột chồng chéo: Từ khóa display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]0 | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 1991 | Joseph | Joseph |
Tên cột chồng chéo: Từ khóa display['df1a', 'df2a', "pd.merge[df1a, df2a, left_index=True, right_index=True]"]0 | Các hàng đầu ra bây giờ tương ứng với các mục ở đầu vào bên trái. Sử dụng df1a = df1.set_index['employee'] df2a = df2.set_index['employee'] display['df1a', 'df2a']9 hoạt động theo cách tương tự. | 1993 | Joseph | Joseph |
bia
Quan trọng hơn, chúng tôi cũng thấy rằng một số mục
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']03 mới 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
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']00! Hãy tìm ra vùng nào thiếu trận đấu này:
In [24]:
df3 = pd.merge[df1, df2] df33
Out[24]:
df3 = pd.merge[df1, df2] df34
Chúng tôi 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 cho Puerto Rico [PR] và Hoa Kỳ nói chung [Hoa Kỳ], trong khi các mục 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ể sửa chữa những thứ 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:
In [25]:
df3 = pd.merge[df1, df2] df35
Out[25]:
df3 = pd.merge[df1, df2] df36
Không còn nulls trong cột
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']03: Tất cả chúng tôi đều được thiết lập!
Bây giờ chúng ta có thể hợp nhất kết quả với dữ liệu khu vực bằng một 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
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']03 trong cả hai:
In [26]:
df3 = pd.merge[df1, df2] df37
Out[26]:
Al | dưới 18 | 2012 | 1117489.0 | Alabama | 52423.0 |
Al | dưới 18 | 2012 | 4817528.0 | Alabama | 52423.0 |
Al | dưới 18 | 2010 | 1130966.0 | Alabama | 52423.0 |
Al | dưới 18 | 2010 | 4785570.0 | Alabama | 52423.0 |
Al | dưới 18 | 2011 | 1125763.0 | Alabama | 52423.0 |
toàn bộ
Out[27]:
df3 = pd.merge[df1, df2] df38
Một lần nữa, chúng ta hãy kiểm tra các null để xem liệu có bất kỳ sự không phù hợp nào không:
In [28]:
df3 = pd.merge[df1, df2] df39
Out[28]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']0
Có nulls trong cột
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']07; Chúng ta có thể xem xét để xem khu vực nào đã bị bỏ qua ở đây:
In [29]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']1
Out[29]:
Al | dưới 18 | 2012 | 1117489.0 | Alabama | 52423.0 |
Al | dưới 18 | 2012 | 4817528.0 | Alabama | 52423.0 |
Al | dưới 18 | 2010 | 1130966.0 | Alabama | 52423.0 |
Al | dưới 18 | 2010 | 4785570.0 | Alabama | 52423.0 |
Al | dưới 18 | 2011 | 1125763.0 | Alabama | 52423.0 |
toàn bộ
In [30]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']2
Out[30]:
Al | dưới 18 | 2010 | 4785570.0 | Alabama | 52423.0 |
toàn bộ | dưới 18 | 2010 | 713868.0 | Alabama | 656425.0 |
toàn bộ | dưới 18 | 2010 | 6408790.0 | Alabama | 114006.0 |
toàn bộ | dưới 18 | 2010 | 2922280.0 | Alabama | 53182.0 |
toàn bộ | dưới 18 | 2010 | 37333601.0 | Alabama | 163707.0 |
toàn bộ
In [31]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']3
In [32]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']4
Out[32]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']5
Một lần nữa, chúng ta hãy kiểm tra các null để xem liệu có bất kỳ sự không phù hợp nào không:
Có nulls trong cột
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']07; Chúng ta có thể xem xét để xem khu vực nào đã bị bỏ qua ở đây:
Out[33]:
df4 = pd.DataFrame[{'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}] display['df3', 'df4', 'pd.merge[df3, df4]']6
Chúng tôi thấy rằng
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']08
df5 = pd.DataFrame[{'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}] display['df1', 'df5', "pd.merge[df1, df5]"]7 của chúng tôi không chứa toàn bộ khu vực của Hoa Kỳ. Ví dụ, chúng tôi có thể chèn giá trị thích hợp [sử dụng tổng của tất cả các khu vực nhà nước], nhưng trong trường hợp này, chúng tôi sẽ 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:
Bây giờ chúng tôi có tất cả các dữ liệu chúng tôi cần. Để trả lời câu hỏi quan tâm, trước tiên chúng ta 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 tôi sẽ sử dụng chức năng
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']10 để thực hiện điều này một cách nhanh chóng [điều này yêu cầu gói
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']11 được cài đặt; xem Pandas hiệu suất cao:
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']12 và
df1 = pd.DataFrame[{'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']}] df2 = pd.DataFrame[{'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]}] display['df1', 'df2']10]: