Keuntungan dari kerangka data panda untuk database relasional biasa

13

Dalam Ilmu Data, banyak yang tampaknya menggunakan kerangka data panda sebagai datastore. Apa saja fitur panda yang menjadikannya datastore unggul dibandingkan dengan basis data relasional biasa seperti MySQL , yang digunakan untuk menyimpan data di banyak bidang pemrograman lainnya?

Sementara panda memang menyediakan beberapa fungsi yang berguna untuk eksplorasi data, Anda tidak bisa menggunakan SQL dan Anda kehilangan fitur seperti optimasi kueri atau pembatasan akses.

Simon Böhm
sumber
5
panda bukan datastore. Matikan komputer Anda dan bingkai data Anda tidak akan ada di sana. panda adalah untuk munging dalam memori. Yang berarti jika tidak muat di memori itu tidak akan berfungsi. Tetapi memiliki kakak bernama Spark sehingga itu bukan masalah besar. Kakak sebenarnya mendukung SQL dan optimasi permintaan. Lihat juga pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Emre

Jawaban:

8

Saya pikir premis pertanyaan Anda memiliki masalah. Panda bukan "datastore" seperti halnya RDBMS. Pandas adalah pustaka Python untuk memanipulasi data yang sesuai dengan memori. Kekurangan:

  • Panda tidak bertahan data. Bahkan memiliki fungsi (lambat) yang disebut TO_SQL yang akan mempertahankan bingkai data panda Anda ke tabel RDBMS.
  • Panda hanya akan menangani hasil yang sesuai dengan memori, yang mudah diisi. Anda bisa menggunakan dask untuk mengatasinya, atau Anda bisa mengerjakan data di RDBMS (yang menggunakan segala macam trik seperti ruang temp) untuk beroperasi pada data yang melebihi RAM.
CalZ
sumber
2

Dari panda ( Halaman Utama )

Pustaka Analisis Data Python¶

panda adalah open source, perpustakaan berlisensi BSD menyediakan kinerja tinggi, struktur data yang mudah digunakan dan alat analisis data untuk bahasa pemrograman Python.

Sementara panda pasti dapat mengakses data melalui SQL, atau dari beberapa metode penyimpanan data lainnya, tujuan utamanya adalah untuk membuatnya lebih mudah ketika menggunakan Python untuk melakukan analisis data.

Untuk itu panda memiliki berbagai metode yang tersedia yang memungkinkan beberapa operasi aljabar relasional yang dapat dibandingkan dengan SQL.

Pandas juga menyediakan akses mudah ke NumPy , yang

adalah paket dasar untuk komputasi ilmiah dengan Python. Ini berisi antara lain:

  • objek array N-dimensi yang kuat
  • fungsi canggih (penyiaran)
  • alat untuk mengintegrasikan kode C / C ++ dan Fortran
  • aljabar linier yang berguna, transformasi Fourier, dan kemampuan angka acak
Stephen Rauch
sumber
2

Selain jawaban yang diterima:

Database relasional memiliki sejumlah besar byte overhead per-baris (contoh: pertanyaan ini ), yang digunakan untuk pembukuan, memberi tahu nol dari bukan nol, memastikan standar seperti ACID . Setiap kali Anda membaca / menulis kolom, tidak hanya beberapa byte yang mewakili nilai kolom ini akan dibaca, tetapi juga byte pembukuan ini akan diakses dan mungkin diperbarui.

Sebaliknya, panda (juga R data.table) lebih seperti penyimpanan kolom dalam memori. Satu kolom hanyalah sebuah array nilai dan Anda dapat menggunakan apprehensions / operasi daftar vektor cepat numpy yang hanya mengakses nilai yang benar-benar Anda butuhkan. Hanya saja untuk tabel dengan beberapa kolom primitif membuat database relasional beberapa kali lebih lambat untuk banyak kasus penggunaan sains data.

Valentas
sumber
2

Panda adalah alat penyimpanan data dalam memori. Ini memungkinkan Anda untuk melakukan perhitungan yang sangat cepat atas sejumlah besar data dengan sangat cepat.

SQL (biasanya) secara terus-menerus menyimpan data dan merupakan basis data. Dimungkinkan juga untuk menjalankan SQL db dalam memori yang mungkin lebih cepat daripada menggunakan panda, seperti SQLite.

Henry
sumber
0

SQL memungkinkan Anda untuk bertahan dan melakukan banyak transaksi hubungan yang berbeda dan selalu siap tersedia untuk berbagai kegunaan yang berbeda. Pada dasarnya satu sumber kebenaran atau tempat untuk dituju. Ada di atas kepala pasti. Namun, beberapa analisis bisa sangat rumit dan membutuhkan sejumlah besar operasi berbasis set yang dapat mengubah bahkan set data kecil menjadi besar dengan sangat cepat. Saya telah memiliki proses data yang memiliki lebih dari 2000 kueri yang memproses terabyte dalam waktu kurang dari 5 menit dan dapat mencetak miliaran catatan untuk model prediktif di akhir dan python dan numpy mencetak sebagian kecil dari dataset dalam waktu 10x sebagai penyimpanan data relasional dan sajikan hingga lapisan presentasi.

Poin tambahan, jika melakukan ini di cloud pastikan Anda memiliki instance dinamis yang dapat meningkatkan skala memorinya. Dengan SQL itu semua tentang memiliki disk dan cukup menghitung untuk menyelesaikannya tepat waktu.

Saya melihat banyak cara agar mereka bisa bekerja secara sinergis. Banyak pekerjaan ilmu data yang dirancang untuk dilakukan oleh Pandas. Beberapa pekerjaan ilmu data adalah apa yang dirancang RDB untuk dilakukan. Gunakan keduanya dalam keseimbangan.

Ini semua tentang alat yang tepat untuk melakukan pekerjaan yang benar.

William komp
sumber