Pertanyaan pertama yang sebenarnya adalah mengapa orang lebih produktif dengan abstraksi DataFrame daripada abstraksi SQL murni.
TLDR; SQL tidak diarahkan pada proses pengembangan (manusia) dan debugging, DataFrames adalah.
Alasan utama adalah bahwa abstraksi DataFrame memungkinkan Anda untuk membangun pernyataan SQL sambil menghindari bersarang verbose dan tidak terbaca. Pola penulisan rutinitas bersarang, berkomentar untuk memeriksanya, dan kemudian membatalkan komentar digantikan oleh satu baris transformasi. Anda dapat menjalankan hal-hal baris demi baris secara alami di repl (bahkan di Spark) dan melihat hasilnya.
Pertimbangkan contoh, menambahkan transformasi baru (kolom string yang rusak) ke sebuah tabel, kemudian mengelompokkannya dan melakukan beberapa agregasi. SQL menjadi sangat jelek. Panda dapat mengatasi hal ini tetapi kehilangan beberapa hal ketika menyangkut data yang benar-benar besar atau dalam partisi tertentu (mungkin ditingkatkan baru-baru ini).
DataFrames harus dilihat sebagai API tingkat tinggi untuk rutinitas SQL, bahkan jika dengan panda, mereka sama sekali tidak ditampilkan untuk beberapa perencana SQL.
-
Anda mungkin dapat melakukan banyak diskusi teknis tentang ini, tetapi saya sedang mempertimbangkan perspektif pengguna di bawah ini.
Salah satu alasan sederhana mengapa Anda mungkin melihat lebih banyak pertanyaan seputar manipulasi data Pandas sebagai lawan dari SQL adalah bahwa untuk menggunakan SQL, menurut definisi, berarti menggunakan database, dan banyak kasus penggunaan saat ini cukup membutuhkan bit data untuk ' tugas satu-dan-selesai (dari .csv, api web, dll.). Dalam kasus ini memuat, menyimpan, memanipulasi dan mengekstraksi dari basis data tidak layak.
Namun, mempertimbangkan kasus-kasus di mana kasus penggunaan dapat membenarkan menggunakan Pandas atau SQL, Anda tentu tidak salah. Jika Anda ingin melakukan banyak, tugas manipulasi data berulang dan mempertahankan output, saya selalu merekomendasikan mencoba melalui SQL terlebih dahulu. Dari apa yang saya lihat alasan mengapa banyak pengguna, bahkan dalam kasus ini, tidak menggunakan SQL dua kali lipat.
Pertama, panda keuntungan utama memiliki lebih dari SQL adalah bahwa itu bagian dari alam semesta Python yang lebih luas, yang berarti dalam satu gerakan saya dapat memuat, membersihkan, memanipulasi, dan memvisualisasikan data saya (saya bahkan dapat menjalankan SQL melalui Pandas ...). Yang lain adalah, cukup sederhana, bahwa terlalu banyak pengguna tidak tahu sejauh mana kemampuan SQL. Setiap pemula mempelajari 'sintaksis ekstraksi' dari SQL (SELECT, FROM, WHERE, dll.) Sebagai sarana untuk mendapatkan data Anda dari DB ke tempat berikutnya. Beberapa mungkin mengambil beberapa sintaks pengelompokan dan pengulangan yang lebih maju. Tetapi setelah itu cenderung ada jurang pemisah yang cukup signifikan dalam pengetahuan, sampai Anda mencapai para ahli (DBA, Data Engineers, dll.).
tl; dr: Ini sering kali disebabkan oleh kasus penggunaan, kenyamanan, atau kesenjangan dalam pengetahuan tentang sejauh mana kemampuan SQL.