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.
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.
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
|
.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
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 | 108.0Beziehung | p> | 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.Sie können Werte auch programmgesteuert als Python-Listen erstellen und diese mit (@) verwenden. movie_languages = [ 'en' , 'es' ] final_conditions = ( "original_language in @movie_languages " "and status == 'Released' " "and popularity > 500 " "and popularity < 1000" "and vote_count > 5000" ) final_result = movies . query ( final_conditions ) final_result |
Budget |
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!