Rumah > Artikel > pangkalan data > Bagaimana untuk memilih subset data dalam gaya pertanyaan SQL dalam Pandas?
Dalam siaran ini, saya akan menunjukkan kepada anda cara menggunakan Panda untuk melakukan analisis data dengan penapisan gaya SQL. Kebanyakan data perusahaan disimpan dalam pangkalan data yang memerlukan SQL untuk mendapatkan dan memanipulasi. Sebagai contoh, syarikat seperti Oracle, IBM, Microsoft mempunyai pangkalan data mereka sendiri dan pelaksanaan SQL mereka sendiri.
Para saintis data mesti berurusan dengan SQL pada satu ketika dalam kerjaya mereka kerana data tidak selalu disimpan dalam fail CSV. Saya secara peribadi lebih suka menggunakan Oracle kerana kebanyakan data syarikat saya disimpan dalam Oracle.
Senario – 1 Katakan kita mempunyai tugas untuk mencari semua filem daripada set data filem kami yang mempunyai kriteria berikut.
SELECT FROM WHERE title AS movie_title ,original_language AS movie_language ,popularityAS movie_popularity ,statusAS movie_status ,vote_count AS movie_vote_count movies_data original_languageIN ('en', 'es') AND status=('Released') AND popularitybetween 500 AND 1000 AND vote_count > 5000;
Sekarang anda telah melihat pernyataan SQL yang memenuhi keperluan anda, mari lakukan langkah demi langkah menggunakan panda. Saya akan tunjukkan dua cara.
1. Muatkan set data movies_data ke dalam DataFrame.
import pandas as pd movies = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")
Tetapkan pembolehubah untuk setiap syarat.
languages = [ "en" , "es" ] condition_on_languages = movies . original_language . isin ( languages ) condition_on_status = movies . status == "Released" condition_on_popularity = movies . popularity . between ( 500 , 1000 ) condition_on_votecount = movies . vote_count > 5000
3 Gabungkan semua keadaan (tatasusunan boolean) bersama-sama. .
95 Bintang | zh | DiterbitkanDiterbitkan | 514.569956 | 10995 |
---|---|---|---|---|
Kaedah 2:- kaedah .query(). Kaedah |
.query() ialah kaedah untuk menapis data dalam SQL dengan gaya klausa. Syarat boleh dihantar kepada kaedah ini sebagai rentetan, bagaimanapun, nama lajur tidak boleh mengandungi sebarang ruang. Jika terdapat ruang dalam nama lajur, gunakan fungsi ganti python untuk menggantikannya dengan garis bawah. |
Dalam pengalaman saya, saya telah mendapati bahawa kaedah query() adalah lebih pantas daripada kaedah sebelumnya apabila digunakan pada DataFrames yang lebih besar. final_conditions = ( condition_on_languages & condition_on_status & condition_on_popularity & condition_on_votecount ) columns = [ "title" , "original_language" , "status" , "popularity" , "vote_count" ] # clubbing all together movies . loc [ final_conditions , columns ] 4. Bina rentetan pertanyaan dan laksanakan kaedah. |
Sila ambil perhatian bahawa kaedah .query tidak berfungsi dengan rentetan tiga petikan yang menjangkau berbilang baris. . | Populariti |
Hasil
|
Waktu Jalan | st | 95 |
165000000
724.247784
11 Mei, 2014169.0 |
Hubungan |
8000000 |
293660 |
zh |
mati Pelayan |
514.569956 |
2 September 2016 |
||
---|---|---|---|---|---|---|---|---|---|
108.0 |
|
dan banyak lagi, biasanya dalam pengekodan saya, saya mempunyai pelbagai nilai untuk menyemak klausa "masuk" saya. Jadi sintaks di atas tidak sesuai. Pembolehubah Python boleh dirujuk menggunakan simbol at (@). | Anda juga boleh mencipta nilai secara pemrograman sebagai senarai Python dan menggunakannya dengan (@).import pandas as pd movies = pd . read_csv ( "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv" ) |
bajet | id | ||||
Populariti | Tarikh TayanganPendapatan | interstellar | 724.247784 | p> | 2014 11 Mei 000000293660 | zh | Deadpool | 514.569956 |
6
783112979108.0 Hubungan
Atas ialah kandungan terperinci Bagaimana untuk memilih subset data dalam gaya pertanyaan SQL dalam Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!