[PYTHON] Extrahieren nicht numerischer Elemente mit pandas.DataFrame

Dieser Artikel stammt aus dem Furukawa Lab Advent_calendar Tag 18.

Dieser Artikel wurde von einem Studenten des Furukawa Lab im Rahmen seines Studiums verfasst. Der Inhalt kann mehrdeutig sein oder der Ausdruck kann leicht abweichen.

Einführung

Als ich mit Pandas vorverarbeitete, fühlte ich mich unbehaglich, weil andere Elemente als numerische Werte in den Daten gemischt wurden, daher werde ich es als Artikel zusammenfassen. Außerdem verwendet der Code in diesem Artikel ein Jupiter-Notizbuch.

Zu behandelnde Daten

kaggles 2,2k + Scotch Whisky Reviews Dataset

Daten Beschreibung

Dies ist ein Datensatz, der von Gutachtern über Scotch Whisky ausgewertet wird. Die Anzahl der Daten beträgt 2247 und die Anzahl der Elemente beträgt 7.

Bestätigung der Daten

#Bibliotheksimport
import pandas as pd
import numpy as np
#CSV-Datei lesen
data = pd.read_csv('scotch_review.csv')
#Anzeige von Daten
data.head()

Hauptthema

Überprüfen Sie, ob die zu verarbeitenden Daten Elemente mit anderen Typen als numerischen Werten enthalten

Dieses Mal verwenden wir nur die Artikel'review.point'and'price '. Schauen wir uns den Datentyp jeder Spalte an

#Typbestätigung
data[['review.point','price']].dtypes

kata.jpg

Es scheint, dass andere Elemente als numerische Werte in der Spalte "areview.point" gemischt sind. ** Mit dem folgenden Code können Sie feststellen, ob die entsprechende Spalte nicht numerische Elemente enthält. (* Str Typ Nummer gibt True zurück) **

#'price', 'review.point'Wenn die Spalte Elemente enthält, die nicht in einen numerischen Typ konvertiert werden können'False'Gib es zurück.
data[['review.point', 'price']].apply(lambda s:pd.to_numeric(s, errors='coerce')).notnull().all()

kata.jpg

Extraktion und Konvertierung von Elementen mit anderen Typen als Zahlen

Von hier aus extrahieren wir Elemente mit anderen Typen als Zahlen aus der Spalte "Preis" und ersetzen sie. Erstens ist die Extraktion.

#Extraktion nicht numerischer Elemente
pic = data[['price']][data['price'].apply(lambda s:pd.to_numeric(s, errors='coerce')).isnull()]
pic

!

Hier werden die Daten von / set und / liter als fehlende Werte behandelt und die anderen in numerische Typen konvertiert.

# ','Löschen,'/'Ersetzen Sie das Element, das enthält
change_data = pic['price'].str.replace(',','').mask(pic['price'].str.contains('/'), np.nan) 
change_data

str_data.jpg

Reflektieren Sie die Änderungen in den Originaldaten.

#Erstellen Sie eine Kopie der Originaldaten und ersetzen Sie das entsprechende Teil
data_c = data.copy()
data_c.loc[pic.index,'price'] = change_data

Konvertieren Sie abschließend die Zahl in der Spalte "Preis" in einen numerischen Typ und löschen Sie die Zeile mit dem fehlenden Wert.

data_c['price'] = pd.to_numeric(data_c['price'], errors = 'ignore')
df  = data_c.dropna()

Am Ende

Dieses Mal habe ich andere Elemente als numerische Werte extrahiert und durch pandas.DataFrame ersetzt. Im nächsten Artikel werde ich diesen vorverarbeiteten Whiskey Reviews-Datensatz visualisieren.

Blinddarm

Hier ist eine Beschreibung der Funktion, die ich in meinem Code verwendet habe.

Feststellen, ob Elemente vorhanden sind, die nicht in einen numerischen Typ konvertiert werden können

#'price', 'review.point'Wenn die Spalte Elemente enthält, die nicht in einen numerischen Typ konvertiert werden können'False'Gib es zurück.
data[['review.point', 'price']].apply(lambda s:pd.to_numeric(s, errors='coerce')).notnull().all()
def Funktionsname(Streit):
Ausdruck zurückgeben

--DataFrame.apply (Funktion, Achse = 0)

Teilweises Ersetzen der Zeichenfolge jedes Elements und Ersetzen des Werts selbst

# ','Löschen,'/'Ersetzen Sie das Element, das enthält
change_data = pic['price'].str.replace(',','').mask(pic['price'].str.contains('/'), np.nan) 
change_data

--Series.str.replace ('String A', 'String B') --Convert'string A'inhaltig in jedem Element der Serie zu'string B ' --Series.str.contains ('string A')

Recommended Posts

Extrahieren nicht numerischer Elemente mit pandas.DataFrame
Extrahieren Sie mehrere Elemente mit dem Numpy-Array
EXIF mit Schlucken extrahieren
Extrahieren Sie andere Elemente als einen bestimmten Index mit Numpy
Extrahieren Sie Twitter-Daten mit CSV
Zahlen mit regulären Ausdrücken extrahieren
Extrahieren Sie Array-Elemente und -Indizes in absteigender Reihenfolge mit numpy
Spitzenwert mit scipy extrahieren
Extrahieren Sie die xz-Datei mit Python
Extrahieren Sie den Maximalwert mit Pandas.
[Automatisierung] Extrahieren Sie Outlook-Termine mit Python
[Anfänger] Extrahieren Sie Zeichenketten mit Python
Extrahieren Sie bestimmte mehrere Spalten mit Pandas