Heim > Datenbank > MySQL-Tutorial > 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
Freigeben: 2023-08-31 10:13:10
nach vorne
1176 Leute haben es durchsucht

如何在 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;
Nach dem Login kopieren

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")
Nach dem Login kopieren

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
Nach dem Login kopieren

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 ]
Nach dem Login kopieren

Titel

Originalsprache

Status

Beliebtheit

Abstimmungszahl

< p>
95 Star

zh

Veröffentlicht

724.247784

10867

< /td>

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

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" )
Nach dem Login kopieren

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 [&#39;en&#39;,&#39;es&#39;]"
"and status == &#39;Released&#39; "
"and popularity > 500 "
"and popularity < 1000"
"and vote_count > 5000"
) final_result = movies . query ( final_conditions )
final_result
Nach dem Login kopieren

514.569956< td>108.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. id

Originalsprache

Originaltitel

Beliebtheit

Budget< /p>

id

Originalsprache

Originaltitel

Beliebtheit

Veröffentlichungsdatum

Umsatz

Laufzeit

st

95

165000000

157336

zh

interstellar

724.247784

11. Mai 2014 58000000< /p>

293660

zh

der Kellner

2. September 2016

783112979

Beziehung

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
Nach dem Login kopieren

Budget

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage