Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk memilih subset data dalam gaya pertanyaan SQL dalam Pandas?

Bagaimana untuk memilih subset data dalam gaya pertanyaan SQL dalam Pandas?

WBOY
WBOYke hadapan
2023-08-31 10:13:101109semak imbas

如何在 Pandas 的 SQL 查询样式中选择数据子集?

Pengenalan

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.

  • Bahasa filem hendaklah bahasa Inggeris(en) atau Sepanyol(es).
  • Kepopularan filem mestilah antara 500 dan 1000.
  • Status filem mesti diterbitkan.
  • Jumlah undian mestilah lebih daripada 5000. Untuk senario di atas, pernyataan SQL kelihatan seperti 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.

Kaedah 1: Indeks Boolean

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. .

Diterbitkan Tarikh Tayangan
95 Bintang

zh

Diterbitkan

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

165000000

zh

interstellar

724.247784

11 Mei, 2014

675120017783112979Anda juga boleh mencipta nilai secara pemrograman sebagai senarai Python dan menggunakannya dengan (@). tajuk_bahasa asli Tarikh TayanganPendapatan

Masa Jalankan

interstellar724.2477842014 11 Mei 000000293660zhDeadpool 514.569956

169.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 (@).

import pandas as pd movies = pd . read_csv ( "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv" )

bajet

id

Populariti

p>

6

783112979

108.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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam