Pandas adalah alat khusus yang memungkinkan kita melakukan manipulasi data yang rumit secara efektif dan efisien. Di dalam panda, kami kebanyakan berurusan dengan kumpulan data dalam bentuk DataFrame. DataFrames adalah struktur data 2 dimensi dalam panda. DataFrames terdiri dari baris, kolom, dan data Show
Kami diberi DataFrame dengan satu kolom dan kolom ini berisi semua nilai string, kami perlu menggabungkan semua nilai ini dan menjadikannya satu string String adalah sekelompok karakter, karakter ini dapat terdiri dari semua huruf kecil, huruf besar, dan karakter khusus yang ada pada keyboard sistem komputer. String adalah tipe data dan jumlah karakter dalam string dikenal sebagai panjang string Untuk tujuan ini, kami akan menggunakan str. join () metode di mana kita dapat melewati pembatas apa pun yang ingin kita pisahkan semua nilai dalam satu string Anda dapat menggunakan sintaks dasar berikut untuk menggabungkan baris dengan nilai kolom yang sama dalam DataFrame panda.#define how to aggregate various fields agg_functions = {'field1': 'first', 'field2': 'sum', 'field': 'sum'} #create new DataFrame by combining rows with same id values df_new = df.groupby(df['id']).aggregate(agg_functions) Contoh berikut menunjukkan cara menggunakan sintaks ini dalam praktik Contoh. Gabungkan Baris dengan Nilai Kolom yang Sama di PandasMisalkan kita memiliki DataFrame panda berikut yang berisi informasi tentang penjualan dan pengembalian yang dilakukan oleh berbagai karyawan di sebuah perusahaan import pandas as pd #create dataFrame df = pd.DataFrame({'id': [101, 101, 102, 103, 103, 103], 'employee': ['Dan', 'Dan', 'Rick', 'Ken', 'Ken', 'Ken'], 'sales': [4, 1, 3, 2, 5, 3], 'returns': [1, 2, 2, 1, 3, 2]}) #view DataFrame print(df) id employee sales returns 0 101 Dan 4 1 1 101 Dan 1 2 2 102 Rick 3 2 3 103 Ken 2 1 4 103 Ken 5 3 5 103 Ken 3 2_ Kita dapat menggunakan sintaks berikut untuk menggabungkan baris yang memiliki nilai yang sama di kolom id dan kemudian menggabungkan kolom yang tersisa #define how to aggregate various fields agg_functions = {'employee': 'first', 'sales': 'sum', 'returns': 'sum'} #create new DataFrame by combining rows with same id values df_new = df.groupby(df['id']).aggregate(agg_functions) #view new DataFrame print(df_new) employee sales returns id 101 Dan 5 3 102 Rick 3 2 103 Ken 10 6 DataFrame baru menggabungkan semua baris di DataFrame sebelumnya yang memiliki nilai yang sama di kolom id dan kemudian menghitung jumlah nilai di kolom penjualan dan pengembalian Catatan. Lihat dokumentasi panda untuk daftar lengkap agregasi yang tersedia untuk digunakan dengan fungsi GroupBy() Salah satu fitur penting yang ditawarkan oleh Pandas adalah operasi penggabungan dan penggabungan dalam memori yang berkinerja tinggi. Jika Anda pernah bekerja dengan database, Anda harus terbiasa dengan jenis interaksi data ini. Antarmuka utama untuk ini adalah fungsi 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, dan kita akan melihat beberapa contoh cara kerjanya dalam praktik Demi kenyamanan, kita akan mulai dengan mendefinisikan ulang fungsi 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 dari bagian sebelumnya Dalam [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) Aljabar RelasionalPerilaku yang diimplementasikan dalam 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 adalah bagian dari apa yang dikenal sebagai aljabar relasional, yang merupakan seperangkat aturan formal untuk memanipulasi data relasional, dan membentuk landasan konseptual operasi yang tersedia di sebagian besar database. Kekuatan dari pendekatan aljabar relasional adalah bahwa pendekatan ini mengusulkan beberapa operasi primitif, yang menjadi blok bangunan dari operasi yang lebih rumit pada setiap kumpulan data. Dengan leksikon operasi dasar yang diterapkan secara efisien dalam database atau program lain, berbagai operasi gabungan yang cukup rumit dapat dilakukan Panda mengimplementasikan beberapa blok penyusun fundamental ini dalam fungsi 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 dan metode 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 terkait dari 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 dan df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']}) display('df1', 'df5', "pd.merge(df1, df5)")6s. Seperti yang akan kita lihat, ini memungkinkan Anda menautkan data secara efisien dari berbagai sumber Kategori GabunganFungsi 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 mengimplementasikan sejumlah tipe gabungan. gabungan satu-ke-satu, banyak-ke-satu, dan banyak-ke-banyak. Ketiga jenis gabungan diakses melalui panggilan identik ke antarmuka 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; . Di sini kami akan menunjukkan contoh sederhana dari tiga jenis penggabungan, dan membahas opsi terperinci lebih lanjut di bawah Satu-ke-satu bergabungMungkin jenis ekspresi gabungan yang paling sederhana adalah gabungan satu-ke-satu, yang dalam banyak hal sangat mirip dengan rangkaian berdasarkan kolom yang terlihat di Menggabungkan Kumpulan Data. Concat dan Tambahkan. Sebagai contoh konkrit, perhatikan dua 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 berikut yang memuat informasi tentang beberapa karyawan di sebuah perusahaan Di [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') Keluar[2] df1 employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR df2 employeehire_date0Lisa20041Bob20082Jake20123Sue2014 Untuk menggabungkan informasi ini menjadi satu display('df1', 'df2', "pd.merge(df1, df2, on='employee')")_0, kita dapat menggunakan fungsi 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 Dalam [3] df3 = pd.merge(df1, df2) df3 Keluar[3] employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014 Fungsi 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 mengenali bahwa setiap display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0 memiliki kolom "karyawan", dan secara otomatis bergabung menggunakan kolom ini sebagai kunci. Hasil penggabungan adalah display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0 baru yang menggabungkan informasi dari dua input. Perhatikan bahwa urutan entri di setiap kolom tidak perlu dipertahankan. dalam hal ini, urutan kolom "karyawan" berbeda antara display('df1', 'df2', "pd.merge(df1, df2, on='employee')")5 dan display('df1', 'df2', "pd.merge(df1, df2, on='employee')")6, dan fungsi 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 menjelaskan hal ini dengan benar. Selain itu, perlu diingat bahwa penggabungan secara umum membuang indeks, kecuali dalam kasus khusus penggabungan berdasarkan indeks (lihat kata kunci display('df1', 'df2', "pd.merge(df1, df2, on='employee')")8 dan display('df1', 'df2', "pd.merge(df1, df2, on='employee')")9, dibahas sebentar lagi) Banyak-ke-satu bergabungGabungan banyak-ke-satu adalah gabungan yang salah satu dari dua kolom kuncinya berisi entri duplikat. Untuk kasus many-to-one, display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0 yang dihasilkan akan mempertahankan entri duplikat tersebut sebagaimana mestinya. Perhatikan contoh penggabungan banyak-ke-satu berikut ini Dalam [4] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)') Keluar[4] df3 employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014 df4 groupsupervisor0AccountingCarly1EngineeringGuido2HRSteve pd. gabungkan (df3, df4) employeegrouphire_datesupervisor0BobAccounting2008Carly1JakeEngineering2012Guido2LisaEngineering2004Guido3SueHR2014Steve display('df1', 'df2', "pd.merge(df1, df2, on='employee')")_0 yang dihasilkan memiliki kolom tambahan dengan informasi "pengawas", di mana informasi tersebut diulang di satu atau lebih lokasi seperti yang dipersyaratkan oleh input Banyak-ke-banyak bergabungGabungan banyak-ke-banyak agak membingungkan secara konseptual, namun tetap terdefinisi dengan baik. Jika kolom kunci di larik kiri dan kanan berisi duplikat, maka hasilnya adalah penggabungan banyak-ke-banyak. Ini mungkin paling jelas dengan contoh konkret. Pertimbangkan hal berikut, di mana kita memiliki display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0 yang menunjukkan satu atau lebih keterampilan yang terkait dengan kelompok tertentu. Dengan melakukan penggabungan banyak-ke-banyak, kita dapat memulihkan keterampilan yang terkait dengan setiap orang Dalam [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)") Keluar[5] df1 employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR df5 groupskills0Accountingmath1Accountingspreadsheets2Engineeringcoding3Engineeringlinux4HRspreadsheets5HRorganization pd. gabungkan (df1, df5) employeegroupskills0BobAccountingmath1BobAccountingspreadsheets2JakeEngineeringcoding3JakeEngineeringlinux4LisaEngineeringcoding5LisaEngineeringlinux6SueHRspreadsheets7SueHRorganization Ketiga jenis gabungan ini dapat digunakan dengan alat Pandas lainnya untuk mengimplementasikan beragam fungsi. Namun dalam praktiknya, kumpulan data jarang sebersih yang kami kerjakan di sini. Di bagian berikut, kami akan mempertimbangkan beberapa opsi yang disediakan oleh 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 yang memungkinkan Anda menyesuaikan cara kerja operasi gabungan Spesifikasi Kunci GabungKami telah melihat perilaku default 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. itu mencari satu atau lebih nama kolom yang cocok di antara dua input, dan menggunakan ini sebagai kuncinya. Namun, seringkali nama kolom tidak cocok dengan baik, dan 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 menyediakan berbagai opsi untuk menangani ini Kata kunci 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")') _6Sederhananya, Anda dapat secara eksplisit menentukan nama kolom kunci menggunakan kata kunci 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")')6, yang menggunakan nama kolom atau daftar nama kolom Di [6] display('df1', 'df2', "pd.merge(df1, df2, on='employee')") Keluar[6] df1 employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR df2 employeehire_date0Lisa20041Bob20082Jake20123Sue2014 pd. gabung(df1, df2, on='karyawan') employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014 Opsi ini hanya berfungsi jika kiri dan kanan display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0s memiliki nama kolom yang ditentukan 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")') _9 dan pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1) 0 kata kunciTerkadang Anda mungkin ingin menggabungkan dua kumpulan data dengan nama kolom yang berbeda; . Dalam hal ini, kita dapat menggunakan kata kunci 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")')_9 dan pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)0 untuk menentukan dua nama kolom Di [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")') Keluar[7] df1 employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR df3 namagaji0Bob700001Jake800002Lisa1200003Sue90000 pd. gabungkan(df1, df3, left_on="karyawan", right_on="nama") employeegroupnamesalary0BobAccountingBob700001JakeEngineeringJake800002LisaEngineeringLisa1200003SueHRSue90000 Hasilnya memiliki kolom redundan yang dapat kita hilangkan jika diinginkan–misalnya, dengan menggunakan metode pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)3 dari display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0s Di [8] pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1) Keluar[8] employeegroupsalary0BobAccounting700001JakeEngineering800002LisaEngineering1200003SueHR90000 display('df1', 'df2', "pd.merge(df1, df2, on='employee')") _8 dan display('df1', 'df2', "pd.merge(df1, df2, on='employee')") 9 kata kunciTerkadang, daripada menggabungkan kolom, Anda malah ingin menggabungkan indeks. Misalnya, data Anda mungkin terlihat seperti ini Dalam [9] df1a = df1.set_index('employee') df2a = df2.set_index('employee') display('df1a', 'df2a') Keluar[9] df1a groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR df2a hire_dateemployeeLisa2004Bob2008Jake2012Sue2014 Anda dapat menggunakan indeks sebagai kunci untuk penggabungan dengan menentukan flag display('df1', 'df2', "pd.merge(df1, df2, on='employee')")8 dan/atau display('df1', 'df2', "pd.merge(df1, df2, on='employee')")9 di 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 Dalam [10] display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)") Keluar[10] df1a groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR df2a hire_dateemployeeLisa2004Bob2008Jake2012Sue2014 pd. gabungkan(df1a, df2a, indeks_kiri=Benar, indeks_kanan=Benar) grouphire_dateemployeeLisaEngineering2004BobAccounting2008JakeEngineering2012SueHR2014 Untuk kenyamanan, display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0s menerapkan metode 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, yang melakukan penggabungan yang secara default bergabung pada indeks Di [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 Keluar[11] df1a groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR df2a hire_dateemployeeLisa2004Bob2008Jake2012Sue2014 df1a. bergabung (df2a) grouphire_dateemployeeBobAccounting2008JakeEngineering2012LisaEngineering2004SueHR2014 Jika Anda ingin menggabungkan indeks dan kolom, Anda dapat menggabungkan display('df1', 'df2', "pd.merge(df1, df2, on='employee')")8 dengan pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)0 atau 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")')9 dengan display('df1', 'df2', "pd.merge(df1, df2, on='employee')")9 untuk mendapatkan perilaku yang diinginkan Dalam [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 Keluar[12] df1a groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR df3 namagaji0Bob700001Jake800002Lisa1200003Sue90000 pd. gabungkan(df1a, df3, left_index=True, right_on='nama') groupnamesalary0AccountingBob700001EngineeringJake800002EngineeringLisa1200003HRSue90000 Semua opsi ini juga berfungsi dengan banyak indeks dan/atau banyak kolom; . Untuk informasi lebih lanjut tentang ini, lihat bagian "Gabung, Gabung, dan Gabungkan" dari dokumentasi Pandas Menentukan Set Aritmatika untuk GabunganDalam semua contoh sebelumnya, kami telah membahas satu pertimbangan penting dalam melakukan gabungan. jenis himpunan aritmatika yang digunakan dalam join. Ini muncul ketika sebuah nilai muncul di satu kolom kunci tetapi tidak di kolom lainnya. Pertimbangkan contoh ini Di [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 Keluar[13] df6 namamakanan0Peterfish1Paulbeans2Marybread df7 bernamarink0Marywine1Josephbeer pd. gabungkan (df6, df7) namefooddrink0Marybreadwine Di sini kami telah menggabungkan dua kumpulan data yang hanya memiliki satu entri "nama" yang sama. Maria. Secara default, hasilnya berisi persimpangan dari dua set input; . Kami dapat menentukan ini secara eksplisit menggunakan kata kunci df1a = df1.set_index('employee') df2a = df2.set_index('employee') display('df1a', 'df2a')6, yang defaultnya adalah df1a = df1.set_index('employee') df2a = df2.set_index('employee') display('df1a', 'df2a')7 Dalam [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 Keluar[14] namefooddrink0Marybreadwine Pilihan lain untuk kata kunci df1a = df1.set_index('employee') df2a = df2.set_index('employee') display('df1a', 'df2a')6 adalah df1a = df1.set_index('employee') df2a = df2.set_index('employee') display('df1a', 'df2a')9, display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)")0, dan display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)")1. Gabungan luar mengembalikan gabungan dari gabungan kolom input, dan mengisi semua nilai yang hilang dengan NAS Dalam [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 Keluar[15] df6 namamakanan0Peterfish1Paulbeans2Marybread df7 bernamarink0Marywine1Josephbeer pd. gabungkan(df6, df7, how='luar') namefooddrink0PeterfishNaN1PaulbeansNaN2Marybreadwine3JosephNaNbeer Gabung kiri dan gabung kanan kembali bergabung di atas entri kiri dan entri kanan, masing-masing. Sebagai contoh Dalam [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 Keluar[16] df6 namamakanan0Peterfish1Paulbeans2Marybread df7 bernamarink0Marywine1Josephbeer pd. gabung(df6, df7, how='kiri') namefooddrink0PeterfishNaN1PaulbeansNaN2Marybreadwine Baris output sekarang sesuai dengan entri di input kiri. Menggunakan display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)")_2 bekerja dengan cara yang sama Semua opsi ini dapat diterapkan secara langsung ke salah satu tipe gabungan sebelumnya Tumpang Tindih Nama Kolom. display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)") _3 Kata KunciAkhirnya, Anda mungkin berakhir dalam kasus di mana dua masukan Anda display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0s memiliki nama kolom yang bertentangan. Pertimbangkan contoh ini Dalam [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 Keluar[17] df8 namarank0Bob11Jake22Lisa33Sue4 df9 namarank0Bob31Jake12Lisa43Sue2 pd. gabungkan(df8, df9, pada="nama") namerank_xrank_y0Bob131Jake212Lisa343Sue42 Karena output akan memiliki dua nama kolom yang bertentangan, fungsi penggabungan secara otomatis menambahkan akhiran display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)")5 atau display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)")6 untuk membuat kolom output menjadi unik. Jika default ini tidak sesuai, Anda dapat menentukan akhiran khusus menggunakan kata kunci display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)")3 Dalam [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 Keluar[18] df8 namarank0Bob11Jake22Lisa33Sue4 df9 namarank0Bob31Jake12Lisa43Sue2 pd. gabungkan(df8, df9, on="nama", akhiran=["_L", "_R"]) namerank_Lrank_R0Bob131Jake212Lisa343Sue42 Sufiks ini berfungsi di salah satu kemungkinan pola gabungan, dan juga berfungsi jika ada beberapa kolom yang tumpang tindih Untuk informasi lebih lanjut tentang pola ini, lihat Agregasi dan Pengelompokan di mana kita menyelam lebih dalam ke dalam aljabar relasional. Lihat juga dokumentasi "Gabung, Gabung, dan Gabungkan" Panda untuk diskusi lebih lanjut tentang topik ini Contoh. Data Amerika SerikatMenggabungkan dan menggabungkan operasi paling sering muncul saat menggabungkan data dari sumber yang berbeda. Di sini kita akan mempertimbangkan contoh beberapa data tentang negara bagian AS dan populasinya. File data dapat ditemukan di http. //github. com/jakevdp/data-USstates/ Dalam [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 Mari kita lihat ketiga kumpulan data tersebut, menggunakan fungsi Pandas display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)")8 Dalam [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 Keluar[20] pop. kepala() state/regionagesyearpopulation0ALunder1820121117489. 01ALtotal20124817528. 02ALunder1820101130966. 03ALtotal20104785570. 04ALunder1820111125763. 0 daerah. kepala() wilayah negara bagian (q. mi)0Alabama524231Alaska6564252Arizona1140063Arkansas531824California163707 singkatan. kepala() stateabbreviation0AlabamaAL1AlaskaAK2ArizonaAZ3ArkansasAR4CaliforniaCA Dengan informasi ini, katakanlah kita ingin menghitung hasil yang relatif mudah. peringkat negara bagian dan teritori AS berdasarkan kepadatan populasi 2010 mereka. Kami jelas memiliki data di sini untuk menemukan hasil ini, tetapi kami harus menggabungkan kumpulan data untuk menemukan hasilnya Kita akan mulai dengan penggabungan many-to-one yang akan memberi kita nama negara bagian lengkap dalam populasi display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0. Kami ingin menggabungkan berdasarkan kolom 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 dari 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')01, dan kolom 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')02 dari 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. Kami akan menggunakan 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')_04 untuk memastikan tidak ada data yang dibuang karena label yang tidak cocok Dalam [21] df3 = pd.merge(df1, df2) df30 Keluar[21] state/regionagesyearpopulationstate0ALunder1820121117489. 0Alabama1ALtotal20124817528. 0Alabama2ALunder1820101130966. 0Alabama3ALtotal20104785570. 0Alabama4ALunder1820111125763. 0Alabama Mari periksa kembali apakah ada ketidaksesuaian di sini, yang dapat kita lakukan dengan mencari baris dengan nol Di [22] df3 = pd.merge(df1, df2) df31 Keluar[22] df3 = pd.merge(df1, df2) df32 Beberapa info 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')_05 adalah null; Dalam [23] df3 = pd.merge(df1, df2) df33 Keluar[23] state/regionagesyearpopulationstate2448PRunder181990NaNNaN2449PRtotal1990NaNNaN2450PRtotal1991NaNNaN2451PRunder181991NaNNaN2452PRtotal1993NaNNaN Tampaknya semua nilai populasi nol berasal dari Puerto Rico sebelum tahun 2000; Lebih penting lagi, kami juga melihat bahwa beberapa entri 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')06 baru juga nol, yang berarti tidak ada entri yang sesuai di kunci 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. Mari cari tahu wilayah mana yang tidak memiliki kecocokan ini Di [24] df3 = pd.merge(df1, df2) df3_4 Keluar[24] df3 = pd.merge(df1, df2) df35 Kami dapat dengan cepat menyimpulkan masalahnya. data populasi kami mencakup entri untuk Puerto Riko (PR) dan Amerika Serikat secara keseluruhan (AS), sedangkan entri ini tidak muncul di kunci singkatan negara bagian. Kami dapat memperbaikinya dengan cepat dengan mengisi entri yang sesuai Dalam [25] df3 = pd.merge(df1, df2) df36 Keluar[25] df3 = pd.merge(df1, df2) df37 Tidak ada lagi null di kolom 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')_06. kita sudah siap Sekarang kita dapat menggabungkan hasilnya dengan data area menggunakan prosedur serupa. Memeriksa hasil kami, kami ingin bergabung di kolom 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')06 di keduanya Dalam [26] df3 = pd.merge(df1, df2) df38 Keluar[26] negara bagian/daerahtahunpopulasinegaradaerah(sq. mi)0ALdibawah1820121117489. 0Alabama52423. 01ALtotal20124817528. 0Alabama52423. 02ALunder1820101130966. 0Alabama52423. 03ALtotal20104785570. 0Alabama52423. 04ALunder1820111125763. 0Alabama52423. 0 Sekali lagi, mari kita periksa nol untuk melihat apakah ada ketidakcocokan Dalam [27] df3 = pd.merge(df1, df2) df3_9 Keluar[27] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_0 Ada nol di kolom 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; Di [28] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_1 Keluar[28] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_2 Kami melihat bahwa 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 display('df1', 'df2', "pd.merge(df1, df2, on='employee')")0 kami tidak mencakup wilayah Amerika Serikat secara keseluruhan. Kita dapat memasukkan nilai yang sesuai (menggunakan jumlah semua wilayah negara bagian, misalnya), tetapi dalam kasus ini kita hanya membuang nilai nol karena kepadatan penduduk seluruh Amerika Serikat tidak relevan dengan pembahasan kita saat ini. Dalam [29] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_3 Keluar[29] negara bagian/daerahtahunpopulasinegaradaerah(sq. mi)0ALdibawah1820121117489. 0Alabama52423. 01ALtotal20124817528. 0Alabama52423. 02ALunder1820101130966. 0Alabama52423. 03ALtotal20104785570. 0Alabama52423. 04ALunder1820111125763. 0Alabama52423. 0 Sekarang kami memiliki semua data yang kami butuhkan. Untuk menjawab pertanyaan yang menarik, pertama-tama mari kita pilih bagian dari data yang sesuai dengan tahun 2000, dan total populasi. Kami akan menggunakan fungsi 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')13 untuk melakukan ini dengan cepat (ini membutuhkan paket 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')14 untuk diinstal; lihat Panda Berkinerja Tinggi. 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')_15 dan 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')13) Dalam [30] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_4 Keluar[30] negara bagian/daerahtahunpopulasinegaradaerah(sq. mi)3ALtotal20104785570. 0Alabama52423. 091AKtotal2010713868. 0Alaska656425. 0101AZtotal20106408790. 0Arizona114006. 0189ARTtotal20102922280. 0Arkansas53182. 0197CAtotal201037333601. 0California163707. 0 Sekarang mari menghitung kepadatan populasi dan menampilkannya secara berurutan. Kami akan mulai dengan mengindeks ulang data kami di negara bagian, dan kemudian menghitung hasilnya Dalam [31] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_5 Dalam [32] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_6 Keluar[32] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_7 Hasilnya adalah peringkat negara bagian AS ditambah Washington, DC, dan Puerto Rico dalam urutan kepadatan penduduk tahun 2010, dalam jumlah penduduk per mil persegi. Kita dapat melihat bahwa sejauh ini wilayah terpadat dalam kumpulan data ini adalah Washington, DC (i. e. , Distrik Columbia); Kami juga dapat memeriksa akhir daftar Dalam [33] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_8 Keluar[33] df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']}) display('df3', 'df4', 'pd.merge(df3, df4)')_9 Kami melihat bahwa negara bagian yang paling tidak padat, sejauh ini, adalah Alaska, dengan rata-rata lebih dari satu penduduk per mil persegi Jenis penggabungan data yang berantakan ini adalah tugas umum saat mencoba menjawab pertanyaan menggunakan sumber data dunia nyata. Saya harap contoh ini memberi Anda gambaran tentang cara menggabungkan alat yang telah kami bahas untuk mendapatkan wawasan dari data Anda Bagaimana cara menggabungkan dua baris dengan Python?Fungsi concat() di panda digunakan untuk menambahkan kolom atau baris dari satu DataFrame ke DataFrame lainnya . Fungsi concat () melakukan semua pekerjaan berat dalam melakukan operasi penggabungan sepanjang sumbu sambil melakukan logika set opsional (gabungan atau persimpangan) dari indeks (jika ada) pada sumbu lainnya.
Bagaimana cara menggabungkan dua baris di panda Python?merge() untuk menggabungkan data pada kolom atau indeks umum. . join() untuk menggabungkan data pada kolom kunci atau indeks. concat() untuk menggabungkan DataFrames di seluruh baris atau kolom.
Bagaimana Anda menggabungkan baris dalam DataFrame dengan Python?Fungsi concat() dapat digunakan untuk menggabungkan dua Dataframe dengan menambahkan baris dari satu ke yang lain . Fungsi merge() setara dengan klausa SQL JOIN. gabungan 'kiri', 'kanan' dan 'dalam' semuanya dimungkinkan.
Apa itu gabungan () dengan Python?Metode penggabungan() memperbarui konten dua DataFrame dengan menggabungkan keduanya , menggunakan metode yang ditentukan. |