Co-founder DataCamp, Jonathan Cornelissen, dan Martijn Theuwissen memecah tren data teratas yang mereka lihat di ruang data saat ini, serta prediksi mereka untuk masa depan industri data Show
Dalam situasi sains data dunia nyata apa pun dengan Python, Anda akan berada sekitar 10 menit ketika Anda harus menggabungkan atau menggabungkan Pandas Dataframes bersama untuk membentuk kumpulan data analisis Anda. Menggabungkan dan menggabungkan kerangka data adalah proses inti yang perlu dikuasai oleh setiap calon analis data. Posting blog ini membahas proses penggabungan kumpulan data, yaitu menggabungkan dua kumpulan data bersama-sama berdasarkan kolom umum di antara mereka. Topik utama dibahas di sini
Jika Anda ingin mengerjakan sendiri tutorialnya, saya menggunakan penyiapan notebook Jupyter dengan Python dari Anaconda, dan saya telah memposting kodenya di GitHub di sini. Saya telah menyertakan contoh kumpulan data di repositori GitHub Menggabungkan ikhtisar jika Anda memerlukan panduan mulai cepat (semua penjelasan di bawah). Perintah Pandas merge() mengambil bingkai data kiri dan kanan, mencocokkan baris berdasarkan kolom “on”, dan melakukan berbagai jenis penggabungan – kiri, kanan, dllData contohUntuk postingan kali ini, saya mengambil beberapa data real dari aplikasi KillBiller dan beberapa data hasil download, yang terdapat dalam tiga file CSV
Kita dapat memuat file CSV ini sebagai Pandas DataFrames ke dalam panda menggunakan perintah Pandas read_csv, dan memeriksa konten menggunakan perintah Contoh informasi penggunaan dari aplikasi KillBiller yang menampilkan statistik penggunaan seluler bulanan untuk sebagian penggunaInformasi pengguna dari aplikasi KillBiller yang memberikan perangkat dan versi OS untuk "penggunaan" individu dari aplikasi KillBillerData Perangkat Android, berisi semua perangkat Android dengan detail pabrikan dan modelAda atribut penautan antara set data sampel yang penting untuk diperhatikan – "use_id" digunakan bersama antara user_usage dan user_device, dan kolom "device" pada user_device dan kolom "Model" pada set data perangkat berisi kode umum Masalah sampelKami ingin menentukan apakah pola penggunaan untuk pengguna berbeda di antara perangkat yang berbeda. Misalnya, apakah pengguna yang menggunakan perangkat Samsung menggunakan lebih banyak menit panggilan daripada pengguna perangkat LG? Kami ingin membentuk kerangka data tunggal dengan kolom untuk angka penggunaan pengguna (panggilan per bulan, sms per bulan, dll.) Dan juga kolom dengan informasi perangkat (model, pabrikan, dll.). Kita perlu "menggabungkan" (atau "menggabungkan") kumpulan data sampel kita menjadi satu kumpulan data tunggal untuk dianalisis Menggabungkan DataFrame
Kata "menggabungkan" dan "bergabung" digunakan secara relatif bergantian di Panda dan bahasa lain, yaitu SQL dan R. Di Panda, ada fungsi “merge” dan “” yang terpisah, keduanya melakukan hal serupa Dalam skenario contoh ini, kita perlu melakukan dua langkah
Bisakah saya menggunakan for loop?Ya. Anda dapat menulis for loop untuk tugas ini. Yang pertama akan mengulang melalui use_id di set data user_usage, dan kemudian menemukan elemen yang tepat di user_devices. Loop for kedua akan mengulangi proses ini untuk perangkat Namun, menggunakan for loop akan jauh lebih lambat dan lebih bertele-tele daripada menggunakan fungsi gabungan Pandas. Jadi, jika Anda mengalami situasi ini – jangan gunakan for loop Menggabungkan user_usage dengan user_devicesMari kita lihat bagaimana kita dapat menambahkan kolom "perangkat" dan "platform" dengan benar ke kerangka data user_usage menggunakan perintah Pandas Merge result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id') result.head()Hasil penggabungan penggunaan pengguna dengan perangkat pengguna berdasarkan kolom umum Jadi itu berhasil, dan sangat mudah. Sekarang – bagaimana cara kerjanya? . gabungkan perintah lakukan? Cara kerja perintah Pandas Merge. Paling tidak, penggabungan memerlukan kumpulan data "kiri", kumpulan data "kanan", dan kolom umum untuk menggabungkan "pada"Perintah penggabungan adalah tujuan pembelajaran utama dari postingan ini. Operasi penggabungan paling sederhana mengambil kerangka data kiri (argumen pertama), kerangka data kanan (argumen kedua), dan kemudian nama kolom gabungan, atau kolom untuk menggabungkan "pada". Dalam keluaran/hasil, baris dari bingkai data kiri dan kanan dicocokkan jika ada nilai umum dari kolom gabungan yang ditentukan oleh "on" Dengan hasil ini, kita sekarang dapat melanjutkan untuk mendapatkan pabrikan dan nomor model dari kumpulan data "perangkat". Namun, pertama-tama kita perlu memahami lebih banyak tentang tipe gabungan dan ukuran kerangka data keluaran Jenis gabungan dalam, Kiri, dan kananDalam contoh kami di atas, kami menggabungkan user_usage dengan user_devices. Pratinjau head() hasilnya terlihat bagus, tetapi ada lebih dari yang terlihat. Pertama, mari kita lihat ukuran atau bentuk input dan output kita ke perintah penggabungan Ukuran yang dihasilkan dari kumpulan data setelah operasi penggabungan mungkin tidak seperti yang diharapkan. Penggabungan panda () default untuk operasi penggabungan "dalam".Mengapa hasilnya berbeda ukuran dengan kedua kerangka data asli? Secara default, operasi penggabungan Panda bekerja dengan penggabungan "dalam". Penggabungan dalam, (atau gabungan dalam) hanya menyimpan nilai umum di kerangka data kiri dan kanan untuk hasilnya. Dalam contoh kita di atas, hanya baris yang berisi nilai use_id yang umum antara user_usage dan user_device yang tersisa di dataset hasil. Kami dapat memvalidasi ini dengan melihat berapa banyak nilai yang umum Hanya nilai umum antara kerangka data kiri dan kanan yang dipertahankan secara default di Pandas, mis. e. gabungan "dalam" digunakanAda 159 nilai use_id di tabel user_usage yang muncul di user_device. Ini adalah nilai yang sama yang juga muncul di bingkai data hasil akhir (159 baris) Jenis Penggabungan LainnyaAda tiga jenis gabungan yang tersedia di Pandas. Jenis penggabungan ini umum di sebagian besar basis data dan bahasa berorientasi data (SQL, R, SAS) dan biasanya disebut sebagai "gabungan". Jika Anda tidak mengetahuinya, pelajari sekarang
Jenis gabungan yang akan digunakan ditentukan menggunakan parameter "bagaimana" dalam perintah gabungan, mengambil nilai "kiri", "kanan", "dalam" (default), atau "luar" Diagram Venn umumnya digunakan untuk mencontohkan berbagai jenis penggabungan dan penggabungan. Lihat contoh ini dari Stack overflow Menggabungkan/Menggabungkan jenis seperti yang digunakan di Pandas, R, SQL, dan bahasa serta pustaka berorientasi data lainnya. Sumber. Tumpukan LuapanJika ini baru bagi Anda, atau Anda melihat hal di atas dengan cemberut, luangkan waktu untuk menonton video tentang "menggabungkan bingkai data" dari Coursera untuk penjelasan lain yang mungkin membantu. Sekarang kita akan melihat setiap jenis gabungan secara lebih mendetail, dan mengerjakan masing-masing contoh Contoh penggabungan kiri / left joinMari ulangi operasi penggabungan, tetapi kali ini lakukan "penggabungan kiri" di Pandas
Anda dapat mengubah penggabungan menjadi penggabungan kiri dengan parameter "bagaimana" ke perintah penggabungan Anda. Bagian atas bingkai data hasil berisi item yang berhasil dicocokkan, dan di bagian bawah berisi baris di user_usage yang tidak memiliki use_id yang sesuai di user_device result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id', how='left')_Contoh gabung kiri di panda. Tentukan tipe gabungan dalam perintah "bagaimana". Gabungan kiri, atau gabungan kiri, menyimpan setiap baris dari kerangka data kiriHasil dari penggabungan kiri atau penggabungan kiri dari dua kerangka data di Pandas. Baris di bingkai data kiri yang tidak memiliki nilai gabungan yang sesuai di bingkai data kanan dibiarkan dengan nilai NaN Contoh penggabungan kanan / right joinSebagai contoh, kita dapat mengulangi proses ini dengan penggabungan kanan / penggabungan kanan, cukup dengan mengganti how='left' dengan how='right' dalam perintah penggabungan Pandas result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id', how='right') Hasil yang diharapkan akan memiliki jumlah baris yang sama dengan kerangka data kanan, perangkat_pengguna, tetapi memiliki beberapa nilai kosong, atau NaN di kolom yang berasal dari kerangka data kiri, penggunaan_pengguna (yaitu "menit_keluar_per_bulan", "sms_keluar_per_bulan", dan "bulanan_mb"). Sebaliknya, kami berharap tidak ada nilai yang hilang di kolom yang berasal dari kerangka data yang tepat, "perangkat_pengguna" Contoh penggabungan kanan, atau penggabungan kanan. Perhatikan bahwa output memiliki jumlah baris yang sama dengan bingkai data kanan, dengan nilai yang hilang hanya jika use_id di bingkai data kiri tidak cocok dengan apa pun di kiriContoh gabungan luar / gabungan luar penuhTerakhir, kami akan melakukan penggabungan luar menggunakan Pandas, juga disebut sebagai "gabungan luar penuh" atau hanya "gabungan luar". Gabungan luar dapat dilihat sebagai kombinasi gabungan kiri dan kanan, atau kebalikan dari gabungan dalam. Dalam gabungan luar, setiap baris dari kerangka data kiri dan kanan dipertahankan dalam hasil, dengan NaN di mana tidak ada variabel gabungan yang cocok Dengan demikian, kami mengharapkan hasil memiliki jumlah baris yang sama karena ada nilai "use_id" yang berbeda antara perangkat_pengguna dan penggunaan_pengguna, yaitu. e. setiap nilai gabungan dari kerangka data kiri akan menjadi hasil bersama dengan setiap nilai dari kerangka data kanan, dan mereka akan ditautkan jika memungkinkan Hasil penggabungan luar menggunakan Pandas. Setiap baris dari bingkai data kiri dan kanan dipertahankan dalam hasil, dengan nilai yang hilang atau nilai NaN numpy di mana kolom gabungan tidak cocokPada diagram di bawah ini, baris contoh dari hasil penggabungan luar ditampilkan, dua baris pertama adalah contoh di mana "use_id" umum di antara kerangka data, dua baris kedua hanya berasal dari kerangka data kiri, dan dua baris terakhir hanya berasal dari kanan Menggunakan indikator gabungan untuk melacak gabunganUntuk membantu mengidentifikasi dari mana asal baris, Pandas menyediakan parameter "indikator" yang dapat digunakan dengan fungsi penggabungan yang membuat kolom tambahan yang disebut "_merge" di keluaran yang memberi label sumber asli untuk setiap baris result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id', how='outer', indicator=True)Contoh baris dari hasil gabungan luar (gabungan luar penuh). Perhatikan bahwa semua baris dari kerangka data gabungan kiri dan kanan disertakan, tetapi NaN akan berada di kolom yang berbeda tergantung apakah data berasal dari kerangka data kiri atau kanan Penggabungan Terakhir – Menggabungkan detail perangkat ke hasilKembali ke masalah awal kita, kita telah menggabungkan user_usage dengan user_device, jadi kita memiliki platform dan perangkat untuk setiap pengguna. Awalnya, kami menggunakan "penggabungan dalam" sebagai default di Pandas, dan karena itu, kami hanya memiliki entri untuk pengguna yang juga memiliki informasi perangkat. Kami akan mengulangi penggabungan ini menggunakan gabungan kiri untuk mempertahankan semua pengguna, lalu menggunakan penggabungan kiri kedua untuk akhirnya mendapatkan produsen perangkat dalam kerangka data yang sama # First, add the platform and device to the user usage - use a left join this time. result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id', how='left') # At this point, the platform and device columns are included # in the result along with all columns from user_usage # Now, based on the "device" column in result, match the "Model" column in devices. devices.rename(columns={"Retail Branding": "manufacturer"}, inplace=True) result = pd.merge(result, devices[['manufacturer', 'Model']], left_on='device', right_on='Model', how='left') print(result.head())_Hasil gabungan akhir dengan informasi pabrikan perangkat digabungkan ke tabel penggunaan pengguna. Dua penggabungan kiri digunakan untuk sampai ke titik ini Menggunakan left_on dan right_on untuk menggabungkan dengan nama kolom yang berbedaKolom yang digunakan dalam operator gabungan tidak perlu diberi nama yang sama di kerangka data kiri dan kanan. Pada penggabungan kedua di atas, perhatikan bahwa ID perangkat disebut "perangkat" di bingkai data kiri, dan disebut "Model" di bingkai data kanan Nama kolom yang berbeda ditentukan untuk penggabungan di Panda menggunakan parameter “left_on” dan “right_on”, bukan hanya menggunakan parameter “on” Menggabungkan bingkai data dengan nama berbeda untuk variabel gabungan dicapai dengan menggunakan argumen left_on dan right_on ke fungsi penggabungan pandaMenghitung statistik berdasarkan perangkatDengan penggabungan kami selesai, kami dapat menggunakan fungsionalitas agregasi data Panda untuk dengan cepat mengetahui penggunaan rata-rata untuk pengguna berdasarkan produsen perangkat. Perhatikan bahwa ukuran sampel yang kecil membuat grup yang lebih kecil lagi, jadi saya tidak akan mengaitkan signifikansi statistik apa pun dengan hasil khusus ini result.groupby("manufacturer").agg({ "outgoing_mins_per_month": "mean", "outgoing_sms_per_month": "mean", "monthly_mb": "mean", "use_id": "count" })Hasil akhir menggunakan agg() pandas aggregation untuk mengelompokkan berdasarkan produsen perangkat dan menyusun statistik rata-rata untuk kolom yang berbeda Menjadi master penggabungan – Bagian 2Itu melengkapi bagian pertama dari tutorial penggabungan ini. Anda sekarang harus menguasai dasar-dasar penggabungan, dan dapat mengatasi masalah penggabungan dan penggabungan Anda sendiri dengan informasi di atas. Bagian 2 dari posting blog ini membahas topik lanjutan berikut
Sumber daya bermanfaat lainnyaJangan biarkan penguasaan penggabungan Anda berhenti di sini. Coba tautan berikut untuk penjelasan dan informasi lebih lanjut tentang topik tersebut Bagaimana Anda menggabungkan dua kumpulan data?Untuk menggabungkan dua bingkai data (kumpulan data) secara vertikal, gunakan fungsi rbind . Kedua kerangka data harus memiliki variabel yang sama, tetapi tidak harus dalam urutan yang sama. Jika data frameA memiliki variabel yang tidak dimiliki oleh data frameB, maka keduanya. Hapus variabel ekstra dalam data frameA atau.
Bagaimana cara menggabungkan dua kumpulan data di panda?Poin Penting . Anda dapat bergabung dengan Pandas Dataframes dengan cara yang sama seperti Anda bergabung dengan tabel di SQL Fungsi concat() dapat digunakan untuk menggabungkan dua Dataframe dengan menambahkan baris satu ke yang lain concat() juga dapat menggabungkan Dataframes dengan kolom tetapi fungsi merge() adalah cara yang lebih disukai Bagaimana cara saya bergabung dengan Dataframes dengan Python?Bergabung dengan DataFrames menggunakan indeksnya. Jika kita ingin bergabung menggunakan kolom kunci, kita perlu mengatur kunci untuk menjadi indeks di df dan lainnya . DataFrame yang bergabung akan memiliki kunci sebagai indeksnya. Pilihan lain untuk bergabung menggunakan kolom kunci adalah dengan menggunakan parameter on. |