Heim  >  Artikel  >  Datenbank  >  Wie wähle ich in Pandas eine Teilmenge von Daten im SQL-Abfragestil aus?

Wie wähle ich in Pandas eine Teilmenge von Daten im SQL-Abfragestil aus?

WBOY
WBOYnach vorne
2023-08-31 10:13:101149Durchsuche

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

Einführung

In diesem Beitrag zeige ich Ihnen, wie Sie Pandas verwenden, um Datenanalysen mit Filterung im SQL-Stil durchzuführen. Die meisten Unternehmensdaten werden in Datenbanken gespeichert, für deren Abruf und Bearbeitung SQL erforderlich ist. Beispielsweise verfügen Unternehmen wie Oracle, IBM und Microsoft über eigene Datenbanken und eigene SQL-Implementierungen.

Datenwissenschaftler müssen sich irgendwann in ihrer Karriere mit SQL auseinandersetzen, da Daten nicht immer in CSV-Dateien gespeichert werden. Ich persönlich bevorzuge die Verwendung von Oracle, da die meisten Daten meines Unternehmens in Oracle gespeichert sind.

Szenario – 1 Nehmen wir an, wir haben die Aufgabe, alle Filme aus unserem Filmdatensatz zu finden, die die folgenden Kriterien erfüllen.

  • Die Sprache des Films sollte Englisch (en) oder Spanisch (es) sein.
  • Die Popularität des Films muss zwischen 500 und 1000 liegen.
  • Der Status des Films muss veröffentlicht werden.
  • Die Anzahl der Stimmen muss größer als 5000 sein. Für das obige Szenario sieht die SQL-Anweisung wie folgt aus.
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;

Da Sie nun die SQL-Anweisung gesehen haben, die Ihren Anforderungen entspricht, machen wir es Schritt für Schritt mit Pandas. Ich zeige Ihnen zwei Möglichkeiten.

Methode 1: Boolescher Index

1. Laden Sie den Datensatz movies_data in einen DataFrame.

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

Weisen Sie jeder Bedingung eine Variable zu.

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. Kombinieren Sie alle Bedingungen (boolesches Array).

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 ]

Titel

Originalsprache

Status

Beliebtheit

Abstimmungszahl
95 Star

zh

Veröffentlicht

724.247784

10867

788 Deadpool

zh

Veröffentlicht

514.569956

10995

Methode 2:- .query()-Methode. Die Methode

.query() ist eine Methode zum Filtern von Daten im SQL-Where-Klausel-Stil. Bedingungen können als Zeichenfolgen an diese Methode übergeben werden, Spaltennamen dürfen jedoch keine Leerzeichen enthalten.

Wenn die Spaltennamen Leerzeichen enthalten, verwenden Sie die Python-Ersetzungsfunktion, um diese durch Unterstriche zu ersetzen.

Meiner Erfahrung nach ist die query()-Methode schneller als frühere Methoden, wenn sie auf größere DataFrames angewendet wird.

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

4. Erstellen Sie die Abfragezeichenfolge und führen Sie die Methode aus.

Bitte beachten Sie, dass die .query-Methode nicht mit Zeichenfolgen in dreifachen Anführungszeichen funktioniert, die sich über mehrere Zeilen erstrecken.

final_conditions = (
"original_language in ['en','es']"
"and status == 'Released' "
"and popularity > 500 "
"and popularity < 1000"
"and vote_count > 5000"
) final_result = movies . query ( final_conditions )
final_result

514.569956108.0

und viele mehr, normalerweise in meinem In meiner Codierung habe ich mehrere Werte um meine „in“-Klausel einzuchecken. Daher ist die obige Syntax nicht ideal. Python-Variablen können mit dem at-Symbol (@) referenziert werden.

Budget

id

Originalsprache

Originaltitel

Beliebtheit

Veröffentlichungsdatum

Umsatz

Laufzeit

st

95

165000000

157336

zh

interstellar

724.247784

11. Mai 2014 58000000

293660

zh

der Kellner

2. September 2016

783112979

Beziehung

p>

Sie können Werte auch programmgesteuert als Python-Listen erstellen und diese mit (@) verwenden.

movie_languages = [ &#39;en&#39; , &#39;es&#39; ]
final_conditions = (
"original_language in @movie_languages "
"and status == &#39;Released&#39; "
"and popularity > 500 "
"and popularity < 1000"
"and vote_count > 5000" )
final_result = movies . query ( final_conditions )
final_result

Budget

id

Originalsprache

Originaltitel

Beliebtheit
Veröffentlichungsdatum

Umsatz

Laufzeit: 95 zh

interstellar

724.247784

2014 11. Mai 000000 293660

783112979

108.0

Beziehung

Das obige ist der detaillierte Inhalt vonWie wähle ich in Pandas eine Teilmenge von Daten im SQL-Abfragestil aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen