[PYTHON] 10 Auswahlen der Datenextraktion durch pandas.DataFrame.query

Einführung

In diesem Artikel werde ich verschiedene Bedingungsextraktionen mithilfe der Abfrage vorstellen, die eine der Funktionen von Pandas ist. Nach meiner Erfahrung werde ich den eigentlichen Code anhand von 10 Beispielen schreiben, die häufig bei der Datenvorverarbeitung auftreten.

Ausführungsumgebung

!python -V
Python 3.7.3

Modul verwendet

Die Version von Pandas verwendet 1.0.3.

import pandas as pd  #Diesmal die Hauptrolle
import numpy as np  #Wird verwendet, um inf- und nan-Werte zu generieren
#Überprüfen Sie die Version von Pandas
print(pd.__version__)
1.0.3

Datenaufbereitung

#Vorbereitung des diesmal zu verwendenden Datenrahmens
df = pd.DataFrame({
        'a': range(1, 6),
        'b': range(10, 0, -2),
        'c c' : [1, 3, 5, 7, 9],
        'd' : [2, np.nan, np.inf, None, 10],
        'e' : ['a', 'b', 'c', 'd', 'e'],
        'f' : [False, True, True, False, True]})
#Überprüfen Sie den Datenrahmen
df
a b c c d e f
0 1 10 1 2.0 a False
1 2 8 3 NaN b True
2 3 6 5 inf c True
3 4 4 7 NaN d False
4 5 2 9 10.0 e True

10 Auswahlen der Datenextraktion

  1. [Bedingungsextraktion in 1 Spalte](Bedingungsextraktion in Spalte 1)
  2. [Bedingungsextraktion mit mehreren Spalten](# Bedingungsextraktion mit mehreren Spalten)
  3. [Bedingungsextraktion von Spalten, die Leerzeichen in Spaltennamen enthalten](# Bedingungsextraktion von Spalten, die Leerzeichen in Spaltennamen enthalten)
  4. [Bedingungsextraktion nach Zeichenkettenspezifikation](# Bedingungsextraktion nach Zeichenkettenspezifikation)
  5. [Bedingungsextraktion durch mehrere Bedingungen](# Bedingungsextraktion durch mehrere Bedingungen)
  6. [Bedingungsextraktion nach inf-Spezifikation](Bedingungsextraktion nach # inf-Spezifikation)
  7. [Bedingungsextraktion durch Angabe eines fehlenden Werts](# Bedingungsextraktion durch Angabe eines fehlenden Werts)
  8. [Bedingungsextraktion durch Angabe eines Booleschen Werts](# Bedingte Extraktion durch Angabe eines Booleschen Werts)
  9. [Bedingungsextraktion mit Liste](# Bedingungsextraktion mit Liste)
  10. [Bedingungsextraktion mit Variablen](# Bedingungsextraktion mit Variablen)

Bedingungsextraktion in einer Spalte

Grundlegende bedingte Extraktion mit nur einer Spalte des Datenrahmens. Normale Vergleichsoperatoren können verwendet werden.

df.query('a == 3')  #Extrahieren Sie Zeilen, in denen Spalte a den Wert 3 hat
a b c c d e f
2 3 6 5 inf c True
df.query('a != 3')  #Extrahieren Sie Zeilen, bei denen der Wert in Spalte a nicht 3 ist.
a b c c d e f
0 1 10 1 2.0 a False
1 2 8 3 NaN b True
3 4 4 7 NaN d False
4 5 2 9 10.0 e True
df.query('a > 3')  #Extrahieren Sie Zeilen mit einer Spalte mit einem Wert größer als 3
a b c c d e f
3 4 4 7 NaN d False
4 5 2 9 10.0 e True

Bedingungsextraktion in mehreren Spalten

Bedingte Extraktion mit Werten zwischen mehreren Spalten

df.query('a > b')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte a größer als der Wert in Spalte b ist
a b c c d e f
4 5 2 9 10.0 e True

Bedingte Extraktion von Spalten mit Leerzeichen in Spaltennamen

Wenn der Spaltenname Leerzeichen enthält, muss der Spaltenname in Anführungszeichen (\ `) eingeschlossen werden. Da diese Funktion in Pandas 0.25.0 implementiert wurde, tritt in Version 0.24.0 oder früher ein Fehler auf. https://pandas-docs.github.io/pandas-docs-travis/whatsnew/v0.25.0.html#other-enhancements

df.query(' `c c` > b')  #c Extrahieren Sie Zeilen, in denen der Wert in Spalte c größer als der Wert in Spalte b ist
a b c c d e f
3 4 4 7 NaN d False
4 5 2 9 10.0 e True

Bedingungsextraktion durch Angabe einer Zeichenfolge

Wenn die Bedingung als Zeichenfolge angegeben wird, muss der Wert in doppelte Anführungszeichen (") gesetzt werden.

df.query('e == "a" ')  #Der Wert in Spalte e ist eine Zeichenfolge"a"Extrahieren Sie die Linie, die ist
a b c c d e f
0 1 10 1 2.0 a False

Bedingungsextraktion durch mehrere Bedingungen

Bedingungsextraktion unter Verwendung mehrerer Bedingungen und logischer Operatoren wie und und oder.

df.query('a > 2 and b < 3')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte a größer als 2 und der Wert in Spalte b kleiner als 3 ist
a b c c d e f
4 5 2 9 10.0 e True
df.query('a > 2 or b < 3')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte a größer als 2 oder der Wert in Spalte b kleiner als 3 ist
a b c c d e f
2 3 6 5 inf c True
3 4 4 7 NaN d False
4 5 2 9 10.0 e True
df.query('a > 2 or e == "d" ')  #Der Wert in Spalte a ist größer als 2 oder der Wert in Spalte e ist eine Zeichenfolge"d"Extrahieren Sie die Linie, die ist
a b c c d e f
2 3 6 5 inf c True
3 4 4 7 NaN d False
4 5 2 9 10.0 e True
df.query(' 2<= a <= 4')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte a 2 oder mehr und 4 oder weniger beträgt
a b c c d e f
1 2 8 3 NaN b True
2 3 6 5 inf c True
3 4 4 7 NaN d False

Bedingungsextraktion durch Angabe von inf

Wenn der Wert inf hat, extrahieren Sie wie folgt.

df.query(' d == inf')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte d inf ist
a b c c d e f
2 3 6 5 inf c True
df.query(' d != inf')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte d nicht inf ist
a b c c d e f
0 1 10 1 2.0 a False
1 2 8 3 NaN b True
3 4 4 7 NaN d False
4 5 2 9 10.0 e True

Bedingungsextraktion durch Angabe fehlender Werte

Wenn der Wert einen fehlenden Wert hat, extrahieren Sie ihn wie folgt.

df.query(' d != d')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte d fehlt
a b c c d e f
1 2 8 3 NaN b True
3 4 4 7 NaN d False
df.query(' d == d')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte d nicht fehlt
a b c c d e f
0 1 10 1 2.0 a False
2 3 6 5 inf c True
4 5 2 9 10.0 e True

Bedingungsextraktion durch Angabe eines booleschen Werts

Wenn der Wert einen booleschen Wert wie True oder False hat, extrahieren Sie ihn wie folgt.

df.query('f == True')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte f True ist
a b c c d e f
1 2 8 3 NaN b True
2 3 6 5 inf c True
4 5 2 9 10.0 e True
df.query('f == False')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte f False ist
a b c c d e f
0 1 10 1 2.0 a False
3 4 4 7 NaN d False

Bedingte Extraktion anhand einer Liste

Die bedingte Extraktion ist abhängig davon, ob der Wert in der Liste enthalten ist.

df.query(' a in (1, 2, 3)')  #Der Wert in Spalte a ist(1, 2, 3)Extrahieren Sie eine Zeile, die eine von ist
a b c c d e f
0 1 10 1 2.0 a False
1 2 8 3 NaN b True
2 3 6 5 inf c True
df.query(' a not in (1, 2, 3)')  #Der Wert in Spalte a ist(1, 2, 3)Extrahieren Sie eine Zeile, die keine ist
a b c c d e f
3 4 4 7 NaN d False
4 5 2 9 10.0 e True

Bedingte Extraktion mit Variablen

Es ist möglich, eine im Voraus vorbereitete Variable als Wert der Bedingung zu verwenden.

x = 2  #Speichern Sie 2 in der Variablen x
df.query(' a == @x')  #Extrahieren Sie Zeilen, in denen der Wert in Spalte a x ist
a b c c d e f
1 2 8 3 NaN b True
y = [2, 3, 4]  #Liste in Variable y speichern
df.query('a in @y')  #Extrahieren Sie Zeilen, bei denen der Wert in Spalte a einer von y ist
a b c c d e f
1 2 8 3 NaN b True
2 3 6 5 inf c True
3 4 4 7 NaN d False

Recommended Posts

10 Auswahlen der Datenextraktion durch pandas.DataFrame.query
Visualisierung von Daten nach Präfektur
Animation von Geodaten durch Geopandas
Memorandum der Extraktion durch Python BS4-Anfrage
Emotionale Analyse umfangreicher Tweet-Daten durch NLTK
Analyse von Finanzdaten durch Pandas und deren Visualisierung (2)
Abnormalitätserkennung von Zeitreihendaten durch LSTM (Keras)
Daten nach Schwellenwert aufteilen
Trainingsdaten von CNN
Geschichte der Bildanalyse von PDF-Dateien und Datenextraktion
Korrelation durch Datenvorverarbeitung
Methode zur Extraktion von Stapeldaten unter Verwendung regulärer Ausdrücke aus Serien
Visualisierung von Daten anhand einer erklärenden Variablen und einer objektiven Variablen
Vorverarbeitung von Präfekturdaten
Auswahl der Messdaten
Was ich bei der Analyse der Daten des Ingenieurmarktes gesehen habe
Experiment zur Optimierung der Tensorflow-Daten
Klassifizieren Sie Daten nach der k-means-Methode
Gzip komprimiert Daten durch Streaming
Berechnung der Ähnlichkeit durch MinHash
Keyword-Extraktion mit MeCab (Python)
Strichzeichnungsextraktion der Illustration
Fourier-Transformation von Rohdaten
Von Django erfasste Daten wurden weitergegeben
Durchschnittliche Schätzung der begrenzten Daten
Über die Datenverwaltung von Amboss-App-Server
Wahrscheinlichkeitsvorhersage von unausgeglichenen Daten
Automatische Erfassung von Genexpressionsdaten durch Python und R.
Impressionen von Touch, einem von Python erstellten Datenvisualisierungstool